aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPoorvaGaikar <pbgaikar_b21@el.vjti.ac.in>2024-03-09 00:27:25 +0530
committerMarton Balint <cus@passwd.hu>2024-05-08 21:33:32 +0200
commit8b6e66d0f0107ff8121e56a7f9efea2b5f2a9dde (patch)
tree8dc0fa325d21d190428922021fca4320c237d5e9
parent9e674b31606c805dd31b4bb754364a72a5877238 (diff)
downloadffmpeg-8b6e66d0f0107ff8121e56a7f9efea2b5f2a9dde.tar.gz
avfilter/f_select.c: add support for iw and ih variables
Fixes ticket #10509. Signed-off-by: Marton Balint <cus@passwd.hu>
-rw-r--r--doc/filters.texi6
-rw-r--r--libavfilter/f_select.c12
2 files changed, 18 insertions, 0 deletions
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.
+@item iw @emph{(video only)}
+Represents the width of the input video frame.
+
+@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;