summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-10-08 22:56:43 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-10-08 22:56:43 +0000
commitba57b1c37f3e9640ddf0bc3b2eb7e4989cde257f (patch)
treeb00fb86ea498a616432d3d3b5d9aeba01dd66339 /libmpcodecs
parent9d9dbdab952e10b6a38b3dd3e66e11aee3f93cd8 (diff)
downloadmpv-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.c22
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)