[FFmpeg-devel] [PATCH] deprecate SAMPLE_FMT_S24
Aurelien Jacobs
aurel
Thu Aug 21 16:43:48 CEST 2008
Peter Ross wrote:
> On Tue, Aug 19, 2008 at 03:31:52PM +0200, Michael Niedermayer wrote:
> > On Tue, Aug 19, 2008 at 10:29:32PM +1000, Peter Ross wrote:
> > > On Sun, Aug 17, 2008 at 05:10:39PM +0200, Michael Niedermayer wrote:
> > > > On Sun, Aug 17, 2008 at 04:37:49PM +0200, Aurelien Jacobs wrote:
> > > > > Michael Niedermayer wrote:
> > > > >
> > > > > > On Sun, Aug 17, 2008 at 03:32:30PM +0200, Aurelien Jacobs wrote:
> > > > > > > Peter Ross wrote:
> > > > > > >
> > > > > > > > This patch flags SAMPLE_FMT_S24 as deprecated.
> > > > > > >
> > >
> > > > bits_per_sample can NOT be used as SAMPLE_FMT_* bit count.
> > > > It has a different and docuented purpose, it describes the coded bitstream
> > > > and not the decoded samples, they match in bits only for lossless codecs.
> > > >
> > > > example:
> > > > the a demuxer sets bits_per_sample to 4 and passes the data to a ADPCM
> > > > decoder which has SAMPLE_FMT_S16 output with 13 significant bits the
> > > > last 3 being always 0
> > >
> > > Thanks for taking the time to explain this. Revised patch within.
> > >
> > > The proposed field make sense only for SAMPLE_FMT_S32. I've kept the language
> > > generic, as it will have future utility when FFmpeg can manipulate 12/16-bit
> > > luma planes.
> >
> > i think that maybe a
> > bits_per_coded_sample // the number of bits in which each sample is coded
> > and
> > bits_per_raw_sample // the number of bits in each PCM sample
>
> Yes. Non-ambiguity is a desirable property. Done.
Agree.
> > I wonder if anyone would complain if we just renamed bits_per_sample to
> > bits_per_coded_sample ? It doesnt break ABI, just API of apps accessing it
> > without AVOptions and apps really should be using AVOptions
>
> IMHO it should be guarded with an ifdef until the next major version bump.
> Patch enclosed.
I somewhat disagree here. Changing the field name don't breaks ABI, so no
need to make it conditional to version bump.
Instead you could just add a compatibility #define. See below patch
(hand edited, untested...)
Index: libavcodec/utils.c
===================================================================
--- libavcodec/utils.c (revision 14875)
+++ libavcodec/utils.c (working copy)
@@ -568,7 +568,10 @@
{"ec", "set error concealment strategy", OFFSET(error_concealment), FF_OPT_TYPE_FLAGS, 3, INT_MIN, INT_MAX, V|D, "ec"},
{"guess_mvs", "iterative motion vector (MV) search (slow)", 0, FF_OPT_TYPE_CONST, FF_EC_GUESS_MVS, INT_MIN, INT_MAX, V|D, "ec"},
{"deblock", "use strong deblock filter for damaged MBs", 0, FF_OPT_TYPE_CONST, FF_EC_DEBLOCK, INT_MIN, INT_MAX, V|D, "ec"},
+#if LIBAVCODEC_VERSION_MAJOR < 52
-{"bits_per_sample", NULL, OFFSET(bits_per_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
+{"bits_per_sample", NULL, OFFSET(bits_per_coded_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
+#endif
+{"bits_per_coded_sample", NULL, OFFSET(bits_per_coded_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
{"pred", "prediction method", OFFSET(prediction_method), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "pred"},
{"left", NULL, 0, FF_OPT_TYPE_CONST, FF_PRED_LEFT, INT_MIN, INT_MAX, V|E, "pred"},
{"plane", NULL, 0, FF_OPT_TYPE_CONST, FF_PRED_PLANE, INT_MIN, INT_MAX, V|E, "pred"},
Index: libavcodec/avcodec.h
===================================================================
--- libavcodec/avcodec.h (revision 14875)
+++ libavcodec/avcodec.h (working copy)
@@ -1430,7 +1430,10 @@
* - encoding: Set by libavcodec.
* - decoding: Set by user.
*/
- int bits_per_sample;
+#if LIBAVCODEC_VERSION_MAJOR < 52
+#define bits_per_sample bits_per_coded_sample
+#endif
+ int bits_per_coded_sample;
/**
* prediction method (needed for huffyuv)
Aurel
More information about the ffmpeg-devel
mailing list