summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_audio.c
diff options
context:
space:
mode:
authoralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-21 14:36:33 +0000
committeralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-21 14:36:33 +0000
commit63b5875bb5741b85042057b1d86f8d528171668b (patch)
tree50b9afcdb0a24875059c6fefe26b89053a0b80d8 /libmpdemux/demux_audio.c
parent8b9de50aff24400042fbf1fc50ce43f69cf207c7 (diff)
downloadmpv-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.c16
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)