Mercurial > mplayer.hg
diff libmpcodecs/ad_liba52.c @ 18720:4bad7f00556e
sync with liba52 0.7.4, patch by Emanuele Giaquinta >emanuele.giaquinta ! gmail * com<
part 1: functional changes
| author | rathann |
|---|---|
| date | Thu, 15 Jun 2006 22:58:06 +0000 |
| parents | befc16265bb1 |
| children | a1807995e2ab |
line wrap: on
line diff
--- a/libmpcodecs/ad_liba52.c Thu Jun 15 08:43:41 2006 +0000 +++ b/libmpcodecs/ad_liba52.c Thu Jun 15 22:58:06 2006 +0000 @@ -19,8 +19,7 @@ #include "liba52/a52.h" #include "liba52/mm_accel.h" -static sample_t * a52_samples; -static a52_state_t a52_state; +static a52_state_t *a52_state; static uint32_t a52_flags=0; /** Used by a52_resample_float, it defines the mapping between liba52 * channels and output channels. The ith nibble from the right in the @@ -169,8 +168,8 @@ if(gCpuCaps.has3DNow) a52_accel|=MM_ACCEL_X86_3DNOW; if(gCpuCaps.has3DNowExt) a52_accel|=MM_ACCEL_X86_3DNOWEXT; if(gCpuCaps.hasAltiVec) a52_accel|=MM_ACCEL_PPC_ALTIVEC; - a52_samples=a52_init (a52_accel); - if (a52_samples == NULL) { + a52_state=a52_init (a52_accel); + if (a52_state == NULL) { mp_msg(MSGT_DECAUDIO,MSGL_ERR,"A52 init failed\n"); return 0; } @@ -210,7 +209,7 @@ /* test:*/ flags=a52_flags|A52_ADJUST_LEVEL; mp_msg(MSGT_DECAUDIO,MSGL_V,"A52 flags before a52_frame: 0x%X\n",flags); - if (a52_frame (&a52_state, sh_audio->a_in_buffer, &flags, &level, bias)){ + if (a52_frame (a52_state, sh_audio->a_in_buffer, &flags, &level, bias)){ mp_msg(MSGT_DECAUDIO,MSGL_ERR,"a52: error decoding frame -> nosound\n"); return 0; } @@ -288,16 +287,12 @@ sample_t level=a52_level, bias=384; int flags=a52_flags|A52_ADJUST_LEVEL; int i,len=-1; - if (maxlen / sh_audio->samplesize / 256 / sh_audio->channels < 6) { - mp_msg(MSGT_DECAUDIO, MSGL_V, "maxlen too small in decode_audio\n"); - return len; - } if (sh_audio->sample_format == AF_FORMAT_FLOAT_NE) bias = 0; if(!sh_audio->a_in_buffer_len) if(a52_fillbuff(sh_audio)<0) return len; /* EOF */ sh_audio->a_in_buffer_len=0; - if (a52_frame (&a52_state, sh_audio->a_in_buffer, &flags, &level, bias)){ + if (a52_frame (a52_state, sh_audio->a_in_buffer, &flags, &level, bias)){ mp_msg(MSGT_DECAUDIO,MSGL_WARN,"a52: error decoding frame\n"); return len; } @@ -305,18 +300,18 @@ /* handle dynrng */ if (a52_drc_action != DRC_NO_ACTION) { if (a52_drc_action == DRC_NO_COMPRESSION) - a52_dynrng(&a52_state, NULL, NULL); + a52_dynrng(a52_state, NULL, NULL); else - a52_dynrng(&a52_state, dynrng_call, NULL); + a52_dynrng(a52_state, dynrng_call, NULL); } len=0; for (i = 0; i < 6; i++) { - if (a52_block (&a52_state, a52_samples)){ + if (a52_block (a52_state)){ mp_msg(MSGT_DECAUDIO,MSGL_WARN,"a52: error at resampling\n"); break; } - len+=2*a52_resample(a52_samples,(int16_t *)&buf[len]); + len+=2*a52_resample(a52_samples(a52_state),(int16_t *)&buf[len]); } assert(len <= maxlen); return len;
