On Fri, 2 Nov 2012 09:32:51 -0700, John Stebbins <stebb...@jetheaddev.com> wrote: > On 11/02/2012 08:20 AM, Diego Biurrun wrote: > > On Sun, Oct 14, 2012 at 04:52:12PM +0200, John Stebbins wrote: > >> pts should be that of the packet containing the presentation segment. > >> --- > >> libavcodec/pgssubdec.c | 9 +++++++-- > >> 1 file changed, 7 insertions(+), 2 deletions(-) > > ping, anybody? > > > > > Patch updated to apply cleanly to head. > > -- > John GnuPG fingerprint: D0EC B3DB C372 D1F1 0B01 83F0 49F1 D7B2 60D4 > D0F7 > > From d4522c73106fe37686154ca924811bb895817782 Mon Sep 17 00:00:00 2001 > From: John Stebbins <jstebbins...@gmail.com> > Date: Fri, 2 Nov 2012 09:30:39 -0700 > Subject: [PATCH] PGS subtitles: Set AVSubtitle pts value > > pts should be that of the packet containing the presentation segment. > --- > libavcodec/pgssubdec.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/pgssubdec.c b/libavcodec/pgssubdec.c > index 0326ea8..f22088a 100644 > --- a/libavcodec/pgssubdec.c > +++ b/libavcodec/pgssubdec.c > @@ -46,6 +46,7 @@ typedef struct PGSSubPresentation { > int id_number; > int object_number; > uint8_t composition_flag; > + int64_t pts; > } PGSSubPresentation; > > typedef struct PGSSubPicture { > @@ -272,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; > > @@ -281,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) > @@ -358,6 +362,8 @@ static int display_end_segment(AVCodecContext *avctx, > void *data, > */ > > memset(sub, 0, sizeof(*sub)); > + sub->pts = ctx->presentation.pts;
The docs say pts is supposed to be in AV_TIME_BASE, while the packet pts is presumable in the decoder timebase. Not sure if the other subs decoders follow this though... Are you familiar with them? -- Anton Khirnov _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel