[FFmpeg-cvslog] lavfi/volume_justin: add support to option shorthands and introspection
Stefano Sabatini
git at videolan.org
Sat Dec 8 15:30:04 CET 2012
ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Sat Dec 8 11:58:52 2012 +0100| [769546631ca089f5ae7e8061a78cd5a7a29a5d67] | committer: Stefano Sabatini
lavfi/volume_justin: add support to option shorthands and introspection
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=769546631ca089f5ae7e8061a78cd5a7a29a5d67
---
doc/filters.texi | 8 +++++++-
libavfilter/af_volume_justin.c | 28 +++++++++++-----------------
libavfilter/version.h | 2 +-
3 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index 9e0c041..cb2c899 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -923,7 +923,13 @@ raising it by +5 dB causes clipping for 6 samples, etc.
Adjust the input audio volume.
-The filter accepts the following named parameters:
+The filter accepts the following named parameters. If the key of the
+first options is omitted, the arguments are interpreted according to
+the following syntax:
+ at example
+drawbox=@var{volume}:@var{precision}
+ at end example
+
@table @option
@item volume
diff --git a/libavfilter/af_volume_justin.c b/libavfilter/af_volume_justin.c
index 0f45a9e..0ba466a 100644
--- a/libavfilter/af_volume_justin.c
+++ b/libavfilter/af_volume_justin.c
@@ -41,37 +41,32 @@ static const char *precision_str[] = {
#define OFFSET(x) offsetof(VolumeContext, x)
#define A AV_OPT_FLAG_AUDIO_PARAM
+#define F AV_OPT_FLAG_FILTERING_PARAM
-static const AVOption options[] = {
+static const AVOption volume_options[] = {
{ "volume", "set volume adjustment",
- OFFSET(volume), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 }, 0, 0x7fffff, A },
+ OFFSET(volume), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 }, 0, 0x7fffff, A|F },
{ "precision", "select mathematical precision",
- OFFSET(precision), AV_OPT_TYPE_INT, { .i64 = PRECISION_FLOAT }, PRECISION_FIXED, PRECISION_DOUBLE, A, "precision" },
- { "fixed", "select 8-bit fixed-point", 0, AV_OPT_TYPE_CONST, { .i64 = PRECISION_FIXED }, INT_MIN, INT_MAX, A, "precision" },
- { "float", "select 32-bit floating-point", 0, AV_OPT_TYPE_CONST, { .i64 = PRECISION_FLOAT }, INT_MIN, INT_MAX, A, "precision" },
- { "double", "select 64-bit floating-point", 0, AV_OPT_TYPE_CONST, { .i64 = PRECISION_DOUBLE }, INT_MIN, INT_MAX, A, "precision" },
+ OFFSET(precision), AV_OPT_TYPE_INT, { .i64 = PRECISION_FLOAT }, PRECISION_FIXED, PRECISION_DOUBLE, A|F, "precision" },
+ { "fixed", "select 8-bit fixed-point", 0, AV_OPT_TYPE_CONST, { .i64 = PRECISION_FIXED }, INT_MIN, INT_MAX, A|F, "precision" },
+ { "float", "select 32-bit floating-point", 0, AV_OPT_TYPE_CONST, { .i64 = PRECISION_FLOAT }, INT_MIN, INT_MAX, A|F, "precision" },
+ { "double", "select 64-bit floating-point", 0, AV_OPT_TYPE_CONST, { .i64 = PRECISION_DOUBLE }, INT_MIN, INT_MAX, A|F, "precision" },
{ NULL },
};
-static const AVClass volume_class = {
- .class_name = "volume filter",
- .item_name = av_default_item_name,
- .option = options,
- .version = LIBAVUTIL_VERSION_INT,
-};
+AVFILTER_DEFINE_CLASS(volume);
static av_cold int init(AVFilterContext *ctx, const char *args)
{
VolumeContext *vol = ctx->priv;
+ static const char *shorthand[] = { "volume", "precision", NULL };
int ret;
vol->class = &volume_class;
av_opt_set_defaults(vol);
- if ((ret = av_set_options_string(vol, args, "=", ":")) < 0) {
- av_log(ctx, AV_LOG_ERROR, "Error parsing options string '%s'.\n", args);
+ if ((ret = av_opt_set_from_string(vol, args, shorthand, "=", ":")) < 0)
return ret;
- }
if (vol->precision == PRECISION_FIXED) {
vol->volume_i = (int)(vol->volume * 256 + 0.5);
@@ -182,8 +177,6 @@ static inline void scale_samples_s32(uint8_t *dst, const uint8_t *src,
smp_dst[i] = av_clipl_int32((((int64_t)smp_src[i] * volume + 128) >> 8));
}
-
-
static void volume_init(VolumeContext *vol)
{
vol->samples_align = 1;
@@ -314,4 +307,5 @@ AVFilter avfilter_af_volume_justin = {
.init = init,
.inputs = avfilter_af_volume_inputs,
.outputs = avfilter_af_volume_outputs,
+ .priv_class = &volume_class,
};
diff --git a/libavfilter/version.h b/libavfilter/version.h
index 04ae6dc..68a3543 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -30,7 +30,7 @@
#define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR 25
-#define LIBAVFILTER_VERSION_MICRO 101
+#define LIBAVFILTER_VERSION_MICRO 102
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
More information about the ffmpeg-cvslog
mailing list