[FFmpeg-devel] [PATCH 5/5] ffmpeg: Use guess_correct_pts() for decoded timestamps

Michael Niedermayer michaelni
Tue Sep 28 16:57:09 CEST 2010


On Mon, Jul 26, 2010 at 01:16:10PM -0700, Alexander Strange wrote:
> ---
>  ffmpeg.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/ffmpeg.c b/ffmpeg.c
> index 6625c58..16e69dd 100644
> --- a/ffmpeg.c
> +++ b/ffmpeg.c
> @@ -304,6 +304,7 @@ typedef struct AVInputStream {
>      int64_t       next_pts;  /* synthetic pts for cases where pkt.pts
>                                  is not defined */
>      int64_t       pts;       /* current pts */
> +    PtsCorrectionContext pts_ctx;
>      int is_start;            /* is 1 at the start and after a discontinuity */
>      int showed_multi_packet_warning;
>      int is_past_recording_time;
> @@ -1509,6 +1510,7 @@ static int output_packet(AVInputStream *ist, int ist_index,
>      void *buffer_to_free;
>      static unsigned int samples_size= 0;
>      AVSubtitle subtitle, *subtitle_to_free;
> +    int64_t pkt_pts = AV_NOPTS_VALUE;
>  #if CONFIG_AVFILTER
>      int frame_available;
>  #endif
> @@ -1531,6 +1533,8 @@ static int output_packet(AVInputStream *ist, int ist_index,
>  
>      if(pkt->dts != AV_NOPTS_VALUE)
>          ist->next_pts = ist->pts = av_rescale_q(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q);
> +    if(pkt->pts != AV_NOPTS_VALUE)
> +        pkt_pts = av_rescale_q(pkt->pts, ist->st->time_base, AV_TIME_BASE_Q);
>  
>      //while we have more to decode or while the decoder did output something on EOF
>      while (avpkt.size > 0 || (!pkt && ist->next_pts != ist->pts)) {
> @@ -1583,6 +1587,7 @@ static int output_packet(AVInputStream *ist, int ist_index,
>                      decoded_data_size = (ist->st->codec->width * ist->st->codec->height * 3) / 2;
>                      /* XXX: allocate picture correctly */
>                      avcodec_get_frame_defaults(&picture);
> +                    ist->st->codec->reordered_opaque = pkt_pts;

you should set pkt_pts here to AV_NOPTS_VALUE to prevent a second use


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Good people do not need laws to tell them to act responsibly, while bad
people will find a way around the laws. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100928/75e99309/attachment.pgp>



More information about the ffmpeg-devel mailing list