Currently the demuxer shaves the blocks and exports only the
information that is useful to the decoder.
Exporting the blocks just as they are stored is simpler to understand
and will make remuxing wavpack easier.
Due the crappy issue of classes having to be unique,
we cannot even have classes with identical content,
otherwise the compiler or linker is free to merge them,
giving the same result and bugs as if we had only one class.
Besides redesigning the option code to handle this correctly
I see only the option of requiring any two classes to have
different names, but the list of requirements for
AVClasses is getting kind of unmanageable.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Otherwise, during error conditions, the caller will be left with
dangling pointers to a destructed packet => boom.
BUG=242786
TEST=ffmpeg_regression_tests
Commit slightly simplified by commiter
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Both strtoll and atoll have different names on MSVC, and strtoll has a
compatibility layer in place for this case.
Fixes compilation on MSVC.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Some fixes provided by Paul B Mahol <onemda@gmail.com>
and Michael Niedermayer <michaelni@gmx.at> and me.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
This patch adds support for encoding VP8 files with alpha. The alpha channel
is encoded separately and the output is placed in AVPacket's side_data. The
muxer then muxes it into the BlockAdditional element of the matroska container.
More details on spec here: http://goo.gl/wCP1y
Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This patch adds support for muxing VP8 Alpha Files. The Alpha channel data is
placed in BlockAdditional element of the matroska container. More information
& exact spec on how this is implemented can be found here: http://goo.gl/wCP1y
Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
According to the PIFF specification[1] the base_data_offset field MUST be
omitteed. See section 5.2.17. Since the ISMV files created by ffmpeg state
that they are 'piff' compatible via 'ftyp' box, this needs to be corrected.
[1] http://www.iis.net/learn/media/smooth-streaming/protected-interoperable-file-format
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
According to the PIFF specification[1] the base_data_offset field MUST be
omitteed. See section 5.2.17. Since the ISMV files created by libavformat
state that they are 'piff' compatible via 'ftyp' box, this needs to be
corrected.
[1] http://www.iis.net/learn/media/smooth-streaming/protected-interoperable-file-format
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'b3ea76624ad1baab0b6bcc13f3f856be2f958110':
vf_aspect: use the name 's' for the pointer to the private context
Remove commented-out debug #define cruft
Conflicts:
libavcodec/4xm.c
libavcodec/dvdsubdec.c
libavcodec/ituh263dec.c
libavcodec/mpeg12.c
libavfilter/avfilter.c
libavfilter/vf_aspect.c
libavfilter/vf_fieldorder.c
libavformat/rtmpproto.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '7cbc4cb4424430586ce2d5c0dba81174c6d1db01':
fate: update the mmf reference
mmf: Write metadata into an Optional Data chunk
jpeg2000dec: Use correct printf length modifier for pointer differences
Conflicts:
libavformat/mmf.c
tests/ref/lavf/mmf
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This fixes use of uninitialized memory and possible out of array access
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
If no metadata follows MXF essence, that is essence ends with EOF,
"Operation not permitted" error was produced and a non-zero code
was returned from ffmpeg executable.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e0c53c3408181d2e7d544eb65fc7355a79438dfe':
nut: use meaningful error values
FATE: use a less ambiguous end time for filter-trim-time test
Conflicts:
libavformat/nutdec.c
tests/fate/filter-video.mak
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '46c1917350f58dfab84e41919e6c02d43950db8c':
nut: use a define for the nut version
bgmc: Do not mark ff_bgmc_decode_init() as av_cold
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c0c2b96c136ec2cbfd808eefc26de399f447d62f':
sctp: Add a note on why sctp_recvmsg and sctp_sendmsg have ff_-prefixes
avs: Increase magic value score above file extension score
Conflicts:
libavformat/avs.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
output-example links against swscale, which depends on avutil. In standard
configurations, by pure good luck, the libs before swscale pull in all of
swscale's dependencies and linking succeeds. However, in some configurations
like --disable-asm this is not the case and linking fails.
Hardcode the dependency to avoid a more general Makefile refactoring.
* cigaes/master:
lavf/matroskaenc: return an error for unsupported types.
lavf/concatdec: remove invalid check for AVSEEK_FLAG_BACKWARD.
lavf: filter out AVSEEK_FLAG_BACKWARD in new API.
lavf: call the new seek API from the old.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
If the demuxer implements read_seek2() and not read_seek(),
call avformat_seek_file() from av_seek_frame().
Allow to properly seek in formats that only implement the
new API from applications that use the old one.
Tested with mplayer and a concat script.
* qatar/master:
compat: msvc: Make sure the object files are included when linking statically
id3v2: check for end of file while unescaping tags
Conflicts:
configure
libavformat/id3v2.c
Note, ffmpeg is not affected by the out of buffer write bug
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e3b225a4fe0ff1e64a220b757c6f0a5cf9258521':
matroskaenc: add an option to put the index at the start of the file
Conflicts:
doc/muxers.texi
libavformat/matroskaenc.c
libavformat/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e926b5ceb1962833f0c884a328382bc2eca67aff':
avformat: Drop unnecessary ff_ name prefixes from static functions
Conflicts:
libavformat/audiointerleave.c
libavformat/mux.c
libavformat/mxfenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'c2cb01d418dd18e1cf997c038d37378d773121be':
lavf: introduce AVFMT_TS_NEGATIVE
Conflicts:
libavformat/avformat.h
libavformat/mux.c
tests/ref/lavf/asf
tests/ref/lavf/mkv
tests/ref/lavf/mpg
tests/ref/lavf/ts
tests/ref/seek/lavf-asf
tests/ref/seek/lavf-mkv
tests/ref/seek/lavf-mpg
tests/ref/seek/lavf-ts
This commit does not change the default ts behaviour, such
change will, if its done, be done separately.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Most formats do not support negative timestamps, shift them to avoid
unexpected behaviour and a number of bad crashes.
CC:libav-stable@libav.org
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* commit 'a0d5ca4f0a8e2c34d784d503a12af6303424ac6a':
mxfenc: Use correct printf format specifier for int64_t
h264: Drop unused variable
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '8e329dba378cef0ff6400c7df9c51da167d5a1f0':
riff: check for eof if chunk size and code are 0
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '505642f18276aed03278ac91b1f334ea888eac6a':
mp3dec: fallback to generic seeking when a TOC is not present
Conflicts:
libavformat/mp3dec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
To define accurately the delay between two frames, it is necessary to
have both available. Before this commit, the first frame had a delay of
0; while in practice the problem is not visible in most situation, it is
problematic with low frame rate and large scene change.
This commit notably fixes output generated with commands such as:
ffmpeg -i big_buck_bunny_1080p_h264.mov
-vf "select='gt(scene,0.4)',scale=320:-1,setpts=N/TB"
-frames:v 5 -y out.gif
Also, to avoid odd loop delays, the N-1 delay is duplicated for the last
frame.
The encoder now doesn't produce any extra graphic control extension
block anymore. Only the image is encoded, and the muxer writing
its own GCE containing notably the timing information now includes the
optional palette transmitted through packet side data.
This commit avoid setting clashes between the two GCE, and reduce the
size of the generated file with pal8 output.
When a file appears to start with a id3 tag and appears to
also be something else, then try to increase the probe buffer
size if its below its limit.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Currently, we have a AV_CODEC_ID_SSA, which matches the way the ASS/SSA
markup is muxed in a standalone .ass/.ssa file. This means the AVPacket
data starts with a "Dialogue:" string, followed by a timing information
(start and end of the event as string) and a trailing CRLF after each
line. One packet can contain several lines. We'll refer to this layout
as "SSA" or "SSA lines".
In matroska, this markup is not stored as such: it has no "Dialogue:"
prefix, it contains a ReadOrder field, the timing information is not in
the payload, and it doesn't contain the trailing CRLF. See [1] for more
info. We'll refer to this layout as "ASS".
Since we have only one common codec for both formats, the matroska
demuxer is constructing an AVPacket following the "SSA lines" format.
This causes several problems, so it was decided to change this into
clean ASS packets.
Some insight about what is changed or unchanged in this commit:
CODECS
------
- the decoding process still writes "SSA lines" markup inside the ass
fields of the subtitles rectangles (sub->rects[n]->ass), which is
still the current common way of representing decoded subtitles
markup. It is meant to change later.
- new ASS codec id: AV_CODEC_ID_ASS (which is different from the
legacy AV_CODEC_ID_SSA)
- lavc/assdec: the "ass" decoder is renamed into "ssa" (instead of
"ass") for consistency with the codec id and allows to add a real
ass decoder. This ass decoder receives clean ASS lines (so it starts
with a ReadOrder, is followed by the Layer, etc). We make sure this
is decoded properly in a new ass-line rectangle of the decoded
subtitles (the ssa decoder OTOH is doing a simple straightforward
copy). Using the packet timing instead of data string makes sure the
ass-line now contains the appropriate timing.
- lavc/assenc: just like the ass decoder, the "ssa" encoder is renamed
into "ssa" (instead of "ass") for consistency with the codec id, and
allows to add a real "ass" encoder.
One important thing about this encoder is that it only supports one
ass rectangle: we could have put several dialogue events in the
AVPacket (separated by a \0 for instance) but this would have cause
trouble for the muxer which needs not only the start time, but also
the duration: typically, you have merged events with the same start
time (stored in the AVPacket->pts) but a different duration. At the
moment, only the matroska do the merge with the SSA-line codec.
We will need to make sure all the decoders in the future can't add
more than one rectangle (and only one Dialogue line in it
obviously).
FORMATS
-------
- lavf/assenc: the .ass/.ssa muxer can take both SSA and ASS packets.
In the case of ASS packets as input, it adds the timing based on the
AVPacket pts and duration, and mux it with "Dialogue:", trailing
CRLF, etc.
- lavf/assdec: unchanged; it currently still only outputs SSA-lines
packets.
- lavf/mkv: the demuxer can now output ASS packets without the need of
any "SSA-lines" reconstruction hack. It will become the default at
next libavformat bump, and the SSA support will be dropped from the
demuxer. The muxer can take ASS packets since it's muxed normally,
and still supports the old SSA packets. All the SSA support and
hacks in Matroska code will be dropped at next lavf bump.
[1]: http://www.matroska.org/technical/specs/subtitles/ssa.html
Extension description comments are now placed along the avio calls, the
always defined macro removed, and the always true loop_count check as
well (loop option is bound to 0-65535).
This commit removes the badly duplicated code between the encoder and
the muxer. That may sound surprising, but the encoder is now responsible
from the encoding of the picture when muxing to a .gif file. It also
does not require anymore a manual user intervention such as a -pix_fmt
rgb24 to work properly. To summarize, output gif are now easier to
generate, code is saner and simpler, and files are smaller (thanks to
the lzw encoding which was unused so far with the default .gif output).
We can certainly make things even better, but this is the first step.
FATE is updated because of the output being produced by the encoder and
not the muxer (no lzw in the muxer), and in the seek test only the size
mismatches.
Fixes Ticket #2262
* qatar/master:
cmdutils: Fix build with lavfi disabled
flvenc: do not mux more than one stream per type
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Some implementations of strftime do not like invalid values for
month/day, so ensure it doesn't happen.
Reviewed-by: Matthieu Bouron <matthieu.bouron@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Correct bit mask for month/day/hour/min/sec values.
For reference the timestamp format specified in S377M is as follow:
year (int16), month (uint8), day (uint8), hour (uint8), sec (uint8),
msec (uint8).
A value of 0 for every fields means timestamp "unknown".
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
MSVC lacks support for %T and %F, but the standard specifies them
only as shorthands to the long variants.
Reviewed-by: Matthieu Bouron <matthieu.bouron@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '9e6b5e61a0c91e25e298d0a21b189c4c95443795':
img2enc: add an option for overwriting one file with subsequent images
Conflicts:
doc/muxers.texi
libavformat/img2enc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Fixes an overflow of the sample count field within the audio stream header
chunk if audio stream data exceeds 2GB.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Fixes audio packet pts values in some files generated by AVID TRMG 3.01.
Signed-off-by: Marton Balint <cus@passwd.hu>
Reviewed-by: Tomas Härdin <tomas.hardin@codemill.se>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* qatar/master:
srtp: Include rtpdec.h for RTP_MAX_PACKET_LENGTH
rtpdec: Increase max rtp packet size to 8192
lavf: Use RTP_MAX_PACKET_LENGTH instead of 1500
h264pred: Add a few missing const declarations for ff_cropTbl derived pointers
Merged-by: Michael Niedermayer <michaelni@gmx.at>
WAV chunks must be even aligned. This patch skip the extra padding byte
if chunk size is odd.
Fixes ticket #2417.
Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'd1016dccdcb10486245e5d7c186cc31af54b2a9c':
xmv: check audio track parameters validity.
bmv: check for len being valid in bmv_decode_frame().
Conflicts:
libavformat/xmv.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '8d617b11cfc87b2c6056fee029ac5bc760af874a':
id3v2: pad the APIC packets as required by lavc.
dfa: check for invalid access in decode_wdlt().
Conflicts:
libavformat/id3v2.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'bcc94328980e6c56546792ab08b0756abdce310b':
opt: check the return values of av_get_token for ENOMEM.
doc: Fix best_nb_channells typo
matroska: pass the lace size to the matroska_parse_rm_audio
Conflicts:
libavformat/matroskadec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '8a96df7b70be509dae9ceec82d2c10a20361356d':
matroska: fix a corner case in ebml-lace parsing
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Each lace must be independent according to the specification.
Fix heap-buffer-overflow in matroska_parse_block for
corrupted real media in mkv files.
Stricter check than fc43c19a56
CC: libav-stable@libav.org
Fix heap-buffer-overflow in matroska_parse_block for
corrupted real media in mkv files.
CC: libav-stable@libav.org
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>