diff mbox

[FFmpeg-devel,3/6] avformat/gifdec: export sample aspect ratio

Message ID 20181212163257.9109-3-onemda@gmail.com
State Accepted
Commit 80f0f8660c8febab6c79bd6d4799bffb0b9802e5
Headers show

Commit Message

Paul B Mahol Dec. 12, 2018, 4:32 p.m. UTC
Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
 libavformat/gifdec.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/libavformat/gifdec.c b/libavformat/gifdec.c
index 8993ca615c..1f3ac8d8d9 100644
--- a/libavformat/gifdec.c
+++ b/libavformat/gifdec.c
@@ -99,7 +99,7 @@  static int gif_read_header(AVFormatContext *s)
     GIFDemuxContext *gdc = s->priv_data;
     AVIOContext     *pb  = s->pb;
     AVStream        *st;
-    int width, height, ret;
+    int width, height, ret, n;
 
     if ((ret = resync(pb)) < 0)
         return ret;
@@ -107,6 +107,8 @@  static int gif_read_header(AVFormatContext *s)
     gdc->delay  = gdc->default_delay;
     width  = avio_rl16(pb);
     height = avio_rl16(pb);
+    avio_skip(pb, 2);
+    n      = avio_r8(pb);
 
     if (width == 0 || height == 0)
         return AVERROR_INVALIDDATA;
@@ -122,6 +124,10 @@  static int gif_read_header(AVFormatContext *s)
     st->codecpar->codec_id   = AV_CODEC_ID_GIF;
     st->codecpar->width      = width;
     st->codecpar->height     = height;
+    if (n) {
+        st->codecpar->sample_aspect_ratio.num = n + 15;
+        st->codecpar->sample_aspect_ratio.den = 64;
+    }
 
     /* jump to start because gif decoder needs header data too */
     if (avio_seek(pb, 0, SEEK_SET) != 0)