[SCM] libav/experimental: Export the presentation video dimensions as avctx->width/avctx->height.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:14:22 UTC 2013


The following commit has been merged in the experimental branch:
commit a29b1700ee070e3d383ea58048f06d1916738f83
Author: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
Date:   Sat Aug 21 11:52:03 2010 +0000

    Export the presentation video dimensions as avctx->width/avctx->height.
    
    Originally committed as revision 24858 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/pgssubdec.c b/libavcodec/pgssubdec.c
index bda7665..545e48c 100644
--- a/libavcodec/pgssubdec.c
+++ b/libavcodec/pgssubdec.c
@@ -28,6 +28,7 @@
 #include "dsputil.h"
 #include "bytestream.h"
 #include "libavutil/colorspace.h"
+#include "libavcore/imgutils.h"
 
 //#define DEBUG_PACKET_CONTENTS
 
@@ -44,8 +45,6 @@ enum SegmentType {
 typedef struct PGSSubPresentation {
     int x;
     int y;
-    int video_w;
-    int video_h;
     int id_number;
 } PGSSubPresentation;
 
@@ -186,7 +185,7 @@ static int parse_picture_segment(AVCodecContext *avctx,
     height = bytestream_get_be16(&buf);
 
     /* Make sure the bitmap is not too large */
-    if (ctx->presentation.video_w < width || ctx->presentation.video_h < height) {
+    if (avctx->width < width || avctx->height < height) {
         av_log(avctx, AV_LOG_ERROR, "Bitmap dimensions larger then video.\n");
         return -1;
     }
@@ -266,11 +265,13 @@ static void parse_presentation_segment(AVCodecContext *avctx,
     int x, y;
     uint8_t block;
 
-    ctx->presentation.video_w = bytestream_get_be16(&buf);
-    ctx->presentation.video_h = bytestream_get_be16(&buf);
+    int w = bytestream_get_be16(&buf);
+    int h = bytestream_get_be16(&buf);
 
     dprintf(avctx, "Video Dimensions %dx%d\n",
-            ctx->presentation.video_w, ctx->presentation.video_h);
+            w, h);
+    if (av_check_image_size(w, h, 0, avctx) >= 0)
+        avcodec_set_dimensions(avctx, w, h);
 
     /* Skip 1 bytes of unknown, frame rate? */
     buf++;
@@ -298,9 +299,9 @@ static void parse_presentation_segment(AVCodecContext *avctx,
 
         dprintf(avctx, "Subtitle Placement x=%d, y=%d\n", x, y);
 
-        if (x > ctx->presentation.video_w || y > ctx->presentation.video_h) {
+        if (x > avctx->width || y > avctx->height) {
             av_log(avctx, AV_LOG_ERROR, "Subtitle out of video bounds. x = %d, y = %d, video width = %d, video height = %d.\n",
-                   x, y, ctx->presentation.video_w, ctx->presentation.video_h);
+                   x, y, avctx->width, avctx->height);
             x = 0; y = 0;
         }
 

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list