---
 libavfilter/vf_showinfo.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c
index 031d8fe..71adc8d 100644
--- a/libavfilter/vf_showinfo.c
+++ b/libavfilter/vf_showinfo.c
@@ -25,6 +25,7 @@
 #include <inttypes.h>
 
 #include "libavutil/adler32.h"
+#include "libavutil/display.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/internal.h"
 #include "libavutil/pixdesc.h"
@@ -68,6 +69,34 @@ static void dump_stereo3d(AVFilterContext *ctx, 
AVFrameSideData *sd)
         av_log(ctx, AV_LOG_INFO, " (inverted)");
 }
 
+static void dump_transformation(AVFilterContext *ctx, AVFrameSideData *sd)
+{
+    AVRational scale, translation;
+    int rotation, hflip, vflip;
+    av_log(ctx, AV_LOG_INFO, "display transformation: ");
+
+    rotation = av_display_rotation_angle(sd->data);
+    if (rotation)
+        av_log(ctx, AV_LOG_INFO, "rotation of %d degrees ", rotation);
+
+    hflip = av_display_hflip(sd->data);
+    if (hflip)
+        av_log(ctx, AV_LOG_INFO, "horizontal flip ");
+
+    vflip = av_display_vflip(sd->data);
+    if (vflip)
+        av_log(ctx, AV_LOG_INFO, "vertical flip ");
+
+    translation = av_display_translation_factor(sd->data);
+    if (translation.num != 0 || translation.den != 0)
+        av_log(ctx, AV_LOG_INFO,
+               "translation of %d:%d ", translation.num, translation.den);
+
+    scale = av_display_scale_factor(sd->data);
+    if (scale.num != 1 || scale.den != 1)
+        av_log(ctx, AV_LOG_INFO, "scale of %d:%d", scale.num, scale.den);
+}
+
 static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 {
     AVFilterContext *ctx = inlink->dst;
@@ -117,6 +146,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame 
*frame)
         case AV_FRAME_DATA_STEREO3D:
             dump_stereo3d(ctx, sd);
             break;
+        case AV_FRAME_DATA_DISPLAYMATRIX:
+            dump_transformation(ctx, sd);
+            break;
         default:
             av_log(ctx, AV_LOG_WARNING, "unknown side data type %d (%d bytes)",
                    sd->type, sd->size);
-- 
1.8.3.4 (Apple Git-47)

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to