This fixes#2657.
ISML movies produced by Microsoft Expression Encoder 4 seem to have invalid
sample entries in their trun/tfhd for data tracks. As a result, too much bytes
are read for these tracks to the point that next_root_atom can go out of
buffer, which makes the encoding fail if the input is not seekable.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This allows handling matroska files with errors.
Fixes test4.mkv and test7.mkv from the official Matroska test suite,
and by extension Bugzilla #62.
Based on a patch by Reimar Doffinger <Reimar.Doeffinger@gmx.de>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
554 is possible invalid code:
- Restart not valid
- Command terminated due to server shutdown in progress
- etc...
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
It seems some ftp servers doesn't respect ABOR command,
but closing both connection is slow.
This commit keeps control connection open when possible.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
This commit reconnect both connections and retries before ftp_read returns an error.
Practical use case: resume after lock screen on iOS devices.
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Some movies have negative composition time offsets in their trun, causing pts <
dts errors. This patch makes use of dts_shift to handle them.
Signed-off-by: Alexandre Sicard <alexandre.sicard@smartjog.com>
* commit 'ab1189766a82a95f108005463cde75f73fcc0ae5':
movenc: Increase the cluster array allocation by doubling
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3b4feac1ec14f861bdd7f494f288f4d8dd7f449e':
movenc: Keep track of the allocated size for the cluster array
mem: Add av_realloc_array and av_reallocp_array
Conflicts:
doc/APIchanges
libavformat/movenc.c
libavutil/mem.c
libavutil/mem.h
libavutil/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The previous allocation increment of 16384 meant that the cluster
array was allocated for 0.6 MB initially, which is a bit excessive
for cases with fragmentation where only a fraction of that ever
actually is used.
Therefore, start off at a much smaller value, and increase by
doubling (to avoid reallocating too often when writing long
non-fragmented mp4 files).
Bug-Id: 525
Signed-off-by: Martin Storsjö <martin@martin.st>
When writing fragmented mp4, the cluster array is reset when a
fragment is written. Instead of starting off reallocating the
array only based on the number of current elements in it, keep
track of how many elements there were allocated earlier.
This avoids reallocating this array needlessly when writing
fragmented mp4 files.
Bug-Id: 525
Signed-off-by: Martin Storsjö <martin@martin.st>
This makes the struct name (which isn't used anywhere) match the
name of the typedef, as for all the other structs declared in this
header.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '28306e6d620c109ddd672f7243adfbc2bbb3b18f':
network: factor out bind-listening code
use my full first name instead of short one in copyrights
Conflicts:
libavformat/tcp.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Currently the WebVTT demuxer parses the cues but throws away
the cue id (the optional first line of the cue) and cue
settings (the optional rendering instructions that follow
the timestamp).
However, in order to write inband text tracks (to WebM
files), the entire cue payload from the WebVTT source must
be preserved.
This commit makes no change to the data part of the output
buffer packet (where the actual cue text is stored), but
does add the cue id and settings as a side data items, if
they're present in the cue. Existing code that cares only
about the data part of the packet can continue to ignore the
side data.
There are two new packet data type flags,
AV_PKT_DATA_WEBVTT_IDENTIFIER and
AV_PKT_DATA_WEBVTT_SETTINGS.
Since we don't check for seek table integrity in the decoder anymore,
check it in the demuxer instead (Only tta files are guaranteed to have
one, and it should be valid there).
Check also for header integrity, since the check done in the decoder
is ignored because matroska doesn't store the header at all.
Signed-off-by: James Almer <jamrial@gmail.com>
ABOR command usually takes long (FTP server implementation dependent).
It also produces different response codes from different servers.
It is save for ffmpeg to reconnect both connection during seek for two reasons:
1. Alreay mentioned heavy manner of ABOR command.
2. Server may disconnected due to no transfer (seek after a long pause in ffmpeg client)
Reimplementation of ftp_status function.
New version requires explicit list of expected codes.
It flush data connection input before sending a command
and blocks until expected result appears.
Adding an arbitrary amount of padding bytes at the end of the
ID3 metadata fixes cover art display for some software (iTunes,
Traktor, Serato, Torq).
For reference (ID3 metadata):
[ Apic frames ] -> cover doesn't show up
[ Apic frames, Padding ] -> ok
[ Apic frames, ID3 frames ] -> ok
[ ID3 frames, Apic frames ] -> cover doesn't show up
[ ID3 frames, Apic frames, Padding ] -> ok
* commit '2d2d6a4883479403798f4ed46941d5b365823570':
lavf: add a raw WavPack muxer.
apetag: add support for writing APE tags
matroskaenc: support muxing WavPack
Conflicts:
libavformat/Makefile
libavformat/allformats.c
libavformat/apetag.h
libavformat/version.h
libavformat/wvenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '794ca87d2bff2513118de8b97595b3e23070e67d':
wvdec: split block header parsing into a separate file
Conflicts:
libavformat/Makefile
libavformat/wvdec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>