[FFmpeg-cvslog] avfilter/src_avsynctest: add support for commands

Paul B Mahol git at videolan.org
Wed May 10 13:59:38 EEST 2023


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed May 10 12:14:48 2023 +0200| [dc1d4a8ece2ea3aa592ca1e38fad6e7a3562c4e7] | committer: Paul B Mahol

avfilter/src_avsynctest: add support for commands

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dc1d4a8ece2ea3aa592ca1e38fad6e7a3562c4e7
---

 doc/filters.texi             |  4 ++++
 libavfilter/src_avsynctest.c | 17 +++++++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 9fae135ec4..206fb23785 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -31253,6 +31253,10 @@ Set stream output duration. By default duration is unlimited.
 Set foreground/background/additional color.
 @end table
 
+ at subsection Commands
+
+This source supports the some above options as @ref{commands}.
+
 @anchor{movie}
 @section movie
 
diff --git a/libavfilter/src_avsynctest.c b/libavfilter/src_avsynctest.c
index cfdf1bc78e..a0fef7a1cb 100644
--- a/libavfilter/src_avsynctest.c
+++ b/libavfilter/src_avsynctest.c
@@ -67,6 +67,7 @@ typedef struct AVSyncTestContext {
 #define OFFSET(x) offsetof(AVSyncTestContext, x)
 #define A AV_OPT_FLAG_AUDIO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 #define V AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
+#define R AV_OPT_FLAG_RUNTIME_PARAM
 
 static const AVOption avsynctest_options[] = {
     {"size",       "set frame size",  OFFSET(w),            AV_OPT_TYPE_IMAGE_SIZE, {.str="hd720"},   0,   0, V },
@@ -75,14 +76,14 @@ static const AVOption avsynctest_options[] = {
     {"fr",         "set frame rate",  OFFSET(frame_rate),   AV_OPT_TYPE_VIDEO_RATE, {.str="30"},   0,INT_MAX, V },
     {"samplerate", "set sample rate", OFFSET(sample_rate),  AV_OPT_TYPE_INT,        {.i64=44100},8000,384000, A },
     {"sr",         "set sample rate", OFFSET(sample_rate),  AV_OPT_TYPE_INT,        {.i64=44100},8000,384000, A },
-    {"amplitude",  "set beep amplitude", OFFSET(amplitude), AV_OPT_TYPE_FLOAT,      {.dbl=.7},       0.,  1., A },
-    {"a",          "set beep amplitude", OFFSET(amplitude), AV_OPT_TYPE_FLOAT,      {.dbl=.7},       0.,  1., A },
+    {"amplitude",  "set beep amplitude", OFFSET(amplitude), AV_OPT_TYPE_FLOAT,      {.dbl=.7},       0.,  1., A|R },
+    {"a",          "set beep amplitude", OFFSET(amplitude), AV_OPT_TYPE_FLOAT,      {.dbl=.7},       0.,  1., A|R },
     {"period",     "set beep period", OFFSET(period),       AV_OPT_TYPE_INT,        {.i64=3},         1, 99., A },
     {"p",          "set beep period", OFFSET(period),       AV_OPT_TYPE_INT,        {.i64=3},         1, 99., A },
-    {"delay",      "set flash delay", OFFSET(delay),        AV_OPT_TYPE_INT,        {.i64=0},       -30,  30, V },
-    {"dl",         "set flash delay", OFFSET(delay),        AV_OPT_TYPE_INT,        {.i64=0},       -30,  30, V },
-    {"cycle",      "set delay cycle", OFFSET(cycle),        AV_OPT_TYPE_BOOL,       {.i64=0},         0,   1, V },
-    {"c",          "set delay cycle", OFFSET(cycle),        AV_OPT_TYPE_BOOL,       {.i64=0},         0,   1, V },
+    {"delay",      "set flash delay", OFFSET(delay),        AV_OPT_TYPE_INT,        {.i64=0},       -30,  30, V|R },
+    {"dl",         "set flash delay", OFFSET(delay),        AV_OPT_TYPE_INT,        {.i64=0},       -30,  30, V|R },
+    {"cycle",      "set delay cycle", OFFSET(cycle),        AV_OPT_TYPE_BOOL,       {.i64=0},         0,   1, V|R },
+    {"c",          "set delay cycle", OFFSET(cycle),        AV_OPT_TYPE_BOOL,       {.i64=0},         0,   1, V|R },
     {"duration",   "set duration",    OFFSET(duration),     AV_OPT_TYPE_DURATION,   {.i64=0},         0, INT64_MAX, V|A },
     {"d",          "set duration",    OFFSET(duration),     AV_OPT_TYPE_DURATION,   {.i64=0},         0, INT64_MAX, V|A },
     {"fg",         "set foreground color", OFFSET(rgba[0]), AV_OPT_TYPE_COLOR,      {.str="white"},   0,   0, V },
@@ -278,6 +279,9 @@ static int video_frame(AVFilterLink *outlink)
     int64_t delta, temp, intpart;
     AVFrame *out;
 
+    if (!s->cycle)
+        s->vdelay = av_make_q(s->delay, 1);
+
     delta = av_rescale_q(s->apts, s->frame_rate, av_make_q(s->sample_rate, 1)) - s->vpts;
     if (delta < 0)
         return 1;
@@ -401,4 +405,5 @@ const AVFilter ff_avsrc_avsynctest = {
     .activate      = activate,
     FILTER_OUTPUTS(avsynctest_outputs),
     FILTER_QUERY_FUNC(query_formats),
+    .process_command = ff_filter_process_command,
 };



More information about the ffmpeg-cvslog mailing list