[FFmpeg-devel] [PATCH 2/3] lavf/segment: slight refactor to seg_write_packet

Stefano Sabatini stefasab at gmail.com
Fri Mar 25 15:45:04 CET 2016


On date Sunday 2016-03-06 20:49:23 -0600, Rodger Combs encoded:
> This reduces some code duplication, and ensures that cur_entry.last_duration is
> always set.
> ---
>  libavformat/segment.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/libavformat/segment.c b/libavformat/segment.c
> index 818c0c9..6ad991f 100644
> --- a/libavformat/segment.c
> +++ b/libavformat/segment.c
> @@ -824,11 +824,13 @@ static int seg_write_packet(AVFormatContext *s, AVPacket *pkt)
>          seg->cur_entry.index = seg->segment_idx + seg->segment_idx_wrap * seg->segment_idx_wrap_nb;
>          seg->cur_entry.start_time = (double)pkt->pts * av_q2d(st->time_base);
>          seg->cur_entry.start_pts = av_rescale_q(pkt->pts, st->time_base, AV_TIME_BASE_Q);

> -        seg->cur_entry.end_time = seg->cur_entry.start_time +
> -            pkt->pts != AV_NOPTS_VALUE ? (double)(pkt->pts + pkt->duration) * av_q2d(st->time_base) : 0;

Unrelated, this looks wrong

> -    } else if (pkt->pts != AV_NOPTS_VALUE && pkt->stream_index == seg->reference_stream_index) {
> -        seg->cur_entry.end_time =
> -            FFMAX(seg->cur_entry.end_time, (double)(pkt->pts + pkt->duration) * av_q2d(st->time_base));
> +        seg->cur_entry.end_time = seg->cur_entry.start_time;
> +    }
> +
> +    if (pkt->stream_index == seg->reference_stream_index) {
> +        if (pkt->pts != AV_NOPTS_VALUE)
> +            seg->cur_entry.end_time =
> +                FFMAX(seg->cur_entry.end_time, (double)(pkt->pts + pkt->duration) * av_q2d(st->time_base));
>          seg->cur_entry.last_duration = pkt->duration;

LGTM (and fixes the defect), thanks.
-- 
FFmpeg = Formidable and Fascinating Multimedia Powered Elegant Gnome


More information about the ffmpeg-devel mailing list