You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	ffplay&cmdutils:Factor get_rotation() code out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
							
								
								
									
										23
									
								
								cmdutils.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								cmdutils.c
									
									
									
									
									
								
							| @@ -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 | ||||
|   | ||||
| @@ -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 */ | ||||
|   | ||||
							
								
								
									
										17
									
								
								ffplay.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								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"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user