[FFmpeg-cvslog] vf_crop: add support for a, dar, sar, hsub, and vsub variables

Stefano Sabatini git at videolan.org
Sat Jul 30 19:00:45 CEST 2011


ffmpeg | branch: master | Stefano Sabatini <stefano.sabatini-lala at poste.it> | Mon Jul  4 13:28:37 2011 +0200| [45f9e053d8bf15ed0417155e57d16d1fdce0446e] | committer: Stefano Sabatini

vf_crop: add support for a, dar, sar, hsub, and vsub variables

Consistent with the pad and scale filters.

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

 doc/filters.texi       |   13 +++++++++++++
 libavfilter/avfilter.h |    2 +-
 libavfilter/vf_crop.c  |   15 +++++++++++++++
 3 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 2e419a8..68a82b7 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}
 
+ at item a
+same as @var{iw} / @var{ih}
+
+ at item sar
+input sample aspect ratio
+
+ at item dar
+input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
+
+ at 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 6746176..1f26654 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 b9c60cb..fb08404 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;



More information about the ffmpeg-cvslog mailing list