VSF Documented
vsf_winsound.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_WINSOUND_H__
19#define __VSF_WINSOUND_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "../../../vsf_av_cfg.h"
24
25#if VSF_USE_AUDIO == ENABLED && VSF_AUDIO_USE_WINSOUND == ENABLED
26
27#include "component/av/vsf_av.h"
28
29#if defined(__VSF_WINSOUND_CLASS_IMPLEMENT)
30# undef __VSF_WINSOUND_CLASS_IMPLEMENT
31# define __VSF_CLASS_IMPLEMENT__
32#endif
33
34#include "utilities/ooc_class.h"
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/*============================ MACROS ========================================*/
41/*============================ MACROFIED FUNCTIONS ===========================*/
42/*============================ TYPES =========================================*/
43
44#if VSF_AUDIO_USE_PLAYBACK == ENABLED
45
46// avoid to use windows.h, fix if any conflicts
47#define VSF_WIN_HWAVEOUT VSF_WIN_HANDLE
48/* wave data block header */
49typedef struct __vsf_win_wavehdr_tag {
50 VSF_WIN_LPSTR lpData; /* pointer to locked data buffer */
51 VSF_WIN_DWORD dwBufferLength; /* length of data buffer */
52 VSF_WIN_DWORD dwBytesRecorded; /* used for input only */
53 VSF_WIN_DWORD_PTR dwUser; /* for client's use */
54 VSF_WIN_DWORD dwFlags; /* assorted flags (see defines) */
55 VSF_WIN_DWORD dwLoops; /* loop control counter */
56 struct __vsf_win_wavehdr_tag FAR *lpNext; /* reserved for driver */
57 VSF_WIN_DWORD_PTR reserved; /* reserved for driver */
59
64
68
71
73
84
85#undef HWAVEOUT
86#endif
87
89 public_member(
90 implement(vk_audio_dev_t)
91 )
92
93 private_member(
94 bool is_inited;
95#if VSF_AUDIO_USE_PLAYBACK == ENABLED
96 vk_winsound_playback_ctx_t playback_ctx;
97#endif
98 vk_audio_stream_t __stream[
99#if VSF_AUDIO_USE_PLAYBACK == ENABLED && VSF_AUDIO_USE_CAPTURE == ENABLED
100 2
101#else
102 1
103#endif
104 ];
105 )
106};
107
108/*============================ GLOBAL VARIABLES ==============================*/
109
111
112/*============================ PROTOTYPES ====================================*/
113
114#ifdef __cplusplus
115}
116#endif
117
118#endif // VSF_USE_AUDIO && VSF_AUDIO_USE_WINSOUND
119#endif // __VSF_WINSOUND_H__
Definition vsf_audio.h:158
Definition vsf_audio.h:74
Definition vsf_audio.h:145
Definition vsf_winsound.h:88
Definition linux_generic.h:122
Definition vsf_eda.h:766
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_winsound.h:49
VSF_WIN_DWORD dwLoops
Definition vsf_winsound.h:55
VSF_WIN_DWORD_PTR reserved
Definition vsf_winsound.h:57
VSF_WIN_DWORD_PTR dwUser
Definition vsf_winsound.h:53
VSF_WIN_DWORD dwFlags
Definition vsf_winsound.h:54
VSF_WIN_LPSTR lpData
Definition vsf_winsound.h:50
VSF_WIN_DWORD dwBufferLength
Definition vsf_winsound.h:51
struct __vsf_win_wavehdr_tag FAR * lpNext
Definition vsf_winsound.h:56
VSF_WIN_DWORD dwBytesRecorded
Definition vsf_winsound.h:52
Definition vsf_winsound.h:60
uint8_t * buffer
Definition vsf_winsound.h:62
__VSF_WIN_WAVEHDR header
Definition vsf_winsound.h:61
Definition vsf_winsound.h:65
vsf_arch_irq_thread_t irq_thread
Definition vsf_winsound.h:66
VSF_WIN_HWAVEOUT hwo
Definition vsf_winsound.h:69
bool fill_ticktock
Definition vsf_winsound.h:75
bool is_playing
Definition vsf_winsound.h:74
uint32_t sps
Definition vsf_winsound.h:79
vsf_eda_t * eda_pending
Definition vsf_winsound.h:82
bool play_ticktock
Definition vsf_winsound.h:76
vk_winsound_playback_buffer_t buffer[2]
Definition vsf_winsound.h:72
VSF_WIN_HANDLE hEvent
Definition vsf_winsound.h:70
uint8_t buffer_taken
Definition vsf_winsound.h:77
uint32_t last_datasize
Definition vsf_winsound.h:81
vk_audio_stream_t * audio_stream
Definition vsf_winsound.h:67
uint8_t frame_size
Definition vsf_winsound.h:78
uint32_t last_datasize_valid
Definition vsf_winsound.h:80
#define VSF_WIN_HWAVEOUT
Definition vsf_winsound.h:47
struct __vsf_win_wavehdr_tag __VSF_WIN_WAVEHDR
const vk_audio_drv_t vk_winsound_drv
char * VSF_WIN_LPSTR
Definition win_generic.h:144
unsigned long VSF_WIN_DWORD
Definition win_generic.h:141
VSF_WIN_ULONG_PTR VSF_WIN_DWORD_PTR
Definition win_generic.h:150
void * VSF_WIN_HANDLE
Definition win_generic.h:140
#define FAR
Definition win_generic.h:96