diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-10-08 22:56:43 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-10-08 22:56:43 +0000 |
commit | ba57b1c37f3e9640ddf0bc3b2eb7e4989cde257f (patch) | |
tree | b00fb86ea498a616432d3d3b5d9aeba01dd66339 /libmpcodecs | |
parent | 9d9dbdab952e10b6a38b3dd3e66e11aee3f93cd8 (diff) | |
download | mpv-ba57b1c37f3e9640ddf0bc3b2eb7e4989cde257f.tar.bz2 mpv-ba57b1c37f3e9640ddf0bc3b2eb7e4989cde257f.tar.xz |
parse samplerate & channels from LPCM header
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7671 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/ad_dvdpcm.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/libmpcodecs/ad_dvdpcm.c b/libmpcodecs/ad_dvdpcm.c index ffa98e8e0e..8ba0331bc2 100644 --- a/libmpcodecs/ad_dvdpcm.c +++ b/libmpcodecs/ad_dvdpcm.c @@ -19,11 +19,23 @@ LIBAD_EXTERN(dvdpcm) static int init(sh_audio_t *sh) { /* DVD PCM Audio:*/ - sh->channels=2; - sh->samplerate=48000; - sh->i_bps=2*2*48000; -/* sh_audio->pcm_bswap=1;*/ - return 1; + if(sh->codecdata_len==3){ + // we have LPCM header: + unsigned char h=sh->codecdata[1]; + sh->channels=1+(h&7); + switch((h>>4)&3){ + case 0: sh->samplerate=48000;break; + case 1: sh->samplerate=96000;break; + case 2: sh->samplerate=44100;break; + case 3: sh->samplerate=32000;break; + } + } else { + // use defaults: + sh->channels=2; + sh->samplerate=48000; + } + sh->i_bps=2*sh->channels*sh->samplerate; + return 1; } static int preinit(sh_audio_t *sh) |