[FFmpeg-devel] [PATCH] options: mark av_get_{int, double, q} as deprecated.

Michael Niedermayer michael at niedermayer.cc
Mon Aug 17 12:40:20 CEST 2015


On Sun, Aug 16, 2015 at 05:45:55PM -0400, Ronald S. Bultje wrote:
> Hi,
> 
> On Sun, Aug 16, 2015 at 5:24 PM, Andreas Cadhalpun <
> andreas.cadhalpun at googlemail.com> wrote:
> 
> > On 16.08.2015 22:15, Ronald S. Bultje wrote:
> > > Convert last users to av_opt_get_*() counterparts.
> > > ---
> > >  libavfilter/af_aresample.c | 17 +++++++++--------
> > >  libavutil/opt.h            |  3 +++
> > >  2 files changed, 12 insertions(+), 8 deletions(-)
> >
> > I'm fine with this, but the patch is incomplete:
> > libavfilter/x86/vf_spp.c also uses av_get_int.
> > Furthermore the FF_OPT_TYPE_* defines are used in several places.
> 
> 
> Yes I noticed the last one in vf_spp.c, I missed it (don't know how), have
> it locally amended. I'm working on FF_OPT_TYPE_* separately (I'm doing one
> deprecation macro at a time).
> 

> Some really are a mess, Michael can you comment on how on earth you could
> consider adding av_stream_get_end_pts as a replacement for AVFrac without
> deeply frowning at yourself? Can you take some time and fix that correctly?

AVFrac is used to exactly compute timestamps, that is when you have
a timebase a/b in which timestamps are stored (1/1000000 or 1/90000 or
whatever) and frame durations which are not multiples of that like
25000/1001.
If you would convert frame durations into the timebase for the
timestamps and sum them up you would quickly accumulate rounding
errors.
One could use doubles but that would not be bitexact nor exact either
AVFrac uses a 64bit denominator to represent accumulated
durations starting from a timestamp exactly.
AVRational is 32/32bit so it cannot 1:1 replace AVFrac.
Like with everything, of course the code using AVFrac could be
implemented differently. Iam happy to help testing if someone
suceeds in simplifying the code

also i belive there are other places in our codebase which do similar
durations accumulation and which do suffer from accumulation of
rounding errors.


> I also don't know what to do about codec-specific qscales in the pp
> avfilters.

the qscale table and the type of qscale needs to be passed to the
postprocessing filter
The obvious two ways to achive that are a AVFrame field, or side data.
If people dislike how its done currently, by all means, change it!
I can probably help testing the new implementation

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Democracy is the form of government in which you can choose your dictator
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150817/d5c1ddf7/attachment.sig>


More information about the ffmpeg-devel mailing list