[FFmpeg-cvslog] avfilter/f_select.c: add support for iw and ih variables

PoorvaGaikar git at videolan.org
Wed May 8 23:17:29 EEST 2024


ffmpeg | branch: master | PoorvaGaikar <pbgaikar_b21 at el.vjti.ac.in> | Sat Mar  9 00:45:25 2024 +0530| [8b6e66d0f0107ff8121e56a7f9efea2b5f2a9dde] | committer: Marton Balint

avfilter/f_select.c: add support for iw and ih variables

Fixes ticket #10509.

Signed-off-by: Marton Balint <cus at passwd.hu>

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

 doc/filters.texi       |  6 ++++++
 libavfilter/f_select.c | 12 ++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/doc/filters.texi b/doc/filters.texi
index 595dc5044f..8230661261 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -30882,6 +30882,12 @@ missing.
 That basically means that an input frame is selected if its pts is within the
 interval set by the concat demuxer.
 
+ at item iw @emph{(video only)}
+Represents the width of the input video frame.
+
+ at item ih @emph{(video only)}
+Represents the height of the input video frame.
+
 @end table
 
 The default value of the select expression is "1".
diff --git a/libavfilter/f_select.c b/libavfilter/f_select.c
index 9b330a0673..7402d3169f 100644
--- a/libavfilter/f_select.c
+++ b/libavfilter/f_select.c
@@ -90,6 +90,9 @@ static const char *const var_names[] = {
 
     "concatdec_select",  ///< frame is within the interval set by the concat demuxer
 
+    "ih",                ///< ih: Represents the height of the input video frame.
+    "iw",                ///< iw: Represents the width of the input video frame.
+
     NULL
 };
 
@@ -144,6 +147,9 @@ enum var_name {
 
     VAR_CONCATDEC_SELECT,
 
+    VAR_IH,
+    VAR_IW,
+
     VAR_VARS_NB
 };
 
@@ -264,6 +270,9 @@ static int config_input(AVFilterLink *inlink)
     select->var_values[VAR_CONSUMED_SAMPLES_N] = NAN;
     select->var_values[VAR_SAMPLES_N]          = NAN;
 
+    select->var_values[VAR_IH] = NAN;
+    select->var_values[VAR_IW] = NAN;
+
     select->var_values[VAR_SAMPLE_RATE] =
         inlink->type == AVMEDIA_TYPE_AUDIO ? inlink->sample_rate : NAN;
 
@@ -357,6 +366,9 @@ FF_ENABLE_DEPRECATION_WARNINGS
         break;
 
     case AVMEDIA_TYPE_VIDEO:
+        select->var_values[VAR_IH] = frame->height;
+        select->var_values[VAR_IW] = frame->width;
+
         select->var_values[VAR_INTERLACE_TYPE] =
             !(frame->flags & AV_FRAME_FLAG_INTERLACED) ? INTERLACE_TYPE_P :
         (frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST) ? INTERLACE_TYPE_T : INTERLACE_TYPE_B;



More information about the ffmpeg-cvslog mailing list