Commit 1931761f authored by Jan Ekström's avatar Jan Ekström

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.
parent 701aca55
......@@ -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
......
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
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