diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2010-08-21 11:52:03 +0000 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2010-08-21 11:52:03 +0000 |
commit | a29b1700ee070e3d383ea58048f06d1916738f83 (patch) | |
tree | 5b1c4f1b61ddbe47b7b670bbbfebd976d53e253a /libavcodec/pgssubdec.c | |
parent | bf23eaf663cb250643a1efdbacbeb4e6aba01af7 (diff) | |
download | ffmpeg-a29b1700ee070e3d383ea58048f06d1916738f83.tar.gz |
Export the presentation video dimensions as avctx->width/avctx->height.
Originally committed as revision 24858 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/pgssubdec.c')
-rw-r--r-- | libavcodec/pgssubdec.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/libavcodec/pgssubdec.c b/libavcodec/pgssubdec.c index bda7665f54..545e48cfd6 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; } |