diff options
Diffstat (limited to 'contrib/ffmpeg/A04-pgs-pts.patch')
-rw-r--r-- | contrib/ffmpeg/A04-pgs-pts.patch | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/contrib/ffmpeg/A04-pgs-pts.patch b/contrib/ffmpeg/A04-pgs-pts.patch deleted file mode 100644 index fe6a6dc93..000000000 --- a/contrib/ffmpeg/A04-pgs-pts.patch +++ /dev/null @@ -1,84 +0,0 @@ -diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h -index 102df3a..aa40c78 100644 ---- a/libavcodec/avcodec.h -+++ b/libavcodec/avcodec.h -@@ -3093,6 +3093,7 @@ typedef struct AVSubtitle { - unsigned num_rects; - AVSubtitleRect **rects; - int64_t pts; ///< Same as packet pts, in AV_TIME_BASE -+ uint8_t forced; - } AVSubtitle; - - /** -diff --git a/libavcodec/pgssubdec.c b/libavcodec/pgssubdec.c -index 3335412..3f14a2d 100644 ---- a/libavcodec/pgssubdec.c -+++ b/libavcodec/pgssubdec.c -@@ -45,6 +45,8 @@ typedef struct PGSSubPresentation { - int y; - int id_number; - int object_number; -+ uint8_t composition_flag; -+ int64_t pts; - } PGSSubPresentation; - - typedef struct PGSSubPicture { -@@ -271,7 +273,8 @@ static void parse_palette_segment(AVCodecContext *avctx, - * @todo TODO: Implement forcing of subtitles - */ - static void parse_presentation_segment(AVCodecContext *avctx, -- const uint8_t *buf, int buf_size) -+ const uint8_t *buf, int buf_size, -+ int64_t pts) - { - PGSSubContext *ctx = avctx->priv_data; - -@@ -280,6 +283,8 @@ static void parse_presentation_segment(AVCodecContext *avctx, - int w = bytestream_get_be16(&buf); - int h = bytestream_get_be16(&buf); - -+ ctx->presentation.pts = pts; -+ - av_dlog(avctx, "Video Dimensions %dx%d\n", - w, h); - if (av_image_check_size(w, h, 0, avctx) >= 0) -@@ -299,16 +304,17 @@ static void parse_presentation_segment(AVCodecContext *avctx, - buf += 3; - - ctx->presentation.object_number = bytestream_get_byte(&buf); -+ ctx->presentation.composition_flag = 0; - if (!ctx->presentation.object_number) - return; - - /* -- * Skip 4 bytes of unknown: -+ * Skip 3 bytes of unknown: - * object_id_ref (2 bytes), - * window_id_ref, -- * composition_flag (0x80 - object cropped, 0x40 - object forced) - */ -- buf += 4; -+ buf += 3; -+ ctx->presentation.composition_flag = bytestream_get_byte(&buf); - - x = bytestream_get_be16(&buf); - y = bytestream_get_be16(&buf); -@@ -356,6 +362,9 @@ static int display_end_segment(AVCodecContext *avctx, void *data, - */ - - memset(sub, 0, sizeof(*sub)); -+ sub->pts = ctx->presentation.pts; -+ sub->forced = (ctx->presentation.composition_flag & 0x40) != 0; -+ - // Blank if last object_number was 0. - // Note that this may be wrong for more complex subtitles. - if (!ctx->presentation.object_number) -@@ -441,7 +450,7 @@ static int decode(AVCodecContext *avctx, void *data, int *data_size, - parse_picture_segment(avctx, buf, segment_length); - break; - case PRESENTATION_SEGMENT: -- parse_presentation_segment(avctx, buf, segment_length); -+ parse_presentation_segment(avctx, buf, segment_length, avpkt->pts); - break; - case WINDOW_SEGMENT: - /* |