diff options
Diffstat (limited to 'sesman/chansrv')
-rw-r--r-- | sesman/chansrv/pulse/module-xrdp-sink.c | 1 | ||||
-rw-r--r-- | sesman/chansrv/sound.c | 217 | ||||
-rw-r--r-- | sesman/chansrv/sound.h | 12 | ||||
-rw-r--r-- | sesman/chansrv/wave-format-server.txt | 466 |
4 files changed, 639 insertions, 57 deletions
diff --git a/sesman/chansrv/pulse/module-xrdp-sink.c b/sesman/chansrv/pulse/module-xrdp-sink.c index 37ed8169..f6650635 100644 --- a/sesman/chansrv/pulse/module-xrdp-sink.c +++ b/sesman/chansrv/pulse/module-xrdp-sink.c @@ -141,6 +141,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, case PA_SINK_MESSAGE_SET_STATE: /* 9 */ if (PA_PTR_TO_UINT(data) == PA_SINK_RUNNING) /* 0 */ { pa_log("sink_process_msg: running"); + u->timestamp = pa_rtclock_now(); } else { pa_log("sink_process_msg: not running"); diff --git a/sesman/chansrv/sound.c b/sesman/chansrv/sound.c index a4a94437..55f6f88d 100644 --- a/sesman/chansrv/sound.c +++ b/sesman/chansrv/sound.c @@ -23,43 +23,95 @@ extern int g_rdpsnd_chan_id; /* in chansrv.c */ extern int g_display_num; /* in chansrv.c */ -static struct trans *g_audio_l_trans = 0; // listener -static struct trans *g_audio_c_trans = 0; // connection +static struct trans *g_audio_l_trans = 0; /* listener */ +static struct trans *g_audio_c_trans = 0; /* connection */ static int g_training_sent_time = 0; static int g_cBlockNo = 0; #define BBUF_SIZE (1024 * 8) char g_buffer[BBUF_SIZE]; int g_buf_index = 0; +int g_sent_time[256]; #if defined(XRDP_SIMPLESOUND) static void *DEFAULT_CC read_raw_audio_data(void *arg); #endif +#define CHANSRV_PORT_STR "/tmp/.xrdp/xrdp_chansrv_audio_socket_%d" + +struct xr_wave_format_ex +{ + int wFormatTag; + int nChannels; + int nSamplesPerSec; + int nAvgBytesPerSec; + int nBlockAlign; + int wBitsPerSample; + int cbSize; + char *data; +}; + +static char g_pmc_22050_data[] = { 0 }; +static struct xr_wave_format_ex g_pmc_22050 = +{ + 1, /* wFormatTag - WAVE_FORMAT_PCM */ + 2, /* num of channels */ + 22050, /* samples per sec */ + 88200, /* avg bytes per sec */ + 4, /* block align */ + 16, /* bits per sample */ + 0, /* data size */ + g_pmc_22050_data /* data */ +}; + +static char g_pmc_44100_data[] = { 0 }; +static struct xr_wave_format_ex g_pmc_44100 = +{ + 1, /* wFormatTag - WAVE_FORMAT_PCM */ + 2, /* num of channels */ + 44100, /* samples per sec */ + 176400, /* avg bytes per sec */ + 4, /* block align */ + 16, /* bits per sample */ + 0, /* data size */ + g_pmc_44100_data /* data */ +}; + +#define NUM_BUILT_IN 2 +static struct xr_wave_format_ex *g_wave_formats[NUM_BUILT_IN] = +{ + &g_pmc_44100, + &g_pmc_22050 +}; + +/* index into list from client */ +static int g_current_client_format_index = 0; +/* index into list from server */ +static int g_current_server_format_index = 0; + /*****************************************************************************/ static int APP_CC sound_send_server_formats(void) { struct stream *s; int bytes; + int index; char *size_ptr; - print_got_here(); - make_stream(s); init_stream(s, 8182); out_uint16_le(s, SNDC_FORMATS); size_ptr = s->p; - out_uint16_le(s, 0); /* size, set later */ - out_uint32_le(s, 0); /* dwFlags */ - out_uint32_le(s, 0); /* dwVolume */ - out_uint32_le(s, 0); /* dwPitch */ - out_uint16_le(s, 0); /* wDGramPort */ - out_uint16_le(s, 1); /* wNumberOfFormats */ - out_uint8(s, g_cBlockNo); /* cLastBlockConfirmed */ - out_uint16_le(s, 2); /* wVersion */ - out_uint8(s, 0); /* bPad */ + out_uint16_le(s, 0); /* size, set later */ + out_uint32_le(s, 0); /* dwFlags */ + out_uint32_le(s, 0); /* dwVolume */ + out_uint32_le(s, 0); /* dwPitch */ + out_uint16_le(s, 0); /* wDGramPort */ + out_uint16_le(s, NUM_BUILT_IN); /* wNumberOfFormats */ + out_uint8(s, g_cBlockNo); /* cLastBlockConfirmed */ + out_uint16_le(s, 2); /* wVersion */ + out_uint8(s, 0); /* bPad */ /* sndFormats */ /* @@ -80,13 +132,21 @@ sound_send_server_formats(void) 00 00 */ - out_uint16_le(s, 1); // wFormatTag - WAVE_FORMAT_PCM - out_uint16_le(s, 2); // num of channels - out_uint32_le(s, 44100); // samples per sec - out_uint32_le(s, 176400); // avg bytes per sec - out_uint16_le(s, 4); // block align - out_uint16_le(s, 16); // bits per sample - out_uint16_le(s, 0); // size + for (index = 0; index < NUM_BUILT_IN; index++) + { + out_uint16_le(s, g_wave_formats[index]->wFormatTag); + out_uint16_le(s, g_wave_formats[index]->nChannels); + out_uint32_le(s, g_wave_formats[index]->nSamplesPerSec); + out_uint32_le(s, g_wave_formats[index]->nAvgBytesPerSec); + out_uint16_le(s, g_wave_formats[index]->nBlockAlign); + out_uint16_le(s, g_wave_formats[index]->wBitsPerSample); + bytes = g_wave_formats[index]->cbSize; + out_uint16_le(s, bytes); + if (bytes > 0) + { + out_uint8p(s, g_wave_formats[index]->data, bytes); + } + } s_mark_end(s); bytes = (int)((s->end - s->data) - 4); @@ -107,8 +167,6 @@ sound_send_training(void) int time; char *size_ptr; - print_got_here(); - make_stream(s); init_stream(s, 8182); out_uint16_le(s, SNDC_TRAINING); @@ -130,6 +188,52 @@ sound_send_training(void) } /*****************************************************************************/ +static int APP_CC +sound_process_format(int aindex, int wFormatTag, int nChannels, + int nSamplesPerSec, int nAvgBytesPerSec, + int nBlockAlign, int wBitsPerSample, + int cbSize, char *data) +{ + int lindex; + + LOG(0, ("sound_process_format:")); + LOG(0, (" wFormatTag %d", wFormatTag)); + LOG(0, (" nChannels %d", nChannels)); + LOG(0, (" nSamplesPerSec %d", nSamplesPerSec)); + LOG(0, (" nAvgBytesPerSec %d", nAvgBytesPerSec)); + LOG(0, (" nBlockAlign %d", nBlockAlign)); + LOG(0, (" wBitsPerSample %d", wBitsPerSample)); + LOG(0, (" cbSize %d", cbSize)); + g_hexdump(data, cbSize); + if (wFormatTag == g_pmc_44100.wFormatTag && + nChannels == g_pmc_44100.nChannels && + nSamplesPerSec == g_pmc_44100.nSamplesPerSec && + nAvgBytesPerSec == g_pmc_44100.nAvgBytesPerSec && + nBlockAlign == g_pmc_44100.nBlockAlign && + wBitsPerSample == g_pmc_44100.wBitsPerSample) + { + g_current_client_format_index = aindex; + g_current_server_format_index = 0; + } +#if 0 + for (lindex = 0; lindex < NUM_BUILT_IN; lindex++) + { + if (wFormatTag == g_wave_formats[lindex]->wFormatTag && + nChannels == g_wave_formats[lindex]->nChannels && + nSamplesPerSec == g_wave_formats[lindex]->nSamplesPerSec && + nAvgBytesPerSec == g_wave_formats[lindex]->nAvgBytesPerSec && + nBlockAlign == g_wave_formats[lindex]->nBlockAlign && + wBitsPerSample == g_wave_formats[lindex]->wBitsPerSample) + { + g_current_client_format_index = aindex; + g_current_server_format_index = lindex; + } + } +#endif + return 0; +} + +/*****************************************************************************/ /* 0000 07 02 26 00 03 00 80 00 ff ff ff ff 00 00 00 00 ..&............. 0010 00 00 01 00 00 02 00 00 01 00 02 00 44 ac 00 00 ............D... @@ -140,8 +244,15 @@ static int APP_CC sound_process_formats(struct stream *s, int size) { int num_formats; - - print_got_here(); + int index; + int wFormatTag; + int nChannels; + int nSamplesPerSec; + int nAvgBytesPerSec; + int nBlockAlign; + int wBitsPerSample; + int cbSize; + char *data; LOG(0, ("sound_process_formats:")); @@ -152,9 +263,24 @@ sound_process_formats(struct stream *s, int size) in_uint8s(s, 14); in_uint16_le(s, num_formats); + in_uint8s(s, 4); if (num_formats > 0) { + for (index = 0; index < num_formats; index++) + { + in_uint16_le(s, wFormatTag); + in_uint16_le(s, nChannels); + in_uint32_le(s, nSamplesPerSec); + in_uint32_le(s, nAvgBytesPerSec); + in_uint16_le(s, nBlockAlign); + in_uint16_le(s, wBitsPerSample); + in_uint16_le(s, cbSize); + in_uint8p(s, data, cbSize); + sound_process_format(index, wFormatTag, nChannels, nSamplesPerSec, + nAvgBytesPerSec, nBlockAlign, wBitsPerSample, + cbSize, data); + } sound_send_training(); } @@ -162,6 +288,7 @@ sound_process_formats(struct stream *s, int size) } /*****************************************************************************/ +/* send wave message to client */ static int sound_send_wave_data_chunk(char *data, int data_bytes) { @@ -170,7 +297,7 @@ sound_send_wave_data_chunk(char *data, int data_bytes) int time; char *size_ptr; - print_got_here(); + LOG(10, ("sound_send_wave_data_chunk: data_bytes %d", data_bytes)); if ((data_bytes < 4) || (data_bytes > 128 * 1024)) { @@ -188,9 +315,10 @@ sound_send_wave_data_chunk(char *data, int data_bytes) out_uint16_le(s, 0); /* size, set later */ time = g_time2(); out_uint16_le(s, time); - out_uint16_le(s, 0); /* wFormatNo */ + out_uint16_le(s, g_current_client_format_index); /* wFormatNo */ g_cBlockNo++; out_uint8(s, g_cBlockNo); + g_sent_time[g_cBlockNo & 0xff] = time; LOG(10, ("sound_send_wave_data_chunk: sending time %d, g_cBlockNo %d", time & 0xffff, g_cBlockNo & 0xff)); @@ -220,6 +348,7 @@ sound_send_wave_data_chunk(char *data, int data_bytes) } /*****************************************************************************/ +/* send wave message to client, buffer first */ static int sound_send_wave_data(char *data, int data_bytes) { @@ -252,6 +381,7 @@ sound_send_wave_data(char *data, int data_bytes) } /*****************************************************************************/ +/* send close message to client */ static int sound_send_close(void) { @@ -260,7 +390,6 @@ sound_send_close(void) char *size_ptr; LOG(10, ("sound_send_close:")); - print_got_here(); /* send any left over data */ sound_send_wave_data_chunk(g_buffer, g_buf_index); @@ -282,42 +411,45 @@ sound_send_close(void) } /*****************************************************************************/ +/* from client */ static int APP_CC sound_process_training(struct stream *s, int size) { int time_diff; - print_got_here(); - time_diff = g_time2() - g_training_sent_time; LOG(0, ("sound_process_training: round trip time %u", time_diff)); return 0; } /*****************************************************************************/ +/* from client */ static int APP_CC sound_process_wave_confirm(struct stream *s, int size) { int wTimeStamp; int cConfirmedBlockNo; + int time; + int time_diff; - print_got_here(); - + time = g_time2(); in_uint16_le(s, wTimeStamp); in_uint8(s, cConfirmedBlockNo); + time_diff = time - g_sent_time[cConfirmedBlockNo]; - LOG(10, ("sound_process_wave_confirm: wTimeStamp %d, cConfirmedBlockNo %d", - wTimeStamp, cConfirmedBlockNo)); + LOG(10, ("sound_process_wave_confirm: wTimeStamp %d, " + "cConfirmedBlockNo %d time diff %d", + wTimeStamp, cConfirmedBlockNo, time_diff)); return 0; } /*****************************************************************************/ +/* process message in from the audio source, eg pulse, alsa + on it's way to the client */ static int APP_CC process_pcm_message(int id, int size, struct stream *s) { - print_got_here(); - switch (id) { case 0: @@ -334,7 +466,7 @@ process_pcm_message(int id, int size, struct stream *s) } /*****************************************************************************/ -/* data coming in from audio source, eg pulse, alsa */ +/* data in from audio source, eg pulse, alsa */ static int DEFAULT_CC sound_trans_audio_data_in(struct trans *trans) { @@ -376,11 +508,11 @@ sound_trans_audio_data_in(struct trans *trans) } /*****************************************************************************/ +/* this is a connection in on the unix domain socket */ static int DEFAULT_CC sound_trans_audio_conn_in(struct trans *trans, struct trans *new_trans) { LOG(0, ("sound_trans_audio_conn_in:")); - print_got_here(); if (trans == 0) { @@ -410,8 +542,6 @@ sound_trans_audio_conn_in(struct trans *trans, struct trans *new_trans) return 0; } -#define CHANSRV_PORT_STR "/tmp/.xrdp/xrdp_chansrv_audio_socket_%d" - /*****************************************************************************/ int APP_CC sound_init(void) @@ -419,7 +549,6 @@ sound_init(void) char port[256]; int error; - print_got_here(); LOG(0, ("sound_init:")); sound_send_server_formats(); @@ -447,8 +576,6 @@ sound_init(void) int APP_CC sound_deinit(void) { - print_got_here(); - if (g_audio_l_trans != 0) { trans_delete(g_audio_l_trans); @@ -465,7 +592,7 @@ sound_deinit(void) } /*****************************************************************************/ -/* data in from client ( clinet -> xrdp -> chansrv ) */ +/* data in from client ( client -> xrdp -> chansrv ) */ int APP_CC sound_data_in(struct stream *s, int chan_id, int chan_flags, int length, int total_length) @@ -473,8 +600,6 @@ sound_data_in(struct stream *s, int chan_id, int chan_flags, int length, int code; int size; - print_got_here(); - in_uint8(s, code); in_uint8s(s, 1); in_uint16_le(s, size); @@ -544,6 +669,8 @@ sound_check_wait_objs(void) #if defined(XRDP_SIMPLESOUND) +#define AUDIO_BUF_SIZE 2048 + static int DEFAULT_CC sttrans_data_in(struct trans *self) { diff --git a/sesman/chansrv/sound.h b/sesman/chansrv/sound.h index f74476c4..0666ea00 100644 --- a/sesman/chansrv/sound.h +++ b/sesman/chansrv/sound.h @@ -30,18 +30,6 @@ #include "chansrv.h" #include "trans.h" -#define _DEBUG_RDPSND - -#ifdef DEBUG_RDPSND -#include <stdio.h> -#define print_got_here() printf("****** got here: %s : %s : %d\n", \ - __FILE__, __func__, __LINE__); -#else -#define print_got_here() -#endif - -#define AUDIO_BUF_SIZE 2048 - #define SNDC_CLOSE 0x01 #define SNDC_WAVE 0x02 #define SNDC_SETVOLUME 0x03 diff --git a/sesman/chansrv/wave-format-server.txt b/sesman/chansrv/wave-format-server.txt new file mode 100644 index 00000000..1d0bb91e --- /dev/null +++ b/sesman/chansrv/wave-format-server.txt @@ -0,0 +1,466 @@ + + +Example wave formats from some servers + +see MMREG.H for defines + +Windows 7 SP1 + +example wave data sizes coming from server 8820 + +wFormatTag=1 nChannels=2 nSamplesPerSec=44100 nAvgBytesPerSec=176400 nBlockAlign=4 wBitsPerSample=16 cbSize=0 + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=2 nSamplesPerSec=44100 nAvgBytesPerSec=88200 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=2 nSamplesPerSec=44100 nAvgBytesPerSec=88200 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=2 nSamplesPerSec=44100 nAvgBytesPerSec=44359 nBlockAlign=2048 wBitsPerSample=4 cbSize=32 + 0000 f4 07 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ + 0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=2 nSamplesPerSec=44100 nAvgBytesPerSec=44251 nBlockAlign=2048 wBitsPerSample=4 cbSize=2 + 0000 f9 07 .. + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=44100 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=1 nSamplesPerSec=44100 nAvgBytesPerSec=44100 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=44100 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=1 nSamplesPerSec=44100 nAvgBytesPerSec=44100 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=22311 nBlockAlign=1024 wBitsPerSample=4 cbSize=32 + 0000 f4 03 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ + 0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=22201 nBlockAlign=1024 wBitsPerSample=4 cbSize=2 + 0000 f9 03 .. + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=1 nSamplesPerSec=44100 nAvgBytesPerSec=22179 nBlockAlign=1024 wBitsPerSample=4 cbSize=32 + 0000 f4 07 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ + 0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=1 nSamplesPerSec=44100 nAvgBytesPerSec=22125 nBlockAlign=1024 wBitsPerSample=4 cbSize=2 + 0000 f9 07 .. + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=22050 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=22050 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=22050 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=22050 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=16000 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=16000 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=11289 nBlockAlign=512 wBitsPerSample=4 cbSize=32 + 0000 f4 01 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ + 0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=11177 nBlockAlign=512 wBitsPerSample=4 cbSize=2 + 0000 f9 01 .. + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=11155 nBlockAlign=512 wBitsPerSample=4 cbSize=32 + 0000 f4 03 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ + 0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=11100 nBlockAlign=512 wBitsPerSample=4 cbSize=2 + 0000 f9 03 .. + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=11025 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=11025 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +wFormatTag=49 nChannels=1 nSamplesPerSec=44100 nAvgBytesPerSec=8957 nBlockAlign=65 wBitsPerSample=0 cbSize=2 + 0000 40 01 @. + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=8192 nBlockAlign=512 wBitsPerSample=4 cbSize=32 + 0000 f4 01 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ + 0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=8110 nBlockAlign=512 wBitsPerSample=4 cbSize=2 + 0000 f9 01 .. + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=8000 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=8000 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +wFormatTag=2 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=5644 nBlockAlign=256 wBitsPerSample=4 cbSize=32 + 0000 f4 01 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ + 0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +wFormatTag=17 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=5588 nBlockAlign=256 wBitsPerSample=4 cbSize=2 + 0000 f9 01 .. + +#define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */ +wFormatTag=49 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=4478 nBlockAlign=65 wBitsPerSample=0 cbSize=2 + 0000 40 01 @. + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=4096 nBlockAlign=256 wBitsPerSample=4 cbSize=32 + 0000 f4 01 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ + 0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=4055 nBlockAlign=256 wBitsPerSample=4 cbSize=2 + 0000 f9 01 .. + +#define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */ +wFormatTag=49 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=2239 nBlockAlign=65 wBitsPerSample=0 cbSize=2 + 0000 40 01 @. + +#define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */ +wFormatTag=49 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=1625 nBlockAlign=65 wBitsPerSample=0 cbSize=2 + 0000 40 01 @. + + + + +Windows XP SP3 + +example wave data sizes coming from server 32512, 16256 + +wFormatTag=1 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=88200 nBlockAlign=4 wBitsPerSample=16 cbSize=0 + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=44100 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=44100 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=22311 nBlockAlign=1024 wBitsPerSample=4 cbSize=32 +0000 f4 03 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ +0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=22201 nBlockAlign=1024 wBitsPerSample=4 cbSize=2 +0000 f9 03 .. + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=22050 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=22050 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=22050 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=22050 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=16000 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=16000 nBlockAlign=2 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=11289 nBlockAlign=512 wBitsPerSample=4 cbSize=32 +0000 f4 01 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ +0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=11177 nBlockAlign=512 wBitsPerSample=4 cbSize=2 +0000 f9 01 .. + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=11155 nBlockAlign=512 wBitsPerSample=4 cbSize=32 +0000 f4 03 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ +0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=11100 nBlockAlign=512 wBitsPerSample=4 cbSize=2 +0000 f9 03 .. + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=11025 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=11025 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=8192 nBlockAlign=512 wBitsPerSample=4 cbSize=32 +0000 f4 01 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ +0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=8110 nBlockAlign=512 wBitsPerSample=4 cbSize=2 +0000 f9 01 .. + +#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ +wFormatTag=6 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=8000 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ +wFormatTag=7 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=8000 nBlockAlign=1 wBitsPerSample=8 cbSize=0 + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=7000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 b6 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=16000 nAvgBytesPerSec=7000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 fc 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=6000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 9c 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=16000 nAvgBytesPerSec=6000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 d8 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=5644 nBlockAlign=256 wBitsPerSample=4 cbSize=32 +0000 f4 01 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ +0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=5588 nBlockAlign=256 wBitsPerSample=4 cbSize=2 +0000 f9 01 .. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=5000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 82 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=16000 nAvgBytesPerSec=5000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 b4 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */ +wFormatTag=49 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=4478 nBlockAlign=65 wBitsPerSample=0 cbSize=2 +0000 40 01 @. + +#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ +wFormatTag=2 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=4096 nBlockAlign=256 wBitsPerSample=4 cbSize=32 +0000 f4 01 07 00 00 01 00 00 00 02 00 ff 00 00 00 00 ................ +0010 c0 00 40 00 f0 00 00 00 cc 01 30 ff 88 01 18 ff ..@.......0..... + +#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ +wFormatTag=17 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=4055 nBlockAlign=256 wBitsPerSample=4 cbSize=2 +0000 f9 01 .. + +? +wFormatTag=353 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=4005 nBlockAlign=186 wBitsPerSample=16 cbSize=47 +0000 00 04 00 00 01 00 ba 00 00 00 46 36 44 43 39 38 ..........F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=16000 nAvgBytesPerSec=4000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 90 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=12000 nAvgBytesPerSec=4000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 c0 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=4000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 d0 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=4000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 20 01 01 00 71 05 ...... ...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=4000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 68 00 01 00 71 05 ......h...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=16000 nAvgBytesPerSec=4000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 90 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=12000 nAvgBytesPerSec=3000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 90 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=3000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 9c 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=3000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 d8 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=3000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 4e 00 01 00 71 05 ......N...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=16000 nAvgBytesPerSec=3000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 6c 00 01 00 71 05 ......l...q. + +? +wFormatTag=353 nChannels=1 nSamplesPerSec=22050 nAvgBytesPerSec=2519 nBlockAlign=117 wBitsPerSample=16 cbSize=47 +0000 00 04 00 00 00 00 75 00 00 00 46 36 44 43 39 38 ......u...F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +? +wFormatTag=353 nChannels=2 nSamplesPerSec=22050 nAvgBytesPerSec=2519 nBlockAlign=117 wBitsPerSample=16 cbSize=47 +0000 00 04 00 00 00 00 75 00 00 00 46 36 44 43 39 38 ......u...F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=12000 nAvgBytesPerSec=2500 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 f0 00 02 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=2500 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 04 01 02 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=2500 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 68 01 02 00 71 05 ......h...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=16000 nAvgBytesPerSec=2500 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 b4 00 02 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=12000 nAvgBytesPerSec=2500 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 f0 00 02 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=2500 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 04 01 02 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=12000 nAvgBytesPerSec=2250 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 b0 01 04 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=11025 nAvgBytesPerSec=2250 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 d4 01 04 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=2250 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 88 02 04 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=16000 nAvgBytesPerSec=2250 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 44 01 04 00 71 05 ......D...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=12000 nAvgBytesPerSec=2250 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 b0 01 04 00 71 05 ..........q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=2250 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 d4 01 04 00 71 05 ..........q. + +#define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */ +wFormatTag=49 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=2239 nBlockAlign=65 wBitsPerSample=0 cbSize=2 +0000 40 01 @. + +? +wFormatTag=353 nChannels=1 nSamplesPerSec=16000 nAvgBytesPerSec=2000 nBlockAlign=64 wBitsPerSample=16 cbSize=47 +0000 00 02 00 00 00 00 40 00 00 00 46 36 44 43 39 38 ......@...F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=16000 nAvgBytesPerSec=2000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 48 00 01 00 71 05 ......H...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=12000 nAvgBytesPerSec=2000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 60 00 01 00 71 05 ......`...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=2000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 68 00 01 00 71 05 ......h...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=2000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 90 00 01 00 71 05 ..........q. + +#define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */ +wFormatTag=49 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=1625 nBlockAlign=65 wBitsPerSample=0 cbSize=2 +0000 40 01 @. + +? +wFormatTag=353 nChannels=2 nSamplesPerSec=8000 nAvgBytesPerSec=1500 nBlockAlign=96 wBitsPerSample=16 cbSize=47 +0000 00 02 00 00 00 00 60 00 00 00 46 36 44 43 39 38 ......`...F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +? +wFormatTag=353 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=1249 nBlockAlign=58 wBitsPerSample=16 cbSize=47 +0000 00 02 00 00 00 00 3a 00 00 00 46 36 44 43 39 38 ......:...F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +#define WAVE_FORMAT_DSPGROUP_TRUESPEECH 0x0022 /* DSP Group, Inc */ +wFormatTag=34 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=1067 nBlockAlign=32 wBitsPerSample=1 cbSize=32 +0000 01 00 f0 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + +? +wFormatTag=353 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=1012 nBlockAlign=47 wBitsPerSample=16 cbSize=47 +0000 00 02 00 00 00 00 2f 00 00 00 46 36 44 43 39 38 ....../...F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +? +wFormatTag=353 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=1000 nBlockAlign=64 wBitsPerSample=16 cbSize=47 +0000 00 02 00 00 00 00 40 00 00 00 46 36 44 43 39 38 ......@...F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=12000 nAvgBytesPerSec=1000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 30 00 01 00 71 05 ......0...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=11025 nAvgBytesPerSec=1000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 34 00 01 00 71 05 ......4...q. + +#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* ISO/MPEG Layer3 Format Tag */ +wFormatTag=85 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=1000 nBlockAlign=1 wBitsPerSample=0 cbSize=12 +0000 01 00 02 00 00 00 48 00 01 00 71 05 ......H...q. + +? +wFormatTag=66 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=800 nBlockAlign=24 wBitsPerSample=0 cbSize=10 +0000 02 00 ce 9a 32 f7 a2 ae de ac ....2..... + +? +wFormatTag=353 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=750 nBlockAlign=48 wBitsPerSample=16 cbSize=47 +0000 00 02 00 00 00 00 30 00 00 00 46 36 44 43 39 38 ......0...F6DC98 +0010 33 30 2d 42 43 37 39 2d 31 31 64 32 2d 41 39 44 30-BC79-11d2-A9D +0020 30 2d 30 30 36 30 39 37 39 32 36 30 33 36 00 0-006097926036. + +? +wFormatTag=66 nChannels=1 nSamplesPerSec=8000 nAvgBytesPerSec=666 nBlockAlign=20 wBitsPerSample=0 cbSize=10 +0000 03 00 ce 9a 32 f7 a2 ae de ac ....2..... |