avformat/movenc: implicitly enable negative CTS offsets for ismv
ISMV lacks any sort of edit list support, as well as tfxd is effectively the PTS of the fragment for most intents and purposes. Thus, if b-frames are requested without negative CTS offsets you end up with N frames' worth of delay (tfxd PTS plus the CTS offset of the first sample). Negative CTS offsets enable the first sample to have CTS=DTS, and thus a/v desync due to b-frame reorder delay is avoided.
This commit is contained in:
parent
701aca55fd
commit
1931761f18
@ -1344,6 +1344,8 @@ be negative. This enables the initial sample to have DTS/CTS of zero, and
|
||||
reduces the need for edit lists for some cases such as video tracks with
|
||||
B-frames. Additionally, eases conformance with the DASH-IF interoperability
|
||||
guidelines.
|
||||
|
||||
This option is implicitly set when writing ismv (Smooth Streaming) files.
|
||||
@item -write_prft
|
||||
Write producer time reference box (PRFT) with a specified time source for the
|
||||
NTP field in the PRFT box. Set value as @samp{wallclock} to specify timesource
|
||||
|
@ -6046,7 +6046,7 @@ static int mov_init(AVFormatContext *s)
|
||||
/* Set other implicit flags immediately */
|
||||
if (mov->mode == MODE_ISM)
|
||||
mov->flags |= FF_MOV_FLAG_EMPTY_MOOV | FF_MOV_FLAG_SEPARATE_MOOF |
|
||||
FF_MOV_FLAG_FRAGMENT;
|
||||
FF_MOV_FLAG_FRAGMENT | FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS;
|
||||
if (mov->flags & FF_MOV_FLAG_DASH)
|
||||
mov->flags |= FF_MOV_FLAG_FRAGMENT | FF_MOV_FLAG_EMPTY_MOOV |
|
||||
FF_MOV_FLAG_DEFAULT_BASE_MOOF;
|
||||
|
@ -17,10 +17,10 @@ write_data len 20, time nopts, type header atom ftyp
|
||||
write_data len 1171, time nopts, type header atom -
|
||||
write_data len 728, time 0, type sync atom moof
|
||||
write_data len 828, time nopts, type unknown atom -
|
||||
write_data len 728, time 1013106, type sync atom moof
|
||||
write_data len 728, time 1046439, type sync atom moof
|
||||
write_data len 812, time nopts, type unknown atom -
|
||||
write_data len 148, time nopts, type trailer atom -
|
||||
1f37c1a8e01651e8bebcd66f00b6a226 4435 ismv
|
||||
49bf122c4c732a344ef68b58acd19be5 4435 ismv
|
||||
write_data len 36, time nopts, type header atom ftyp
|
||||
write_data len 1123, time nopts, type header atom -
|
||||
write_data len 796, time 0, type sync atom moof
|
||||
|
@ -1,9 +1,9 @@
|
||||
a9ccbb4cd1436d222ef4425567b4e03d *./tests/data/lavf/lavf.ismv
|
||||
96053075a3f60d271131fe2d0765c267 *./tests/data/lavf/lavf.ismv
|
||||
312542 ./tests/data/lavf/lavf.ismv
|
||||
./tests/data/lavf/lavf.ismv CRC=0x9d9a638a
|
||||
440d85f9fd5b9f63c2676638782b5c15 *./tests/data/lavf/lavf.ismv
|
||||
7022701b4c693bc4ffe1e9f96dd82a02 *./tests/data/lavf/lavf.ismv
|
||||
321448 ./tests/data/lavf/lavf.ismv
|
||||
./tests/data/lavf/lavf.ismv CRC=0xe8130120
|
||||
a9ccbb4cd1436d222ef4425567b4e03d *./tests/data/lavf/lavf.ismv
|
||||
96053075a3f60d271131fe2d0765c267 *./tests/data/lavf/lavf.ismv
|
||||
312542 ./tests/data/lavf/lavf.ismv
|
||||
./tests/data/lavf/lavf.ismv CRC=0x9d9a638a
|
||||
|
Loading…
x
Reference in New Issue
Block a user