Просмотр исходного кода

Fix computation of the display aspect ratio.

Previously ffprobe was wrongly outputting the sample aspect ratio as
display aspect ratio.

Patch by Robert Krüger $(echo k-r-u-e-g-e-r@s-i-g-n-a-l-7.d-e | sed s/-//g).

Originally committed as revision 22880 to svn://svn.ffmpeg.org/ffmpeg/trunk
Robert Krüger 15 лет назад
Родитель
Сommit
d21b227818
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      ffprobe.c

+ 7 - 2
ffprobe.c

@@ -121,6 +121,7 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
     char val_str[128];
     AVMetadataTag *tag = NULL;
     char a, b, c, d;
+    AVRational display_aspect_ratio;
 
     printf("[STREAM]\n");
 
@@ -156,8 +157,12 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
             printf("has_b_frames=%d\n",            dec_ctx->has_b_frames);
             printf("sample_aspect_ratio=%d:%d\n",  dec_ctx->sample_aspect_ratio.num,
                                                    dec_ctx->sample_aspect_ratio.den);
-            printf("display_aspect_ratio=%d:%d\n", dec_ctx->sample_aspect_ratio.num,
-                                                   dec_ctx->sample_aspect_ratio.den);
+            av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den,
+                      dec_ctx->width*dec_ctx->sample_aspect_ratio.num,
+                      dec_ctx->height*dec_ctx->sample_aspect_ratio.den,
+                      1024*1024);
+            printf("display_aspect_ratio=%d:%d\n", display_aspect_ratio.num,
+                                                   display_aspect_ratio.den);
             printf("pix_fmt=%s\n",                 dec_ctx->pix_fmt != PIX_FMT_NONE ?
                    av_pix_fmt_descriptors[dec_ctx->pix_fmt].name : "unknown");
             break;