[MPlayer-dev-eng] [PATCH] change demuxer for radio from "rawaudio" to "audio"
Nico Sabbi
nsabbi at email.it
Sun Jul 22 11:38:45 CEST 2007
Vladimir Voroshilov wrote:
> Hi, All
>
> I want to know is fill_wav_header routine looks ok?
> Without objections i'll apply patch in 24h.
>
> With this patch passing "-rawaudio rate=" in command line no more
> requred.
>
>------------------------------------------------------------------------
>
>
> /*****************************************************************
>+ * \brief fills first given buffer with WAVE header
>+ * \param priv private data structure
>+ * \param buffer buffer to store header to
>+ * \param max_len buffer capacity
>+ *
>+ * \return length of hesder (44)
>+ *
>+ * This routine allows radio driver to use DEMUXER_TYPE_AUDIO and provide
>+ * correct samplerate, channels paramaters to it. Avoid user to specify
>+ * them in command line.
>+ * WAVE header will be passed to demuxer as first data chunk
>+ */
>+static int fill_wav_header(radio_priv_t* priv, char* buffer, int max_len){
>+ int fake_length=0; //real data length in WAV is unknown
>+ int bits_per_sample=16;
>+
>+ if(max_len<44)
>+ return 0;
>+ *(uint32_t*)(buffer )=le2me_32(0x46464952); //RIFF
>+ *(uint32_t*)(buffer+ 4)=le2me_32(fake_length+36);//file+Header length-8
>+ *(uint32_t*)(buffer+ 8)=le2me_32(0x45564157); //WAVE
>+ *(uint32_t*)(buffer+12)=le2me_32(0x20746d66); //"fmt "
>+ *(uint32_t*)(buffer+16)=le2me_32(16); //WAVEFORMATEX length
>+ *(uint16_t*)(buffer+20)=le2me_16(1); //PCM
>+ *(uint16_t*)(buffer+22)=le2me_16(radio_param_achannels);
>+ *(uint32_t*)(buffer+24)=le2me_32(radio_param_arate);
>+ *(uint32_t*)(buffer+28)=le2me_32(bits_per_sample*radio_param_achannels*radio_param_arate/8);
>+ *(uint16_t*)(buffer+32)=le2me_16(bits_per_sample*radio_param_achannels/8);
>+ *(uint16_t*)(buffer+34)=le2me_16(bits_per_sample);
>+ *(uint32_t*)(buffer+36)=le2me_32(0x61746164); //"data"
>+ *(uint32_t*)(buffer+40)=le2me_32(fake_length); //file length
>+ return 44;
>+}
>+
>
>
I'm not the maintener of that part of code but I'm against such nonsense:
code like that belongs to muxers. If you want to avoid passing the
samplerate
you can find cleaner solutions (STREAM_CTL/DEMUXER_CTL come to mind)
More information about the MPlayer-dev-eng
mailing list