mirror of https://github.com/mpv-player/mpv
Fix for audio filters on big endian cpus. It's working now on Solaris SPARC &
x86 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7720 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
6e1a20c121
commit
e567bb25ae
|
@ -28,6 +28,12 @@
|
|||
#define LE (1<<2) // Little Endian
|
||||
#define END_MASK (1<<2)
|
||||
|
||||
#if WORDS_BIGENDIAN // native endian of cpu
|
||||
#define NE BE
|
||||
#else
|
||||
#define NE LE
|
||||
#endif
|
||||
|
||||
// Signed
|
||||
#define US (0<<3) // Un Signed
|
||||
#define SI (1<<3) // SIgned
|
||||
|
@ -128,8 +134,8 @@ static af_data_t* play(struct af_instance_s* af, af_data_t* data)
|
|||
|
||||
la = l->audio;
|
||||
|
||||
// Change to little endian
|
||||
if((cf&END_MASK)!=LE){
|
||||
// Change to cpu native endian
|
||||
if((cf&END_MASK)!=NE){
|
||||
switch(cf&NBITS_MASK){
|
||||
case(B16):{
|
||||
register uint16_t s;
|
||||
|
@ -150,6 +156,7 @@ static af_data_t* play(struct af_instance_s* af, af_data_t* data)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Change signed/unsigned
|
||||
if((cf&SIGN_MASK) != (lf&SIGN_MASK)){
|
||||
switch((cf&NBITS_MASK)){
|
||||
|
@ -234,8 +241,9 @@ static af_data_t* play(struct af_instance_s* af, af_data_t* data)
|
|||
break;
|
||||
}
|
||||
}
|
||||
// Switch to the correct endainess (again the problem with sun?)
|
||||
if((lf&END_MASK)!=LE){
|
||||
|
||||
// Switch from cpu native endian to the correct endianess
|
||||
if((lf&END_MASK)!=NE){
|
||||
switch(lf&NBITS_MASK){
|
||||
case(B16):{
|
||||
register uint16_t s;
|
||||
|
|
|
@ -212,11 +212,11 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
|
|||
|
||||
// Set parameters
|
||||
af->data->nch = n->nch;
|
||||
af->data->format = AFMT_S16_LE;
|
||||
af->data->format = AFMT_S16_NE;
|
||||
af->data->bps = 2;
|
||||
if(af->data->format != n->format || af->data->bps != n->bps)
|
||||
rv = AF_FALSE;
|
||||
n->format = AFMT_S16_LE;
|
||||
n->format = AFMT_S16_NE;
|
||||
n->bps = 2;
|
||||
|
||||
// Calculate up and down sampling factors
|
||||
|
|
|
@ -36,3 +36,14 @@
|
|||
# define AFMT_S32_BE 0x00002000
|
||||
#endif
|
||||
|
||||
|
||||
/* native endian formats */
|
||||
#ifndef AFMT_S16_NE
|
||||
# if WORDS_BIGENDIAN
|
||||
# define AFMT_S16_NE AFMT_S16_BE
|
||||
# define AFMT_S32_NE AFMT_S32_BE
|
||||
# else
|
||||
# define AFMT_S16_NE AFMT_S16_LE
|
||||
# define AFMT_S32_NE AFMT_S32_LE
|
||||
# endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue