ffplay&cmdutils:Factor get_rotation() code out
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 3 May 2015 21:49:16 +0000 (23:49 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 3 May 2015 21:49:16 +0000 (23:49 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
cmdutils.c
cmdutils.h
ffplay.c

index 5a18cd56531cf71fdf43ce7ecbb9df080fa8fd95..d5a2cbea6b26c7ed710195d63c39b802b76f5869 100644 (file)
@@ -41,6 +41,7 @@
 #include "libavutil/avassert.h"
 #include "libavutil/avstring.h"
 #include "libavutil/bprint.h"
+#include "libavutil/display.h"
 #include "libavutil/mathematics.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/parseutils.h"
@@ -2229,4 +2230,26 @@ int show_sinks(void *optctx, const char *opt, const char *arg)
     av_log_set_level(error_level);
     return ret;
 }
+
+double get_rotation(AVStream *st)
+{
+    AVDictionaryEntry *rotate_tag = av_dict_get(st->metadata, "rotate", NULL, 0);
+    uint8_t* displaymatrix = av_stream_get_side_data(st,
+                                                     AV_PKT_DATA_DISPLAYMATRIX, NULL);
+    double theta = 0;
+
+    if (rotate_tag && *rotate_tag->value && strcmp(rotate_tag->value, "0")) {
+        char *tail;
+        theta = av_strtod(rotate_tag->value, &tail);
+        if (*tail)
+            theta = 0;
+    }
+    if (displaymatrix && !theta)
+        theta = av_display_rotation_get((int32_t*) displaymatrix);
+
+    theta -= 360*floor(theta/360 + 0.9/360);
+
+    return theta;
+}
+
 #endif
index f6ad44ca40b1a04a41e3306c4c4ec5acd4db34cb..a21ce35fa8556aceffa4cf7e91ee0caf9495afa4 100644 (file)
@@ -597,4 +597,6 @@ void *grow_array(void *array, int elem_size, int *size, int new_size);
     char name[128];\
     av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);
 
+double get_rotation(AVStream *st);
+
 #endif /* CMDUTILS_H */
index eea00e6e1465368878312d29cb4f105c83ff43f9..9ce13d71fbdec8effd5749d73175c166d4e9b6f6 100644 (file)
--- a/ffplay.c
+++ b/ffplay.c
@@ -32,7 +32,6 @@
 
 #include "libavutil/avstring.h"
 #include "libavutil/colorspace.h"
-#include "libavutil/display.h"
 #include "libavutil/eval.h"
 #include "libavutil/mathematics.h"
 #include "libavutil/pixdesc.h"
@@ -2018,21 +2017,7 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
     INSERT_FILT("crop", "floor(in_w/2)*2:floor(in_h/2)*2");
 
     if (autorotate) {
-        AVDictionaryEntry *rotate_tag = av_dict_get(is->video_st->metadata, "rotate", NULL, 0);
-        uint8_t* displaymatrix = av_stream_get_side_data(is->video_st,
-                                                         AV_PKT_DATA_DISPLAYMATRIX, NULL);
-        double theta = 0;
-
-        if (rotate_tag && *rotate_tag->value && strcmp(rotate_tag->value, "0")) {
-            char *tail;
-            theta = av_strtod(rotate_tag->value, &tail);
-            if (*tail)
-                theta = 0;
-        }
-        if (displaymatrix && !theta)
-            theta = av_display_rotation_get((int32_t*) displaymatrix);
-
-        theta -= 360*floor(theta/360 + 0.9/360);
+        double theta  = get_rotation(is->video_st);
 
         if (fabs(theta - 90) < 1.0) {
             INSERT_FILT("transpose", "clock");