[FFmpeg-devel] [PATCH] Refactor OBJS handling in libavcodec/Makefile

Diego Biurrun diego
Sat Jul 11 10:22:38 CEST 2009


On Sat, Jul 11, 2009 at 12:21:31AM +0100, M?ns Rullg?rd wrote:
> Diego Biurrun <diego at biurrun.de> writes:
> 
> > On Thu, Jul 09, 2009 at 12:24:04PM +0100, M?ns Rullg?rd wrote:
> >> Diego Biurrun <diego at biurrun.de> writes:
> >> 
> >> > On Thu, Jul 09, 2009 at 11:15:17AM +0100, M?ns Rullg?rd wrote:
> >> >> Diego Biurrun <diego at biurrun.de> writes:
> >> >> 
> >> >> > On Thu, Jul 09, 2009 at 01:18:13AM +0100, M?ns Rullg?rd wrote:
> >> >> >> Diego Biurrun <diego at biurrun.de> writes:
> >> >> >> 
> >> >> >> > We currently duplicate a lot in the OBJS lines in libavcodec/Makefile.
> >> >> >> > Here is an attempt to refactor this somewhat by grouping common OBJS
> >> >> >> > into variables.
> >> >> >> >
> >> >> >> > I'm sure this could be improved further.  Currently the grouping is
> >> >> >> > somewhat arbitrary.  Better suggestions are welcome.
> >> >> >> >
> >> >> >> > --- libavcodec/Makefile	(revision 19378)
> >> >> >> > +++ libavcodec/Makefile	(working copy)
> >> >> >> > @@ -5,6 +5,16 @@
> >> >> >> >  
> >> >> >> > +MPEG_OBJS     = motion_est.o ratecontrol.o mpeg12data.o mpegvideo.o
> >> >> >> > +MPEG_DEC_OBJS = mpeg12data.o mpegvideo.o error_resilience.o
> >> >> >> > +MPEG_ENC_OBJS = mpegvideo_enc.o $(MPEG_OBJS)
> >> >> >> > +MPEG_ENC_ERROR_OBJS = error_resilience.o $(MPEG_ENC_OBJS)
> >> >> >> > +
> >> >> >> > +H263_OBJS     = h263.o $(MPEG_DEC_OBJS)
> >> >> >> > +H264_OBJS     = h264idct.o h264pred.o cabac.o mpegvideo.o error_resilience.o
> >> >> >> > +VC1_OBJS      = vc1.o vc1data.o msmpeg4data.o h263dec.o h263.o intrax8.o error_resilience.o mpegvideo.o msmpeg4.o
> >> >> >> > +VC1_DSP_OBJS  = vc1dsp.o intrax8dsp.o $(VC1_OBJS)
> >> >> >> 
> >> >> >> How did you arrive at this list?  Did you analyse inter-object
> >> >> >> dependencies or just guess?
> >> >> >
> >> >> > I looked at places where long lists of OBJS where duplicated and
> >> >> > eliminated those.
> >> >> 
> >> >> That's not good enough.
> >> >
> >> > What is the shortcoming of my approch and what is your alternative
> >> > suggestion?
> >> 
> >> Check which object files really depend on each other, and group those
> >> together.
> >
> > And then declare dependencies for them separately?  As in (to pick an
> > arbitrary example that is probably wrong):
> >
> > mpegvideo.o: error_resilience.o
> >
> > ?
> 
> No, that's not what I meant.

Then please explain your suggestion again.

> >> >> > Notice that an alternative would be to have some decoders depend on
> >> >> > others.  For example, the vc1_vdpau decoder could be made to depend on
> >> >> > the vc1 decoder in configure.  Then it would not need to duplicate the
> >> >> > OBJS list.  However, this is not currently possible in configure.
> >> >> 
> >> >> Why not?  Is vc1_vdpau_decoder_deps=vc1_decoder not enough?
> >> >
> >> > No, if you run
> >> >
> >> >   configure --disable-decoders --enable-decoder=vc1_vdpau
> >> >
> >> > no decoders are enabled.
> >> 
> >> I can fix that.  Give me a moment.
> >
> > Moment granted :)
> 
> Sorry, higher priority things got in the way.  Give me a moment
> with no girls present (and me awake) ;-)

I repeat: Moment granted :)

Diego



More information about the ffmpeg-devel mailing list