#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"
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
char name[128];\
av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);
+double get_rotation(AVStream *st);
+
#endif /* CMDUTILS_H */
#include "libavutil/avstring.h"
#include "libavutil/colorspace.h"
-#include "libavutil/display.h"
#include "libavutil/eval.h"
#include "libavutil/mathematics.h"
#include "libavutil/pixdesc.h"
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");