Commit 0a14fefd authored by Martin Storsjö's avatar Martin Storsjö

movenc: Indicate that negative timestamps are supported

The mov/mp4 muxer has support for handling negative timestamps
via edit lists (which customarily is used for handling the 1-frame
delay due to B-frames as well).

Using the muxer's native way of handling it is better than using
the generic offsetting. The generic offsetting is a bit too
crude when e.g. the timebase of one track is 1/fps, where the
edit lists can handle it accurately.
Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
parent c34a96a5
...@@ -3265,7 +3265,7 @@ AVOutputFormat ff_mov_muxer = { ...@@ -3265,7 +3265,7 @@ AVOutputFormat ff_mov_muxer = {
.write_header = mov_write_header, .write_header = mov_write_header,
.write_packet = mov_write_packet, .write_packet = mov_write_packet,
.write_trailer = mov_write_trailer, .write_trailer = mov_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH, .flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
.codec_tag = (const AVCodecTag* const []){ .codec_tag = (const AVCodecTag* const []){
ff_codec_movvideo_tags, ff_codec_movaudio_tags, 0 ff_codec_movvideo_tags, ff_codec_movaudio_tags, 0
}, },
...@@ -3284,7 +3284,7 @@ AVOutputFormat ff_tgp_muxer = { ...@@ -3284,7 +3284,7 @@ AVOutputFormat ff_tgp_muxer = {
.write_header = mov_write_header, .write_header = mov_write_header,
.write_packet = mov_write_packet, .write_packet = mov_write_packet,
.write_trailer = mov_write_trailer, .write_trailer = mov_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH, .flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
.codec_tag = (const AVCodecTag* const []){ codec_3gp_tags, 0 }, .codec_tag = (const AVCodecTag* const []){ codec_3gp_tags, 0 },
.priv_class = &tgp_muxer_class, .priv_class = &tgp_muxer_class,
}; };
...@@ -3303,7 +3303,7 @@ AVOutputFormat ff_mp4_muxer = { ...@@ -3303,7 +3303,7 @@ AVOutputFormat ff_mp4_muxer = {
.write_header = mov_write_header, .write_header = mov_write_header,
.write_packet = mov_write_packet, .write_packet = mov_write_packet,
.write_trailer = mov_write_trailer, .write_trailer = mov_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH, .flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
.codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 }, .codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 },
.priv_class = &mp4_muxer_class, .priv_class = &mp4_muxer_class,
}; };
...@@ -3321,7 +3321,7 @@ AVOutputFormat ff_psp_muxer = { ...@@ -3321,7 +3321,7 @@ AVOutputFormat ff_psp_muxer = {
.write_header = mov_write_header, .write_header = mov_write_header,
.write_packet = mov_write_packet, .write_packet = mov_write_packet,
.write_trailer = mov_write_trailer, .write_trailer = mov_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH, .flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
.codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 }, .codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 },
.priv_class = &psp_muxer_class, .priv_class = &psp_muxer_class,
}; };
...@@ -3338,7 +3338,7 @@ AVOutputFormat ff_tg2_muxer = { ...@@ -3338,7 +3338,7 @@ AVOutputFormat ff_tg2_muxer = {
.write_header = mov_write_header, .write_header = mov_write_header,
.write_packet = mov_write_packet, .write_packet = mov_write_packet,
.write_trailer = mov_write_trailer, .write_trailer = mov_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH, .flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
.codec_tag = (const AVCodecTag* const []){ codec_3gp_tags, 0 }, .codec_tag = (const AVCodecTag* const []){ codec_3gp_tags, 0 },
.priv_class = &tg2_muxer_class, .priv_class = &tg2_muxer_class,
}; };
...@@ -3356,7 +3356,7 @@ AVOutputFormat ff_ipod_muxer = { ...@@ -3356,7 +3356,7 @@ AVOutputFormat ff_ipod_muxer = {
.write_header = mov_write_header, .write_header = mov_write_header,
.write_packet = mov_write_packet, .write_packet = mov_write_packet,
.write_trailer = mov_write_trailer, .write_trailer = mov_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH, .flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
.codec_tag = (const AVCodecTag* const []){ codec_ipod_tags, 0 }, .codec_tag = (const AVCodecTag* const []){ codec_ipod_tags, 0 },
.priv_class = &ipod_muxer_class, .priv_class = &ipod_muxer_class,
}; };
...@@ -3374,7 +3374,7 @@ AVOutputFormat ff_ismv_muxer = { ...@@ -3374,7 +3374,7 @@ AVOutputFormat ff_ismv_muxer = {
.write_header = mov_write_header, .write_header = mov_write_header,
.write_packet = mov_write_packet, .write_packet = mov_write_packet,
.write_trailer = mov_write_trailer, .write_trailer = mov_write_trailer,
.flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH, .flags = AVFMT_GLOBALHEADER | AVFMT_ALLOW_FLUSH | AVFMT_TS_NEGATIVE,
.codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 }, .codec_tag = (const AVCodecTag* const []){ ff_mp4_obj_type, 0 },
.priv_class = &ismv_muxer_class, .priv_class = &ismv_muxer_class,
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment