summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2011-07-04 13:28:37 +0200
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2011-07-30 18:30:07 +0200
commit45f9e053d8bf15ed0417155e57d16d1fdce0446e (patch)
tree2ce24d3b68de1e07dc3c1f654ac3ce0377870432
parent61d55fda2b513caf18e37b27aba680a87840904a (diff)
vf_crop: add support for a, dar, sar, hsub, and vsub variables
Consistent with the pad and scale filters.
-rw-r--r--doc/filters.texi13
-rw-r--r--libavfilter/avfilter.h2
-rw-r--r--libavfilter/vf_crop.c15
3 files changed, 29 insertions, 1 deletions
diff --git a/doc/filters.texi b/doc/filters.texi
index 2e419a8edf..68a82b79e8 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -275,6 +275,19 @@ the output (cropped) width and heigth
@item ow, oh
same as @var{out_w} and @var{out_h}
+@item a
+same as @var{iw} / @var{ih}
+
+@item sar
+input sample aspect ratio
+
+@item dar
+input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
+
+@item hsub, vsub
+horizontal and vertical chroma subsample values. For example for the
+pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
+
@item n
the number of input frame, starting from 0
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 6746176c0d..1f26654559 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -30,7 +30,7 @@
#define LIBAVFILTER_VERSION_MAJOR 2
#define LIBAVFILTER_VERSION_MINOR 27
-#define LIBAVFILTER_VERSION_MICRO 4
+#define LIBAVFILTER_VERSION_MICRO 5
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
diff --git a/libavfilter/vf_crop.c b/libavfilter/vf_crop.c
index b9c60cb65b..fb084041ab 100644
--- a/libavfilter/vf_crop.c
+++ b/libavfilter/vf_crop.c
@@ -40,6 +40,11 @@ static const char *var_names[] = {
"in_h", "ih", ///< height of the input video
"out_w", "ow", ///< width of the cropped video
"out_h", "oh", ///< height of the cropped video
+ "a",
+ "sar",
+ "dar",
+ "hsub",
+ "vsub",
"x",
"y",
"n", ///< number of frame
@@ -56,6 +61,11 @@ enum var_name {
VAR_IN_H, VAR_IH,
VAR_OUT_W, VAR_OW,
VAR_OUT_H, VAR_OH,
+ VAR_A,
+ VAR_SAR,
+ VAR_DAR,
+ VAR_HSUB,
+ VAR_VSUB,
VAR_X,
VAR_Y,
VAR_N,
@@ -162,6 +172,11 @@ static int config_input(AVFilterLink *link)
crop->var_values[VAR_PI] = M_PI;
crop->var_values[VAR_IN_W] = crop->var_values[VAR_IW] = ctx->inputs[0]->w;
crop->var_values[VAR_IN_H] = crop->var_values[VAR_IH] = ctx->inputs[0]->h;
+ crop->var_values[VAR_A] = (float) link->w / link->h;
+ crop->var_values[VAR_SAR] = link->sample_aspect_ratio.num ? av_q2d(link->sample_aspect_ratio) : 1;
+ crop->var_values[VAR_DAR] = crop->var_values[VAR_A] * crop->var_values[VAR_SAR];
+ crop->var_values[VAR_HSUB] = 1<<pix_desc->log2_chroma_w;
+ crop->var_values[VAR_VSUB] = 1<<pix_desc->log2_chroma_h;
crop->var_values[VAR_X] = NAN;
crop->var_values[VAR_Y] = NAN;
crop->var_values[VAR_OUT_W] = crop->var_values[VAR_OW] = NAN;