[FFmpeg-devel] [PATCH 4/8] lavu/opt: extend AVOptionRange by second value
Michael Niedermayer
michaelni at gmx.at
Sat Mar 29 21:24:50 CET 2014
On Sat, Mar 29, 2014 at 07:06:28PM +0100, Lukasz Marek wrote:
> >> opt.c | 33 ++++++++++++++++++++++++---------
> >> opt.h | 13 +++++++++++--
> >> 2 files changed, 35 insertions(+), 11 deletions(-)
> >>e560f163c6f61b5819e9f382615877e0bdfe12fe 0001-lavu-opt-extend-AVOptionRange-by-extra-values.patch
> >> From 702508c0c97812ed72deaa133140291fe3637196 Mon Sep 17 00:00:00 2001
> >>From: Lukasz Marek <lukasz.m.luki at gmail.com>
> >>Date: Sat, 22 Feb 2014 23:32:57 +0100
> >>Subject: [PATCH] lavu/opt: extend AVOptionRange by extra values
> >>
> >>TODO: micro bump
> >>
> >>AVOptionRange is not flexible enough to store AV_OPT_TYPE_IMAGE_SIZE
> >>ranges. Current implementation can only store pixel count.
> >>This patch aims to keep backward compatibility and extend
> >>AVOptionRange with possibility to store width/height ranges.
> >>
> >>Signed-off-by: Lukasz Marek <lukasz.m.luki at gmail.com>
> >>---
> >> libavutil/opt.c | 33 ++++++++++++++++++++++++---------
> >> libavutil/opt.h | 13 +++++++++++--
> >> 2 files changed, 35 insertions(+), 11 deletions(-)
> >>
> >>diff --git a/libavutil/opt.c b/libavutil/opt.c
> >>index 652a2dd..77d20b9 100644
> >>--- a/libavutil/opt.c
> >>+++ b/libavutil/opt.c
> >>@@ -1511,6 +1511,7 @@ void *av_opt_ptr(const AVClass *class, void *obj, const char *name)
> >>
> >> int av_opt_query_ranges(AVOptionRanges **ranges_arg, void *obj, const char *key, int flags)
> >> {
> >>+ int ret, i;
> >> const AVClass *c = *(AVClass**)obj;
> >> int (*callback)(AVOptionRanges **, void *obj, const char *key, int flags) = NULL;
> >>
> >>@@ -1520,7 +1521,14 @@ int av_opt_query_ranges(AVOptionRanges **ranges_arg, void *obj, const char *key,
> >> if (!callback)
> >> callback = av_opt_query_ranges_default;
> >>
> >>- return callback(ranges_arg, obj, key, flags);
> >>+ ret = callback(ranges_arg, obj, key, flags);
> >>+ if (ret >= 0) {
> >>+ if (!(flags & AV_OPT_MULTI_COMPINENT_RANGE))
> >>+ ret = 1;
> >
> >>+ for (i = 0; i < ret; i++)
> >>+ (*ranges_arg)[i].nb_components = ret;
> >
> >doesnt this depends on sizeof(AVOptionRanges) ?
> >sizeof(AVOptionRanges) is not and cannot be part of the public ABI
> >so iam not sure how this can be accessed by a user
>
> Yes, it does depend on sizeof(AVOptionRanges)
>
> >> /**
> >>+ * Allows av_opt_query_ranges and av_opt_query_ranges_default to return more than
> >>+ * one instance of AVOptionRanges.
> >>+ */
> >>+#define AV_OPT_MULTI_COMPINENT_RANGE 0x0004
> >
> >what is a compInent ?
> >also how and where were the ranges defined for multi component options
> >before?
> >If there where not defined at all then a change is possibly not a
> >API/ABI break and this can be simplified away
>
> It is not documented yet.
>
> >also what do multiple component ranges mean exactly?
> >range1: 320,640
> >range2: 240,480
> >
> >means 320x240 || 640x480
> >or
> >means 320x240 || 320x480 || 640x240 || 640x480
> >(this should be documented, and one of these looks insufficient)
>
> I have first option in mind. Each AVOptionRanges must have the same
> value on nb_ranges. So valid ranges are:
>
> { AVOptionRanges[0].range[0], AVOptionRanges[1].range[0], ... },
> { AVOptionRanges[0].range[1], AVOptionRanges[1].range[1], ... },
> ...
>
> Please elaborate, because it don't know what case you have in mind
> this time.
this one should work, yes
>
> >also you can put any N-Dimensional array in a 1d array like:
> >ranges[component*nb_ranges + range] or
> >ranges[componen + range*nb_components]
>
> This may help to get rid of sizeof(AVOptionRanges) dependency,
> thanks for hint.
>
> I will fix it somehow, but please answer for question above.
>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
--
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: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140329/e1c6d401/attachment.asc>
More information about the ffmpeg-devel
mailing list