Mercurial > mplayer.hg
annotate libao2/ao_pcm.c @ 27975:806c541d03dd
Do not draw in window if our image has not yet been adjusted to the new window size.
Fixes some cases of borders not being black in fullscreen when fullscreen image
is scaled down.
author | reimar |
---|---|
date | Sun, 23 Nov 2008 20:39:15 +0000 |
parents | c75d2f3cf4eb |
children | e45b08f2f5d3 |
rev | line source |
---|---|
6237 | 1 #include "config.h" |
2 | |
1107 | 3 #include <stdio.h> |
4 #include <stdlib.h> | |
6237 | 5 #include <string.h> |
1107 | 6 |
21372 | 7 #include "libavutil/common.h" |
21507
fa99b3d31d13
Hack around libavutil/bswap.h compilation problems due to always_inline undefined.
reimar
parents:
21372
diff
changeset
|
8 #include "mpbswap.h" |
14298
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
9 #include "subopt-helper.h" |
14245 | 10 #include "libaf/af_format.h" |
25315
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
11 #include "libaf/reorder_ch.h" |
1107 | 12 #include "audio_out.h" |
13 #include "audio_out_internal.h" | |
14123 | 14 #include "mp_msg.h" |
15 #include "help_mp.h" | |
13383
c1955840883d
mp_msg transition of unmaintained audio output drivers.
ivo
parents:
12145
diff
changeset
|
16 |
1107 | 17 |
18 static ao_info_t info = | |
19 { | |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
20 "RAW PCM/WAVE file writer audio output", |
1107 | 21 "pcm", |
22 "Atmosfear", | |
23 "" | |
24 }; | |
25 | |
26 LIBAO_EXTERN(pcm) | |
27 | |
4914
de4074ab4e5f
good-looking fix by Tobias Diedrich <td@informatik.uni-hannover.de>
arpi
parents:
3095
diff
changeset
|
28 extern int vo_pts; |
de4074ab4e5f
good-looking fix by Tobias Diedrich <td@informatik.uni-hannover.de>
arpi
parents:
3095
diff
changeset
|
29 |
14298
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
30 static char *ao_outputfilename = NULL; |
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
31 static int ao_pcm_waveheader = 1; |
18092
96fdfbad5b1a
-ao pcm:fast suboption for faster-than-realtime dumping
reimar
parents:
17566
diff
changeset
|
32 static int fast = 0; |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
33 |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
34 #define WAV_ID_RIFF 0x46464952 /* "RIFF" */ |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
35 #define WAV_ID_WAVE 0x45564157 /* "WAVE" */ |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
36 #define WAV_ID_FMT 0x20746d66 /* "fmt " */ |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
37 #define WAV_ID_DATA 0x61746164 /* "data" */ |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
38 #define WAV_ID_PCM 0x0001 |
26604
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
39 #define WAV_ID_FLOAT_PCM 0x0003 |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
40 |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
41 struct WaveHeader |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
42 { |
11270 | 43 uint32_t riff; |
44 uint32_t file_length; | |
45 uint32_t wave; | |
46 uint32_t fmt; | |
47 uint32_t fmt_length; | |
48 uint16_t fmt_tag; | |
49 uint16_t channels; | |
50 uint32_t sample_rate; | |
51 uint32_t bytes_per_second; | |
52 uint16_t block_align; | |
53 uint16_t bits; | |
54 uint32_t data; | |
55 uint32_t data_length; | |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
56 }; |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
57 |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
58 /* init with default values */ |
21250
7b1ab00ef2eb
le2me_32 is no longer a macro on PPC, and in general does not have to
reimar
parents:
18500
diff
changeset
|
59 static struct WaveHeader wavhdr; |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
60 |
1107 | 61 static FILE *fp = NULL; |
62 | |
63 // to set/get/query special features/parameters | |
9633
12b1790038b0
64bit libao2 fix by Jens Axboe <mplayer-dev@kernel.dk>
alex
parents:
9277
diff
changeset
|
64 static int control(int cmd,void *arg){ |
1107 | 65 return -1; |
66 } | |
67 | |
68 // open & setup audio device | |
69 // return: 1=success 0=fail | |
70 static int init(int rate,int channels,int format,int flags){ | |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
71 int bits; |
14298
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
72 opt_t subopts[] = { |
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
73 {"waveheader", OPT_ARG_BOOL, &ao_pcm_waveheader, NULL}, |
14539 | 74 {"file", OPT_ARG_MSTRZ, &ao_outputfilename, NULL}, |
18092
96fdfbad5b1a
-ao pcm:fast suboption for faster-than-realtime dumping
reimar
parents:
17566
diff
changeset
|
75 {"fast", OPT_ARG_BOOL, &fast, NULL}, |
14298
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
76 {NULL} |
14300 | 77 }; |
14298
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
78 // set defaults |
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
79 ao_pcm_waveheader = 1; |
18488
b23c0e341e3e
Move setting the output filename after the suboption parsing, otherwise it
diego
parents:
18092
diff
changeset
|
80 |
14298
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
81 if (subopt_parse(ao_subdevice, subopts) != 0) { |
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
82 return 0; |
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
83 } |
18500
9533f21d3f7e
Only set the default output filename when it was not passed on the command
diego
parents:
18488
diff
changeset
|
84 if (!ao_outputfilename){ |
9533f21d3f7e
Only set the default output filename when it was not passed on the command
diego
parents:
18488
diff
changeset
|
85 ao_outputfilename = |
9533f21d3f7e
Only set the default output filename when it was not passed on the command
diego
parents:
18488
diff
changeset
|
86 strdup(ao_pcm_waveheader?"audiodump.wav":"audiodump.pcm"); |
9533f21d3f7e
Only set the default output filename when it was not passed on the command
diego
parents:
18488
diff
changeset
|
87 } |
18488
b23c0e341e3e
Move setting the output filename after the suboption parsing, otherwise it
diego
parents:
18092
diff
changeset
|
88 |
7658 | 89 bits=8; |
90 switch(format){ | |
26604
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
91 case AF_FORMAT_S32_BE: |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
92 format=AF_FORMAT_S32_LE; |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
93 case AF_FORMAT_S32_LE: |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
94 bits=32; |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
95 break; |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
96 case AF_FORMAT_FLOAT_BE: |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
97 format=AF_FORMAT_FLOAT_LE; |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
98 case AF_FORMAT_FLOAT_LE: |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
99 bits=32; |
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
100 break; |
14245 | 101 case AF_FORMAT_S8: |
102 format=AF_FORMAT_U8; | |
103 case AF_FORMAT_U8: | |
7658 | 104 break; |
25097 | 105 case AF_FORMAT_AC3: |
106 bits=16; | |
107 break; | |
7658 | 108 default: |
14245 | 109 format=AF_FORMAT_S16_LE; |
7658 | 110 bits=16; |
111 break; | |
112 } | |
113 | |
114 ao_data.outburst = 65536; | |
115 ao_data.buffersize= 2*65536; | |
116 ao_data.channels=channels; | |
117 ao_data.samplerate=rate; | |
118 ao_data.format=format; | |
119 ao_data.bps=channels*rate*(bits/8); | |
120 | |
21250
7b1ab00ef2eb
le2me_32 is no longer a macro on PPC, and in general does not have to
reimar
parents:
18500
diff
changeset
|
121 wavhdr.riff = le2me_32(WAV_ID_RIFF); |
7b1ab00ef2eb
le2me_32 is no longer a macro on PPC, and in general does not have to
reimar
parents:
18500
diff
changeset
|
122 wavhdr.wave = le2me_32(WAV_ID_WAVE); |
7b1ab00ef2eb
le2me_32 is no longer a macro on PPC, and in general does not have to
reimar
parents:
18500
diff
changeset
|
123 wavhdr.fmt = le2me_32(WAV_ID_FMT); |
7b1ab00ef2eb
le2me_32 is no longer a macro on PPC, and in general does not have to
reimar
parents:
18500
diff
changeset
|
124 wavhdr.fmt_length = le2me_32(16); |
26604
9946e4a6e457
Support 32 bit float and integer formats in ao_pcm.c
reimar
parents:
25315
diff
changeset
|
125 wavhdr.fmt_tag = le2me_16(format == AF_FORMAT_FLOAT_LE ? WAV_ID_FLOAT_PCM : WAV_ID_PCM); |
7658 | 126 wavhdr.channels = le2me_16(ao_data.channels); |
127 wavhdr.sample_rate = le2me_32(ao_data.samplerate); | |
128 wavhdr.bytes_per_second = le2me_32(ao_data.bps); | |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
129 wavhdr.bits = le2me_16(bits); |
16243
178b8b4a62c6
Set block_align in header, seems MatLab can not handle files without.
reimar
parents:
14539
diff
changeset
|
130 wavhdr.block_align = le2me_16(ao_data.channels * (bits / 8)); |
9277
d824f1a3c341
The "initialize wav header with infinite lenght" broke the
arpi
parents:
9223
diff
changeset
|
131 |
21250
7b1ab00ef2eb
le2me_32 is no longer a macro on PPC, and in general does not have to
reimar
parents:
18500
diff
changeset
|
132 wavhdr.data = le2me_32(WAV_ID_DATA); |
9277
d824f1a3c341
The "initialize wav header with infinite lenght" broke the
arpi
parents:
9223
diff
changeset
|
133 wavhdr.data_length=le2me_32(0x7ffff000); |
d824f1a3c341
The "initialize wav header with infinite lenght" broke the
arpi
parents:
9223
diff
changeset
|
134 wavhdr.file_length = wavhdr.data_length + sizeof(wavhdr) - 8; |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
135 |
14264 | 136 mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_PCM_FileInfo, ao_outputfilename, |
137 (ao_pcm_waveheader?"WAVE":"RAW PCM"), rate, | |
138 (channels > 1) ? "Stereo" : "Mono", af_fmt2str_short(format)); | |
13383
c1955840883d
mp_msg transition of unmaintained audio output drivers.
ivo
parents:
12145
diff
changeset
|
139 mp_msg(MSGT_AO, MSGL_INFO, MSGTR_AO_PCM_HintInfo); |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
140 |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
141 fp = fopen(ao_outputfilename, "wb"); |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
142 if(fp) { |
9277
d824f1a3c341
The "initialize wav header with infinite lenght" broke the
arpi
parents:
9223
diff
changeset
|
143 if(ao_pcm_waveheader){ /* Reserve space for wave header */ |
6501 | 144 fwrite(&wavhdr,sizeof(wavhdr),1,fp); |
9277
d824f1a3c341
The "initialize wav header with infinite lenght" broke the
arpi
parents:
9223
diff
changeset
|
145 wavhdr.file_length=wavhdr.data_length=0; |
d824f1a3c341
The "initialize wav header with infinite lenght" broke the
arpi
parents:
9223
diff
changeset
|
146 } |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
147 return 1; |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
148 } |
13383
c1955840883d
mp_msg transition of unmaintained audio output drivers.
ivo
parents:
12145
diff
changeset
|
149 mp_msg(MSGT_AO, MSGL_ERR, MSGTR_AO_PCM_CantOpenOutputFile, |
c1955840883d
mp_msg transition of unmaintained audio output drivers.
ivo
parents:
12145
diff
changeset
|
150 ao_outputfilename); |
1107 | 151 return 0; |
152 } | |
153 | |
154 // close audio device | |
12145 | 155 static void uninit(int immed){ |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
156 |
6501 | 157 if(ao_pcm_waveheader && fseek(fp, 0, SEEK_SET) == 0){ /* Write wave header */ |
4914
de4074ab4e5f
good-looking fix by Tobias Diedrich <td@informatik.uni-hannover.de>
arpi
parents:
3095
diff
changeset
|
158 wavhdr.file_length = wavhdr.data_length + sizeof(wavhdr) - 8; |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
159 wavhdr.file_length = le2me_32(wavhdr.file_length); |
6762 | 160 wavhdr.data_length = le2me_32(wavhdr.data_length); |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
161 fwrite(&wavhdr,sizeof(wavhdr),1,fp); |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
162 } |
1107 | 163 fclose(fp); |
14298
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
164 if (ao_outputfilename) |
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
165 free(ao_outputfilename); |
3c818342a02b
Add -ao pcm suboptions and remove -aofile and -waveheader options.
reimar
parents:
14264
diff
changeset
|
166 ao_outputfilename = NULL; |
1107 | 167 } |
168 | |
169 // stop playing and empty buffers (for seeking/pause) | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16243
diff
changeset
|
170 static void reset(void){ |
1107 | 171 |
172 } | |
173 | |
174 // stop playing, keep buffers (for pause) | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16243
diff
changeset
|
175 static void audio_pause(void) |
1107 | 176 { |
177 // for now, just call reset(); | |
178 reset(); | |
179 } | |
180 | |
181 // resume playing, after audio_pause() | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16243
diff
changeset
|
182 static void audio_resume(void) |
1107 | 183 { |
184 } | |
185 | |
186 // return: how many bytes can be played without blocking | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16243
diff
changeset
|
187 static int get_space(void){ |
1107 | 188 |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
189 if(vo_pts) |
18092
96fdfbad5b1a
-ao pcm:fast suboption for faster-than-realtime dumping
reimar
parents:
17566
diff
changeset
|
190 return ao_data.pts < vo_pts + fast * 30000 ? ao_data.outburst : 0; |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
191 return ao_data.outburst; |
1107 | 192 } |
193 | |
194 // plays 'len' bytes of 'data' | |
195 // it should round it down to outburst*n | |
196 // return: number of bytes played | |
197 static int play(void* data,int len,int flags){ | |
198 | |
7658 | 199 // let libaf to do the conversion... |
200 #if 0 | |
201 //#ifdef WORDS_BIGENDIAN | |
202 if (ao_data.format == AFMT_S16_LE) { | |
203 unsigned short *buffer = (unsigned short *) data; | |
204 register int i; | |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
205 for(i = 0; i < len/2; ++i) { |
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
206 buffer[i] = le2me_16(buffer[i]); |
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
207 } |
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
208 } |
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
209 #endif |
7658 | 210 |
25315
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
211 if (ao_data.channels == 6 || ao_data.channels == 5) { |
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
212 int frame_size = le2me_16(wavhdr.bits) / 8; |
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
213 len -= len % (frame_size * ao_data.channels); |
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
214 reorder_channel_nch(data, AF_CHANNEL_LAYOUT_MPLAYER_DEFAULT, |
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
215 AF_CHANNEL_LAYOUT_WAVEEX_DEFAULT, |
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
216 ao_data.channels, |
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
217 len / frame_size, frame_size); |
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
218 } |
dfa8a510c81c
Fix all current known multi-channel wrong order problems by adding
ulion
parents:
25097
diff
changeset
|
219 |
1107 | 220 //printf("PCM: Writing chunk!\n"); |
221 fwrite(data,len,1,fp); | |
5837
7e082f42497a
- Fix for big apple architectures by Rogerio Brito, reworked by me to use bswap.h macros.
atmos4
parents:
4914
diff
changeset
|
222 |
1112
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
223 if(ao_pcm_waveheader) |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
224 wavhdr.data_length += len; |
b1cf1087ec33
Added support for writing wave files and specifying filename to write to.
atmosfear
parents:
1107
diff
changeset
|
225 |
1107 | 226 return len; |
227 } | |
228 | |
3095 | 229 // return: delay in seconds between first and last sample in buffer |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16243
diff
changeset
|
230 static float get_delay(void){ |
1107 | 231 |
3095 | 232 return 0.0; |
1107 | 233 } |
234 | |
235 | |
236 | |
237 | |
238 | |
239 |