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;