| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: Luca Barbato <[email protected]>
|
| |
|
|
|
|
|
|
|
|
| |
The default value for unset is -1, not 0.
Problem introduced in 66028b7ba6b411ba12ef553e9c8f1f4a4fe27710
Bug-Id: 835
|
|
|
|
| |
Signed-off-by: Luca Barbato <[email protected]>
|
|
|
|
|
|
|
|
|
| |
AviSynth 2.6 (and by extension, AviSynth+) moves these functions
into AVSC_API. This requires both adjusting their normal use,
and for AvxSynth, adjusting the position/use of the USING_AVISYNTH
ifdefs.
Signed-off-by: Luca Barbato <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
This will allow to copy the matrix as is and it is just cleaner to keep
the matrix in the same order specified by the mov standard (which is
also explicitly described in the documentation).
In order to preserve compatibility, flip the angle sign in the display API
av_display_rotation_set() and av_display_rotation_get(), and improve the
documentation mentioning the rotation direction.
|
|
|
|
|
|
|
| |
These are essential allowing QuickTime to keep detecting content
as slow-motion - this allows preserving them on stream copy.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
| |
Bug-Id: CID 1257798 / CID 1257805
Signed-off-by: Luca Barbato <[email protected]>
|
|
|
|
|
|
| |
Bug-Id: CID 1258462
Signed-off-by: Luca Barbato <[email protected]>
|
|
|
|
|
|
| |
Bug-Id: CID 1257832
Signed-off-by: Luca Barbato <[email protected]>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For strict CFR, they should be pretty much equal, but if the stream
is VFR, there can be a sometimes significant difference.
Calculate the pts duration separately, used in sidx atoms and for
tfrf/tfxd boxes in smooth streaming ismv files.
Also make sure to reduce the duration of sidx entries according to
edit lists.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
| |
When reading these values from track->frag_info, the same adjustment
has already been done.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Adjusting it is only necessary when a sidx/tfrf/tfxd atom already has
been written for the previous fragment (since the sidx/tfrf/tfxd atoms
include the duration between the first pts of the previous fragment, to
the first pts of the new fragment).
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
| |
This matches what we write in tfra and tfrf since 9cbf70fa0e.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When automatically flushing fragments based on set conditions
(fragmentation on keyframes, after some interval or byte size),
we already have the next packet for one stream - use this for setting
the duration of the last packet in the flushed fragment correctly.
This avoids having to adjust the timestamp of the first packet in
the new fragment since the last duration was unknown.
Unfortunately, this only works for automatic flushing (not for
caller-triggered flushing, like in the dash muxer), and only for the
one single track that triggered the flushing. The duration of the
last sample in all other tracks still is dependent on AVPacket
duration (or heuristics).
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
| |
This avoids that the mp4 muxer does a similar heuristic, adjusting
the timestamps in a way that the dash muxer doesn't know the actual
timestamps written to the file in the end. By making sure that the
mp4 muxer internal heuristic isn't applied, we know the exact
timestamps written to file, so that the timestamps in manifest match
the files.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
not set
Even if this is a guess, it is way better than writing a zero duration
of the last sample in a fragment (because if the duration is zero,
the first sample of the next fragment will have the same timestamp
as the last sample in the previous one).
Since we normally don't require libavformat muxer users to set
the duration field in AVPacket, we probably can't strictly require
it here either, so don't log this as a strict warning, only as info.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
| |
Add a missing AVClass member, check whether localaddr is null.
(Previously, localaddr was always a local stack buffer, while it
now also can be an avoption string which can be null.)
This fixes crashes when not passing any localaddr parameter, since
66028b7ba.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current behavior may produce a different sequence of packets
after seeking, compared to demuxing linearly from the beginning.
This is because the MOV demuxer seeks in each stream individually,
based on timestamp, which may set each stream at a slightly different
position than if the file would have been read sequentially.
This makes implementing certain operations, such as segmenting,
quite hard, and slower than need be.
Therefore, add an option which retains the same packet sequence
after seeking, as when a file is demuxed linearly.
|
|
|
|
|
|
|
|
|
|
| |
Set this field to TRUE if the audio component is to operate on
little-endian data, and FALSE otherwise.
However TRUE and FALSE are not defined. Since this flag is just a boolean,
interpret all values except for 0 as little endian.
Sample-Id: 64bit_FLOAT_Little_Endian.mov
|
|
|
|
|
|
|
| |
Instead check for all mov code-points when demuxing avi
and print a warning if a video codec is found like this.
Signed-off-by: Vittorio Giovara <[email protected]>
|
|
|
|
| |
Signed-off-by: Paul B Mahol <[email protected]>
|
| |
|
|
|
|
| |
As produced by Camtasia 4.
|
|
|
|
|
|
|
|
|
|
|
| |
This is incompatible with the omit_tfhd_offset flag (writing
position independent fragments with interleaving requires the
default_base_moof flag).
This makes the moof atoms slightly bigger, but can be better for
playback (improving locality of sample data in the mdat).
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
| |
This is needed if all the data for one track isn't continuous
within the mdat. Normally we make sure all the data for one
track is continuous, but in new cases we will need to have
the samples interleaved.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
| |
Bug-Id: 833
|
|
|
|
| |
Add AVOptions for options currently available as url parameters.
|
|
|
|
| |
Use AVOption and fallback over multiple addresses
|
|
|
|
| |
Signed-off-by: Vittorio Giovara <[email protected]>
|
|
|
|
| |
CC: [email protected]
|
|
|
|
| |
Bug-Id: CID 205122 / CID 205123
|
|
|
|
| |
This fixes a number of "assignment from incompatible pointer type" warnings.
|
|
|
|
|
| |
Signed-off-by: Andreas Cadhalpun <[email protected]>
Signed-off-by: Anton Khirnov <[email protected]>
|
|
|
|
|
|
|
|
| |
In this case len is always at least 1, since it is checked against
RTP_VP9_DESC_REQUIRED_SIZE + 1 and then it is reduced by
RTP_VP9_DESC_REQUIRED_SIZE before entering the has_pic_id check.
Bug-Id: CID 1270811
|
|
|
|
|
|
|
| |
Rather than having an unitialized context on the stack, allocate it with
defaults and free it when unneeded.
CC: [email protected]
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This way, the caller doesn't need to coordinate setting the option
after the moov atom has been written. The downside is that it is
no longer possible to use the option for checking whether the moov
atom already has been written, but a caller is able to keep track
of that by other means anyway.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
| |
The previous use of the mov->fragments field, for determining whether
written packets were part of the first fragment or not, didn't
work as intended when using the empty_moov flag.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
By making sure we at each time only have one pointer set, either a
local variable or one in the context, we avoid potential double frees
in the cleanup routines. If chain->rtp_ctx is set, it is closed by
calling avformat_write_trailer, but that shouldn't be called unless
avformat_write_header succeeded.
This issue was pointed out by Andreas Cadhalpun.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
| |
This fixes a typo from 8e32b1f096.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
| |
The avio functions used here return an unsigned value.
Also reduce a variable scope.
CC: [email protected]
Bug-Id: CID 1258461
|
|
|
|
|
|
|
| |
This prevents it to be written as unsigned. Also add an error message.
CC: [email protected]
Bug-Id: CID 1265717
|
|
|
|
|
|
|
| |
In this case len is always at least 3, since it is checked against
RTP_HEVC_PAYLOAD_HEADER_SIZE + 1 before entering the switch block.
Bug-Id: CID 1238784
|
|
|
|
| |
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
This avoids assuming that e.g. audio samples are marked as
sync samples.
This allows omitting the sample flags from trun, if the default
flags happen to be right for all the samples.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
| |
The str variable is a char ** here.
Signed-off-by: Martin Storsjö <[email protected]>
|
|
|
|
|
|
|
| |
Use correct context, reduce log level, don't assume it is a video stream,
and print the tag of the unknown stream.
Signed-off-by: Vittorio Giovara <[email protected]>
|
|
|
|
|
|
|
|
| |
a876585215 had the unintended side effect of returning AVERROR(ENOMEM)
when track->entry is zero, while the code intentionally wants to
continue in that case.
Signed-off-by: Martin Storsjö <[email protected]>
|