[FFmpeg-devel] [PATCH]lavc/exr: Move setting SAR down

Carl Eugen Hoyos cehoyos at ag.or.at
Wed Jan 27 10:41:12 CET 2016


Hi!

Calling ff_set_sar() before a resolution is set leads to no 
aspect ratio being set. I did not find anything in the exr 
specification that requires an order of attributes, so move 
the call down to ensure it is never called before resolution 
was set.

Please comment, Carl Eugen
-------------- next part --------------
diff --git a/libavcodec/exr.c b/libavcodec/exr.c
index c8c758e..9ec99d6 100644
--- a/libavcodec/exr.c
+++ b/libavcodec/exr.c
@@ -1030,7 +1030,7 @@ static int check_header_variable(EXRContext *s,
 static int decode_header(EXRContext *s)
 {
     int current_channel_offset = 0;
-    int magic_number, version, flags, i;
+    int magic_number, version, flags, i, sar = 0;
 
     s->xmin               = ~0;
     s->xmax               = ~0;
@@ -1227,8 +1227,7 @@ static int decode_header(EXRContext *s)
             if (!var_size)
                 return AVERROR_INVALIDDATA;
 
-            ff_set_sar(s->avctx,
-                       av_d2q(av_int2float(bytestream2_get_le32(&s->gb)), 255));
+            sar = bytestream2_get_le32(&s->gb);
 
             continue;
         } else if ((var_size = check_header_variable(s, "compression",
@@ -1259,6 +1258,8 @@ static int decode_header(EXRContext *s)
         bytestream2_skip(&s->gb, bytestream2_get_le32(&s->gb));
     }
 
+    ff_set_sar(s->avctx, av_d2q(av_int2float(sar), 255));
+
     if (s->compression == EXR_UNKN) {
         av_log(s->avctx, AV_LOG_ERROR, "Missing compression attribute.\n");
         return AVERROR_INVALIDDATA;


More information about the ffmpeg-devel mailing list