# HG changeset patch # User reimar # Date 1094208603 0 # Node ID 97a6f049c9f8dbd2574bef243e246cddd6b95a01 # Parent bc7cb8cf36b263dc1da363d40dcfbbaaa5a8ee4a first attempt to make 24-bit PCM DVDs work diff -r bc7cb8cf36b2 -r 97a6f049c9f8 libmpcodecs/ad_dvdpcm.c --- a/libmpcodecs/ad_dvdpcm.c Fri Sep 03 00:08:58 2004 +0000 +++ b/libmpcodecs/ad_dvdpcm.c Fri Sep 03 10:50:03 2004 +0000 @@ -4,6 +4,7 @@ #include "config.h" #include "ad_internal.h" +#include "../libaf/af_format.h" static ad_info_t info = { @@ -29,12 +30,28 @@ case 2: sh->samplerate=44100;break; case 3: sh->samplerate=32000;break; } + switch ((h >> 6) & 3) { + case 0: + sh->sample_format = AFMT_S16_BE; + sh->samplesize = 2; + break; + case 2: + sh->sample_format = AFMT_AF_FLAGS | AF_FORMAT_I | + AF_FORMAT_BE | AF_FORMAT_US; + sh->samplesize = 3; + break; + default: + sh->sample_format = AFMT_S16_BE; + sh->samplesize = 2; + } } else { // use defaults: sh->channels=2; sh->samplerate=48000; + sh->sample_format = AFMT_S16_BE; + sh->samplesize = 2; } - sh->i_bps=2*sh->channels*sh->samplerate; + sh->i_bps = sh->samplesize * sh->channels * sh->samplerate; return 1; } @@ -66,12 +83,5 @@ { int j,len; len=demux_read_data(sh_audio->ds,buf,(minlen+3)&(~3)); -#ifndef WORDS_BIGENDIAN - for(j=0;j