[MPlayer-dev-eng] [PATCH] external liba52 support

Dominik 'Rathann' Mierzejewski dominik at rangers.eu.org
Sat Sep 13 23:24:50 CEST 2008


On Saturday, 13 September 2008 at 22:11, Diego Biurrun wrote:
> On Sat, Sep 13, 2008 at 04:00:26PM +0200, Dominik 'Rathann' Mierzejewski wrote:
> > 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?
> 
> Some small comments below, the rest is OK from me.
> 
> > --- configure	(revision 27599)
> > +++ configure	(working copy)
> > @@ -6068,10 +6072,33 @@
> >  
> > +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
> 
> The last line is redundant, you have just checked that _liba52 is set to
> yes...

Fixed.

> > +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"
> 
> Ideally these two if blocks should be merged.  If you cannot do it
> quickly, leave it and commit, I will look into it later myself then.

Merged. Updated patch #2 attached.

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_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;
@@ -97,8 +101,10 @@
   sh_audio->a_in_buffer_len = length;
     
   // TODO: is DTS also checksummed?
+#ifdef CONFIG_LIBA52_INTERNAL
   if(isdts == 0 && 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;
 }
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,12 +6072,29 @@
 fi
 echores "$_mp3lib"
 
-echocheck "internal liba52 support"
+echocheck "liba52 support"
+if test "$_liba52_internal" = auto ; then
+  _liba52=yes
+  _liba52_internal=yes
+  _def_liba52_internal="#define CONFIG_LIBA52_INTERNAL 1"
+  _res_comment="internal"
+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
+  _ld_extra="$_ld_extra -la52"
+  _res_comment="external"
+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'
+  _def_liba52_internal="#undef CONFIG_LIBA52_INTERNAL"
   _nocodecmodules="liba52 $_nocodecmodules"
 fi
 echores "$_liba52"
@@ -7824,6 +7845,7 @@
 
 #internal libraries
 LIBA52 = $_liba52
+LIBA52_INTERNAL = $_liba52_internal
 LIBMPEG2 = $_libmpeg2
 MP3LIB = $_mp3lib
 TREMOR_INTERNAL = $_tremor_internal
@@ -8367,6 +8389,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