I hope this should reduce the confusion about display aspect ratios in the 
overscan case

Signed-off-by: Michael Niedermayer <michae...@gmx.at>
---
 libavcodec/utils.c |   29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 7b6677f..b8b7ced 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -2992,9 +2992,36 @@ void avpriv_aspect_string(char *buf, int buf_size, 
AVRational sar,
               height * sar.den,
               1024 * 1024);
 
+    if (overscan) {
+        AVRational dar1 = dar;
+
+        if (width == 720) {
+            av_reduce(&dar1.num, &dar1.den,
+                      704L * sar.num,
+                      height * sar.den,
+                      1024 * 1024);
+        } else if (width == 480) {
+            av_reduce(&dar1.num, &dar1.den,
+                      1407L * sar.num,
+                      height * 3L * sar.den,
+                      1024 * 1024);
+        } else if (overscan < 0)
+            overscan = 0;
+
+
+        if (overscan == 1 ||
+            !av_cmp_q(dar1, (AVRational){4, 3}) ||
+            !av_cmp_q(dar1, (AVRational){16, 9})
+           ) {
+            dar = dar1;
+        } else
+            overscan = 0;
+    }
+
     snprintf(buf, buf_size,
-             "SAR %d:%d DAR %d:%d",
+             "SAR %d:%d DAR%s %d:%d",
              sar.num, sar.den,
+             overscan ? "(overscan)" : "",
              dar.num, dar.den);
 }
 
-- 
1.7.9.5

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to