[FFmpeg-devel] [PATCH 1/2] avformat/mux: support shifting timestamps so they start at 0

Clément Bœsch u at pkh.me
Fri Feb 21 07:33:10 CET 2014


On Fri, Feb 21, 2014 at 04:21:36AM +0100, Michael Niedermayer wrote:
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
>  libavformat/mux.c           |    2 +-
>  libavformat/options_table.h |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/mux.c b/libavformat/mux.c
> index 2241dbe..1c15a91 100644
> --- a/libavformat/mux.c
> +++ b/libavformat/mux.c
> @@ -538,7 +538,7 @@ static int write_packet(AVFormatContext *s, AVPacket *pkt)
>          AVStream *st = s->streams[pkt->stream_index];
>          int64_t offset = st->mux_ts_offset;
>  
> -        if (pkt->dts < 0 && pkt->dts != AV_NOPTS_VALUE && !s->offset) {
> +        if ((pkt->dts < 0 || s->avoid_negative_ts == 2) && pkt->dts != AV_NOPTS_VALUE && !s->offset) {
>              s->offset = -pkt->dts;
>              s->offset_timebase = st->time_base;
>          }
> diff --git a/libavformat/options_table.h b/libavformat/options_table.h
> index ca30fd2..2e08682 100644
> --- a/libavformat/options_table.h
> +++ b/libavformat/options_table.h
> @@ -73,7 +73,7 @@ static const AVOption avformat_options[] = {
>  {"compliant",  "consider all spec non compliancies as errors", 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_COMPLIANT }, INT_MIN, INT_MAX, D, "err_detect"},
>  {"aggressive", "consider things that a sane encoder shouldn't do as an error", 0, AV_OPT_TYPE_CONST, {.i64 = AV_EF_AGGRESSIVE }, INT_MIN, INT_MAX, D, "err_detect"},
>  {"use_wallclock_as_timestamps", "use wallclock as timestamps", OFFSET(use_wallclock_as_timestamps), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX-1, D},
> -{"avoid_negative_ts", "shift timestamps to make them non-negative. 1 enables, 0 disables, default of -1 enables when required by target format.", OFFSET(avoid_negative_ts), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 1, E},
> +{"avoid_negative_ts", "shift timestamps so they start at 0. 1 enable if negative ts, 2 enable, 0 disables, default of -1 enables when required by target format.", OFFSET(avoid_negative_ts), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 2, E},

why don't you just add const values?

>  {"skip_initial_bytes", "set number of bytes to skip before reading header and frames", OFFSET(skip_initial_bytes), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX-1, D},
>  {"correct_ts_overflow", "correct single timestamp overflows", OFFSET(correct_ts_overflow), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, D},
>  {"flush_packets", "enable flushing of the I/O context after each packet", OFFSET(flush_packets), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, E},

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140221/056aca72/attachment.asc>


More information about the ffmpeg-devel mailing list