[FFmpeg-devel] [PATCH 2/3] avformat/mov: set packet duration in fragmented input

Thierry Foucu tfoucu at gmail.com
Thu Nov 21 18:52:39 EET 2024


On Wed, Nov 20, 2024, 12:27 PM James Almer <jamrial at gmail.com> wrote:

> From: Thierry Foucu <tfoucu at gmail.com>
>
> Fixes ticket #11312.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavformat/isom.h | 1 +
>  libavformat/mov.c  | 4 ++++
>  2 files changed, 5 insertions(+)
>
> diff --git a/libavformat/isom.h b/libavformat/isom.h
> index ff08f2a48d..9a086b05c2 100644
> --- a/libavformat/isom.h
> +++ b/libavformat/isom.h
> @@ -62,6 +62,7 @@ typedef struct MOVStts {
>  typedef struct MOVCtts {
>      unsigned int count;
>      int offset;
> +    int duration; // used when handling fragments
>  } MOVCtts;
>
>  typedef struct MOVStsc {
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index 3e94a21418..c5c9fb10a6 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -4089,6 +4089,7 @@ static int64_t add_ctts_entry(MOVCtts** ctts_data,
> unsigned int* ctts_count, uns
>
>      ctts_buf_new[*ctts_count].count = count;
>      ctts_buf_new[*ctts_count].offset = offset;
> +    ctts_buf_new[*ctts_count].duration = 0;
>
>      *ctts_count = (*ctts_count) + 1;
>      return *ctts_count;
> @@ -5910,6 +5911,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext
> *pb, MOVAtom atom)
>          sti->index_entries[index_entry_pos].flags = index_entry_flags;
>
>          sc->ctts_data[index_entry_pos].count = 1;
> +        sc->ctts_data[index_entry_pos].duration = sample_duration;
>          sc->ctts_data[index_entry_pos].offset = ctts_duration;
>          index_entry_pos++;
>
> @@ -10722,6 +10724,8 @@ static int mov_finalize_packet(AVFormatContext *s,
> AVStream *st, AVIndexEntry *s
>      }
>      if (sc->ctts_data && sc->ctts_index < sc->ctts_count) {
>          pkt->pts = av_sat_add64(pkt->dts, av_sat_add64(sc->dts_shift,
> sc->ctts_data[sc->ctts_index].offset));
> +        if (sc->ctts_data[sc->ctts_index].duration)
> +            pkt->duration = sc->ctts_data[sc->ctts_index].duration;
>
>          /* update ctts context */
>          sc->ctts_sample++;
> --
> 2.47.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>




Thanks. This patch does fix the ticket #11312

>


More information about the ffmpeg-devel mailing list