Commit Graph

37064 Commits

Author SHA1 Message Date
Michael Niedermayer
14d94a1952 avidec: Fix use of stream_index before validation of its range.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-23 19:47:49 +01:00
David Mitchell
d150a147da Improve support for PGS subtitles.
The previous implementation assumed that a new picture would always
supersede the previous picture. Similarly, presentation segments
were assumed to pertain to the most-recently-read picture.

However, each presentation segment may refer to 0 or more pictures
by their ID. Picture IDs may repeat, and a repeated picture ID
indicates that the old picture for that ID is no longer needed
and may be discarded.

The new implementation allocates a buffer with one slot for each
possible picture ID (the picture ID is a 16-bit field) and
properly decodes presentation segments so that all relevant
pictures are output upon encountering a display segment.

Given that most PGS streams are unlikely to use more than a small
fraction of the available picture IDs, it would probably be better
to use a more memory-efficient data structure. I'm lazy though, so
I leave this to a more motivated individual.

I've tested the code with MKV files in VLC (a recent revision from
their git repo) and with HandBrake (a version that I hacked up to
use ffmpeg's PGS subtitle decoder).

Review-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-23 19:47:49 +01:00
Michael Niedermayer
cf7c7f13cd pthreads: Generic progress lubrication support.
Fixes bug118, bug120 and bug125 at least

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-23 19:47:49 +01:00
Michael Niedermayer
575d494de5 pthreads: reset got_frames on flush.
This fixes memory corruption when seeking in broken streams.
a random mpeg4 in nut file was used to debug.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-23 19:47:49 +01:00
Paul B Mahol
c7579ad8e8 cafdec: replace deprecated get_strz() 2012-01-23 17:18:44 +01:00
Paul B Mahol
a6ef7b3a77 cafenc: replace deprecated av_dbl2int() 2012-01-23 17:18:13 +01:00
Michael Niedermayer
b9db728a1f libavformat/libavformat.v: fix application name in comment
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-23 01:46:57 +01:00
Michael Niedermayer
feb997577b Merge remote-tracking branch 'qatar/master'
* qatar/master: (25 commits)
  riff: fix invalid av_freep() calls on EOF in ff_read_riff_info
  pam: Fix a typo that broke writing and reading PAM files.
  mxfdec: fix memleak on av_realloc failures
  mxfdec: Do not parse slices or DeltaEntryArrays.
  mxfdec: hybrid demuxing/seeking solution
  mxfdec: Add Avid's essence element key.
  mfxdec: Separate mxf_essence_container_uls for audio and video.
  mxfdec: Compute packet offsets properly.
  mxfdec: Use MaterialPackage - Track - TrackID instead of the system_item hack.
  mxfdec: use av_dlog() for 'no corresponding source package found'
  mxfdec: Make mxf->partitions sorted by offset.
  mxfdec: parse ThisPartition
  mxfdec: Speed up metadata and index parsing.
  mxfdec: Make sure DataDefinition is consistent between material track and source track.
  mxfdec: add EssenceContainer UL found in 0001GL00.MXF.A1.mxf_opatom.mxf
  mxfdec: Add hack that adjusts the n_delta calculation when system items are present.
  mxfdec: Parse IndexTableSegments and convert them into AVIndexEntry arrays.
  mxfdec: Move FooterPartition to MXFContext and make sure it is never zero.
  mxfdec: check return value of avio_seek
  mxfdec: skip to end of structural sets
  ...

Conflicts:
	configure
	libavcodec/pnm.c
	libavformat/mxfdec.c
	libavformat/riff.c
	libavformat/rtsp.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-23 01:05:20 +01:00
Philip Langdale
9bf9c314a0 CrystalHD: Back up extradata to allow decoder reinit to work.
This was a regression that came in when I switched to using the
h.264 annex b filter all the time. As the filter modifies extradata,
its use violates the statelessness assumption that exists in the
'ffmpeg' command line tool, and maybe elsewhere. It assumes that
a docoder can be reinitalised and pointed to an existing stream and
get the same results.

For now, the only way to meet this requirement is to backup the
extradata.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 23:40:24 +01:00
Philip Langdale
eaf4bf6df2 CrystalHD: Initialise variables to silence valgrind.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 23:40:24 +01:00
Michael Niedermayer
89ddff92a3 Revert "movenc: simplify handling of pcm vs. adpcm vs. other compressed codecs"
This reverts commit 8e8c51318c.

Fixes Ticket873

Conflicts:

	tests/ref/acodec/pcm_s16be
	tests/ref/acodec/pcm_s24be
	tests/ref/acodec/pcm_s32be
	tests/ref/acodec/pcm_s8
	tests/ref/lavf/mov

Approved-by: Baptiste Coudurier <baptiste.coudurier@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 23:40:24 +01:00
Alexander Strasser
9c909e8e79 build: Describe --nm and -ld options consistently
Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 23:40:24 +01:00
Michael Niedermayer
199d4478de pthread: Change a signal to a broadcast as multiple threads
have been seen waiting and deadlocking on it in bug125.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 23:07:09 +01:00
Michael Niedermayer
2bb7396bfd base64: 10l endian fix.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 23:06:04 +01:00
Janne Grunau
15cea3695d riff: fix invalid av_freep() calls on EOF in ff_read_riff_info 2012-01-22 19:32:44 +01:00
Michael Niedermayer
c6baa4046a avfilter: add some asserts() to check refcounts.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 19:30:40 +01:00
Carl Eugen Hoyos
66b9d7065a pam: Fix a typo that broke writing and reading PAM files.
Reported and reviewed by Derek Buitenhuis.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 16:38:20 +01:00
Alexander Strasser
72b33eade1 build: Support selecting yasm-compatible assembler
Makes it possible to select the name/path of the tool for compiling
the non-inline assembly code.

Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 16:31:54 +01:00
Michael Niedermayer
234405315f sws: Fix unscaled >8bit planar chroma handling.
Fixes Ticket840

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 15:30:06 +01:00
Janne Grunau
20ea14d0f8 mxfdec: fix memleak on av_realloc failures 2012-01-22 14:47:11 +01:00
Hendrik Leppkes
378b7beff5 mpeg12: fixed parsing in some mpeg2 streams
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 14:42:53 +01:00
Michael Niedermayer
e9a6152e17 lavc: fix FF_LOSS_COLORQUANT detection for gray8a->pal8
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 14:42:53 +01:00
Reimar Döffinger
b4ec645f47 Extract some duplicated code.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-01-22 14:41:15 +01:00
Reimar Döffinger
b64b1608d8 Remove pointless and distracting ()
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-01-22 14:41:15 +01:00
Reimar Döffinger
57608d9029 Simplify: just add header_size directly.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-01-22 14:41:15 +01:00
Reimar Döffinger
b09c93d7bc Move some duplicated code, simplify.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-01-22 14:41:15 +01:00
Reimar Döffinger
0a403588d2 Make variable that always has the same value const.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-01-22 14:41:15 +01:00
Reimar Döffinger
daa47fdd2c Optimized base64 decode by writing 3 bytes at once.
About 25% faster.
decode: 248852 -> 200385 decicycles
(syntax check unchanged)

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-01-22 14:41:15 +01:00
Reimar Döffinger
420719e141 Cosmetics: add do {} while 0 to macro.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2012-01-22 14:41:15 +01:00
Tomas Härdin
fc85729458 mxfdec: Do not parse slices or DeltaEntryArrays.
The most recent demuxing/seeking code does not need them.
2012-01-22 14:40:54 +01:00
Janne Grunau
f028d4d1c3 mxfdec: hybrid demuxing/seeking solution
This uses the old demuxing code for OP1a and separate demuxing code for OPAtom.
Timestamp output is added to the old demuxing code.

The seeking code is made to seek to the start of the desired EditUnit only,
from which the normal demuxing code takes over (if OP1a). This means we
do not use delta entries or slices, only StreamOffsets. OPAtom seeking
basically works like before.

This also makes D-10 seeking behave the same way as OP1a and OPAtom. In other
words, we allow seeking before the start or past the end for D-10 too.

Based on several patches by Tomas Härdin <tomas.hardin@codemill.se> and
Reimar Döffinger <Reimar.Doeffinger@gmx.de>.

Changed av_calloc to av_mallocz, added overflow checks.
2012-01-22 14:40:53 +01:00
Tomas Härdin
1f5f8b2654 mxfdec: Add Avid's essence element key.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:53 +01:00
Carl Eugen Hoyos
44deb9f68d mfxdec: Separate mxf_essence_container_uls for audio and video.
It is a really bad idea to assign a video codec id
when we have set codec_type to audio and vice versa.

Prevents detection of mp2 in mxf as mpeg2video.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:53 +01:00
Tomas Härdin
3cb33fbe91 mxfdec: Compute packet offsets properly.
This replaces the old essence_offset code.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:53 +01:00
Tomas Härdin
f4187945a0 mxfdec: Use MaterialPackage - Track - TrackID instead of the system_item hack.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:53 +01:00
Tomas Härdin
21cc4b3327 mxfdec: use av_dlog() for 'no corresponding source package found'
This is not an error and expected behavior for OPAtom files.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:53 +01:00
Tomas Härdin
c77a5460b1 mxfdec: Make mxf->partitions sorted by offset.
This also zeroes new entries for good measure (used by future patches).

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:53 +01:00
Tomas Härdin
be78e3f6ec mxfdec: parse ThisPartition
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:53 +01:00
Tomas Härdin
775d3b4ab1 mxfdec: Speed up metadata and index parsing.
Specifically, this means parsing as before until we run into essence.
At that point we seek to the footer and parse until EOF. After that we start
seeking backward to the previous partition and parse that until we run into
essence or the next partition. This procedure is repeated until we encounter
the last partition we parsed in the forward direction.

The end result of all this is that large essence containers are not needlessly
parsed. This speeds up parsing large files a lot.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:52 +01:00
Tomas Härdin
0999151962 mxfdec: Make sure DataDefinition is consistent between material track and source track.
This fixes 0001GL.MXF.V1.mxf_opatom.mxf and 0001GL00.MXF.A1.mxf_opatom.mxf
getting two streams each due to both using the same SourcePackageID.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:52 +01:00
Tomas Härdin
0ac5e6a8c4 mxfdec: add EssenceContainer UL found in 0001GL00.MXF.A1.mxf_opatom.mxf
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:52 +01:00
Tomas Härdin
edb5085647 mxfdec: Add hack that adjusts the n_delta calculation when system items are present.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:52 +01:00
Janne Grunau
682b6db706 mxfdec: Parse IndexTableSegments and convert them into AVIndexEntry arrays.
Based on patch from Tomas Härdin <tomas.hardin@codemill.se>
and work by Georg Lippitsch <georg.lippitsch@gmx.at>

Changed av_calloc to av_mallocz and added overflow checks.
2012-01-22 14:40:52 +01:00
Tomas Härdin
83ab10f6e9 mxfdec: Move FooterPartition to MXFContext and make sure it is never zero.
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:52 +01:00
Joakim Plate
3359246d9a mxfdec: check return value of avio_seek
Avoid modifying state if avio_seek fails.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:52 +01:00
Philip de Nier
0662eea6b0 mxfdec: skip to end of structural sets
This fixes reading of partition packs. The code stops reading after the
operational pattern and should skip the array of essence container
labels that follow.

Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2012-01-22 14:40:52 +01:00
Tomas Härdin
d32b3f40c7 mxfdec: parse MXF partitions 2012-01-22 14:40:51 +01:00
Anton Khirnov
b263bf66b7 avserver: fix build after the next bump.
Now that 0.8 is out we can reapply this commit. It breaks shared
avserver builds due to avserver using internal libavformat symbols,
which are now hidden, so this commit also disables avserver with
--enable-shared.
2012-01-22 07:50:41 +01:00
Michael Niedermayer
0421b6dc7a sws: In case of an invalid scaler algorithm, show the invalid value.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 06:57:17 +01:00
Michael Niedermayer
4f11bed7a1 avidec: fix "avidec.c:362: warning: st may be used uninitialized in this function"
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-22 06:57:16 +01:00