summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-09-03 10:50:03 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-09-03 10:50:03 +0000
commit13abc1ced29ae39126b175502350b920697d8d34 (patch)
tree5041e5bab5e031e10474dc5a3044c0d3bffd774f /libmpcodecs
parent04ecde13b14225a0ed43b56d8fff00dda3b51101 (diff)
downloadmpv-13abc1ced29ae39126b175502350b920697d8d34.tar.bz2
mpv-13abc1ced29ae39126b175502350b920697d8d34.tar.xz
first attempt to make 24-bit PCM DVDs work
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13237 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/ad_dvdpcm.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/libmpcodecs/ad_dvdpcm.c b/libmpcodecs/ad_dvdpcm.c
index 8ba0331bc2..918dd26bbb 100644
--- a/libmpcodecs/ad_dvdpcm.c
+++ b/libmpcodecs/ad_dvdpcm.c
@@ -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 @@ static int init(sh_audio_t *sh)
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 @@ static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int m
{
int j,len;
len=demux_read_data(sh_audio->ds,buf,(minlen+3)&(~3));
-#ifndef WORDS_BIGENDIAN
- for(j=0;j<len;j+=2){
- char x=buf[j];
- buf[j]=buf[j+1];
- buf[j+1]=x;
- }
-#endif
return len;
}