[MPlayer-dev-eng] [PATCH] external liba52 support
Dominik 'Rathann' Mierzejewski
dominik at rangers.eu.org
Sat Sep 13 16:00:26 CEST 2008
On Saturday, 30 August 2008 at 01:00, Dominik 'Rathann' Mierzejewski wrote:
> On Saturday, 30 August 2008 at 00:48, Diego Biurrun wrote:
> > On Fri, Aug 22, 2008 at 02:14:23AM +0200, Dominik 'Rathann' Mierzejewski wrote:
> > > Here are two patches which add external liba52-0.7.4 support.
> >
> > This is very welcome, thanks.
> >
> > > Patch1: conditionalizes enabling of some acceleration because
> > > liba52-0.7.4 doesn't support all that MPlayer's copy does.
> > > Patch2: the main patch, depends on Patch1
> > >
> > > Tested with --disable-liba52-internal and without, seems to be working fine.
Updated patches against current SVN attached.
OK to apply?
Regards,
R.
--
MPlayer http://mplayerhq.hu | Livna http://rpm.livna.org
There should be a science of discontent. People need hard times and
oppression to develop psychic muscles.
-- from "Collected Sayings of Muad'Dib" by the Princess Irulan
-------------- next part --------------
Index: libmpcodecs/ad_liba52.c
===================================================================
--- libmpcodecs/ad_liba52.c (revision 27599)
+++ libmpcodecs/ad_liba52.c (working copy)
@@ -158,12 +158,18 @@
sample_t level=a52_level, bias=384;
int flags=0;
/* Dolby AC3 audio:*/
+#ifdef MM_ACCEL_X86_SSE
if(gCpuCaps.hasSSE) a52_accel|=MM_ACCEL_X86_SSE;
+#endif
if(gCpuCaps.hasMMX) a52_accel|=MM_ACCEL_X86_MMX;
if(gCpuCaps.hasMMX2) a52_accel|=MM_ACCEL_X86_MMXEXT;
if(gCpuCaps.has3DNow) a52_accel|=MM_ACCEL_X86_3DNOW;
+#ifdef MM_ACCEL_X86_3DNOWEXT
if(gCpuCaps.has3DNowExt) a52_accel|=MM_ACCEL_X86_3DNOWEXT;
+#endif
+#ifdef MM_ACCEL_PPC_ALTIVEC
if(gCpuCaps.hasAltiVec) a52_accel|=MM_ACCEL_PPC_ALTIVEC;
+#endif
a52_state=a52_init (a52_accel);
if (a52_state == NULL) {
mp_msg(MSGT_DECAUDIO,MSGL_ERR,"A52 init failed\n");
-------------- next part --------------
Index: libmpcodecs/ad_hwac3.c
===================================================================
--- libmpcodecs/ad_hwac3.c (revision 27599)
+++ libmpcodecs/ad_hwac3.c (working copy)
@@ -17,7 +17,11 @@
#include "ad_internal.h"
+#ifdef CONFIG_LIBA52_INTERNAL
#include "liba52/a52.h"
+#else
+#include <a52dec/a52.h>
+#endif
static int isdts = -1;
Index: libmpcodecs/ad_liba52.c
===================================================================
--- libmpcodecs/ad_liba52.c (revision 27599)
+++ libmpcodecs/ad_liba52.c (working copy)
@@ -16,8 +16,14 @@
#include "libaf/af_format.h"
+#ifdef CONFIG_LIBA52_INTERNAL
#include "liba52/a52.h"
#include "liba52/mm_accel.h"
+#else
+#include <a52dec/a52.h>
+#include <a52dec/mm_accel.h>
+int (* a52_resample) (float * _f, int16_t * s16);
+#endif
static a52_state_t *a52_state;
static uint32_t a52_flags=0;
@@ -79,8 +85,10 @@
if(sh_audio->format!=0x2000)
swab(sh_audio->a_in_buffer+8,sh_audio->a_in_buffer+8,length-8);
+#ifdef CONFIG_LIBA52_INTERNAL
if(crc16_block(sh_audio->a_in_buffer+2,length-2)!=0)
mp_msg(MSGT_DECAUDIO,MSGL_STATUS,"a52: CRC check failed! \n");
+#endif
return length;
}
@@ -121,7 +129,11 @@
{
/* Dolby AC3 audio: */
/* however many channels, 2 bytes in a word, 256 samples in a block, 6 blocks in a frame */
+#ifdef CONFIG_LIBA52_INTERNAL
if (sh->samplesize < 2) sh->samplesize = 2;
+#else
+ if (sh->samplesize < 4) sh->samplesize = 4;
+#endif
sh->audio_out_minsize=audio_output_channels*sh->samplesize*256*6;
sh->audio_in_minsize=3840;
a52_level = 1.0;
@@ -169,6 +181,9 @@
mp_msg(MSGT_DECAUDIO,MSGL_ERR,"A52 init failed\n");
return 0;
}
+#ifndef CONFIG_LIBA52_INTERNAL
+ sh_audio->sample_format = AF_FORMAT_FLOAT_NE;
+#endif
if(a52_fillbuff(sh_audio)<0){
mp_msg(MSGT_DECAUDIO,MSGL_ERR,"A52 sync failed\n");
return 0;
@@ -241,8 +256,12 @@
break;
}
} else
+#ifdef CONFIG_LIBA52_INTERNAL
if(a52_resample_init(a52_accel,flags,sh_audio->channels)) break;
--sh_audio->channels; /* try to decrease no. of channels*/
+#else
+ break;
+#endif
}
if(sh_audio->channels<=0){
mp_msg(MSGT_DECAUDIO,MSGL_ERR,"a52: no resampler. try different channel setup!\n");
Index: Makefile
===================================================================
--- Makefile (revision 27599)
+++ Makefile (working copy)
@@ -294,8 +294,8 @@
SRCS_COMMON-$(JPEG) += libmpcodecs/vd_ijpg.c
SRCS_COMMON-$(LADSPA) += libaf/af_ladspa.c
SRCS_COMMON-$(LIBA52) += libmpcodecs/ad_hwac3.c \
- libmpcodecs/ad_liba52.c \
- liba52/crc.c \
+ libmpcodecs/ad_liba52.c
+SRCS_COMMON-$(LIBA52_INTERNAL) += liba52/crc.c \
liba52/resample.c \
liba52/bit_allocate.c \
liba52/bitstream.c \
Index: configure
===================================================================
--- configure (revision 27599)
+++ configure (working copy)
@@ -320,7 +320,8 @@
--enable-xmms enable XMMS input plugin support [disabled]
--enable-libdca enable libdca support [autodetect]
--disable-mp3lib disable builtin mp3lib [enabled]
- --disable-liba52 disable builtin liba52 [enabled]
+ --disable-liba52 disable liba52 [autodetect]
+ --disable-liba52-internal disable builtin liba52 [autodetect]
--disable-libmpeg2 disable builtin libmpeg2 [autodetect]
--disable-musepack disable musepack support [autodetect]
--disable-libamr_nb disable libamr narrowband [autodetect]
@@ -574,7 +575,8 @@
_speex=auto
_theora=auto
_mp3lib=yes
-_liba52=yes
+_liba52=auto
+_liba52_internal=auto
_libdca=auto
_libmpeg2=auto
_faad=auto
@@ -938,6 +940,8 @@
--disable-theora) _theora=no ;;
--enable-mp3lib) _mp3lib=yes ;;
--disable-mp3lib) _mp3lib=no ;;
+ --enable-liba52-internal) _liba52_internal=yes ;;
+ --disable-liba52-internal) _liba52_internal=no ;;
--enable-liba52) _liba52=yes ;;
--disable-liba52) _liba52=no ;;
--enable-libdca) _libdca=yes ;;
@@ -6068,10 +6072,33 @@
fi
echores "$_mp3lib"
-echocheck "internal liba52 support"
+echocheck "liba52 support"
+if test "$_liba52_internal" = auto ; then
+ _liba52_internal=yes
+elif test "$_liba52_internal" = no && test "$_liba52" = auto ; then
+ _liba52=no
+ cat > $TMPC << EOF
+#include <inttypes.h>
+#include <a52dec/a52.h>
+int main(void) { a52_state_t *testHand; testHand=a52_init(0); return 0; }
+EOF
+ cc_check -la52 && _liba52=yes
+fi
+if test "$_liba52_internal" = yes ; then
+ _def_liba52_internal="#define CONFIG_LIBA52_INTERNAL 1"
+ _res_comment="internal"
+ _liba52=yes
+elif test "$_liba52" = yes ; then
+ _ld_extra="$_ld_extra -la52"
+ _res_comment="external"
+ _liba52=yes
+else
+ _def_liba52_internal="#undef CONFIG_LIBA52_INTERNAL"
+ _liba52=no
+fi
if test "$_liba52" = yes ; then
_def_liba52='#define CONFIG_LIBA52 1'
- _codecmodules="liba52 $_codecmodules"
+ _codecmodules="liba52($_res_comment) $_codecmodules"
else
_def_liba52='#undef CONFIG_LIBA52'
_nocodecmodules="liba52 $_nocodecmodules"
@@ -7824,6 +7851,7 @@
#internal libraries
LIBA52 = $_liba52
+LIBA52_INTERNAL = $_liba52_internal
LIBMPEG2 = $_libmpeg2
MP3LIB = $_mp3lib
TREMOR_INTERNAL = $_tremor_internal
@@ -8367,6 +8395,9 @@
/* Use codec libs included in mplayer CVS / source dist: */
$_def_mp3lib
+
+/* enable liba52 support */
+$_def_liba52_internal
$_def_liba52
$_def_libmpeg2
More information about the MPlayer-dev-eng
mailing list