diff options
author | albeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-07-21 14:36:33 +0000 |
---|---|---|
committer | albeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-07-21 14:36:33 +0000 |
commit | 63b5875bb5741b85042057b1d86f8d528171668b (patch) | |
tree | 50b9afcdb0a24875059c6fefe26b89053a0b80d8 /libmpdemux/demux_audio.c | |
parent | 8b9de50aff24400042fbf1fc50ce43f69cf207c7 (diff) | |
download | mpv-63b5875bb5741b85042057b1d86f8d528171668b.tar.bz2 mpv-63b5875bb5741b85042057b1d86f8d528171668b.tar.xz |
Fix vbr muxing and win32 codec crash on init
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6764 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_audio.c')
-rw-r--r-- | libmpdemux/demux_audio.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c index 442df9f915..64dc64ffba 100644 --- a/libmpdemux/demux_audio.c +++ b/libmpdemux/demux_audio.c @@ -8,6 +8,7 @@ #include "demuxer.h" #include "stheader.h" #include "genres.h" +#include "mp3_hdr.h" #include <string.h> #ifdef MP_DEBUG @@ -25,7 +26,6 @@ typedef struct da_priv { float last_pts; } da_priv_t; -extern int mp_decode_mp3_header(unsigned char* hbuf); extern void free_sh_audio(sh_audio_t* sh); extern void resync_audio_stream(sh_audio_t *sh_audio); @@ -35,7 +35,7 @@ int demux_audio_open(demuxer_t* demuxer) { stream_t *s; sh_audio_t* sh_audio; uint8_t hdr[HDR_SIZE]; - int st_pos = 0,frmt = 0, n = 0, pos = 0, step; + int st_pos = 0,frmt = 0, n = 0, pos = 0, step, mp3_freq,mp3_chans; da_priv_t* priv; #ifdef MP_DEBUG assert(demuxer != NULL); @@ -68,7 +68,7 @@ int demux_audio_open(demuxer_t* demuxer) { } else if( hdr[0] == 'f' && hdr[1] == 'm' && hdr[2] == 't' && hdr[3] == ' ' ) { frmt = WAV; break; - } else if((n = mp_decode_mp3_header(hdr)) > 0) { + } else if((n = mp_get_mp3_header(hdr,&mp3_chans,&mp3_freq)) > 0) { frmt = MP3; break; } @@ -87,6 +87,16 @@ int demux_audio_open(demuxer_t* demuxer) { case MP3: sh_audio->format = 0x55; demuxer->movi_start = st_pos-HDR_SIZE+n; + sh_audio->audio.dwSampleSize= 0; + sh_audio->audio.dwScale = 1152; + sh_audio->audio.dwRate = mp3_freq; + sh_audio->wf = malloc(sizeof(WAVEFORMATEX)); + sh_audio->wf->wFormatTag = sh_audio->format; + sh_audio->wf->nChannels = mp3_chans; + sh_audio->wf->nSamplesPerSec = mp3_freq; + sh_audio->wf->nBlockAlign = 1; + sh_audio->wf->wBitsPerSample = 16; + sh_audio->wf->cbSize = 0; for(n = 0; n < 5 ; n++) { pos = mp_decode_mp3_header(hdr); if(pos < 0) |