Mercurial > mplayer.hg
comparison libmpcodecs/ad_dvdpcm.c @ 7670:d388a7ee48c5
parse samplerate & channels from LPCM header
author | arpi |
---|---|
date | Tue, 08 Oct 2002 22:56:43 +0000 |
parents | 1eadce15446c |
children | 97a6f049c9f8 |
comparison
equal
deleted
inserted
replaced
7669:0b3b1cbebd99 | 7670:d388a7ee48c5 |
---|---|
17 LIBAD_EXTERN(dvdpcm) | 17 LIBAD_EXTERN(dvdpcm) |
18 | 18 |
19 static int init(sh_audio_t *sh) | 19 static int init(sh_audio_t *sh) |
20 { | 20 { |
21 /* DVD PCM Audio:*/ | 21 /* DVD PCM Audio:*/ |
22 sh->channels=2; | 22 if(sh->codecdata_len==3){ |
23 sh->samplerate=48000; | 23 // we have LPCM header: |
24 sh->i_bps=2*2*48000; | 24 unsigned char h=sh->codecdata[1]; |
25 /* sh_audio->pcm_bswap=1;*/ | 25 sh->channels=1+(h&7); |
26 return 1; | 26 switch((h>>4)&3){ |
27 case 0: sh->samplerate=48000;break; | |
28 case 1: sh->samplerate=96000;break; | |
29 case 2: sh->samplerate=44100;break; | |
30 case 3: sh->samplerate=32000;break; | |
31 } | |
32 } else { | |
33 // use defaults: | |
34 sh->channels=2; | |
35 sh->samplerate=48000; | |
36 } | |
37 sh->i_bps=2*sh->channels*sh->samplerate; | |
38 return 1; | |
27 } | 39 } |
28 | 40 |
29 static int preinit(sh_audio_t *sh) | 41 static int preinit(sh_audio_t *sh) |
30 { | 42 { |
31 sh->audio_out_minsize=2048; | 43 sh->audio_out_minsize=2048; |