ffmpeg.git
3 years agomov: Fix parsing short loci
Michael Niedermayer [Sat, 16 May 2015 11:51:18 +0000 (13:51 +0200)]
mov: Fix parsing short loci

Previously, we required the minimum number of bytes required for
the full box. Don't strictly require the astronomical body and additional
notes fields, but do require an altitude field (which currently isn't
parsed). This matches the initial length check at the start of the function
(which doesn't know about the variable length place field).

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomov: Print reason of loci parsing failure
Michael Niedermayer [Sat, 16 May 2015 11:50:38 +0000 (13:50 +0200)]
mov: Print reason of loci parsing failure

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomov: Add a comment referring to the standard that defines the loci box
Martin Storsjö [Wed, 18 May 2016 10:33:55 +0000 (13:33 +0300)]
mov: Add a comment referring to the standard that defines the loci box

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomovenc: Add a missed const
Martin Storsjö [Wed, 18 May 2016 10:49:57 +0000 (13:49 +0300)]
movenc: Add a missed const

This was missed in e1eb0fc9601, when ff_interleaved_peek was
changed to include const during the evolution of the patch.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomovenc: Add a test for VFR with b-frames, with a duration change at a fragment end
Martin Storsjö [Mon, 9 May 2016 10:48:58 +0000 (13:48 +0300)]
movenc: Add a test for VFR with b-frames, with a duration change at a fragment end

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomovenc: Use packets in interleaving queues for the duration at the end of fragments
Martin Storsjö [Wed, 20 Apr 2016 20:10:37 +0000 (23:10 +0300)]
movenc: Use packets in interleaving queues for the duration at the end of fragments

As long as caller only writes packets using av_interleaved_write_frame
with no manual flushing, this should allow us to always have accurate
durations at the end of fragments, since there should be at least
one queued packet in each stream (except for the stream where the
current packet is being written, but if the muxer itself does the
cutting of fragments, it also has info about the next packet for that
stream).

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomovenc-test: Test write_data_type
Martin Storsjö [Wed, 4 May 2016 19:44:35 +0000 (22:44 +0300)]
movenc-test: Test write_data_type

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomatroskaenc: Provide output bytestream markers
Martin Storsjö [Wed, 4 May 2016 19:31:28 +0000 (22:31 +0300)]
matroskaenc: Provide output bytestream markers

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agomovenc: Provide output bytestream markers for fragmented content
Martin Storsjö [Wed, 4 May 2016 19:18:18 +0000 (22:18 +0300)]
movenc: Provide output bytestream markers for fragmented content

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoflvenc: Provide output bytestream markers
Martin Storsjö [Wed, 4 May 2016 19:06:43 +0000 (22:06 +0300)]
flvenc: Provide output bytestream markers

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoavio: Allow custom IO users to get labels for the output bytestream
Martin Storsjö [Wed, 4 May 2016 14:18:35 +0000 (17:18 +0300)]
avio: Allow custom IO users to get labels for the output bytestream

This allows callers with avio write callbacks to get the bytestream
positions that correspond to keyframes, suitable for live streaming.

In the simplest form, a caller could expect that a header is written
to the bytestream during the avformat_write_header, and the data
output to the avio context during e.g. av_write_frame corresponds
exactly to the current packet passed in.

When combined with av_interleaved_write_frame, and with muxers that
do buffering (most muxers that do some sort of fragmenting or
clustering), the mapping from input data to bytestream positions
is nontrivial.

This allows callers to get directly information about what part
of the bytestream is what, without having to resort to assumptions
about the muxer behaviour.

One keyframe/fragment/block can still be split into multiple (if
they are larger than the aviocontext buffer), which would call
the callback with e.g. AVIO_DATA_MARKER_SYNC_POINT, followed by
AVIO_DATA_MARKER_UNKNOWN for the second time it is called with
the following data.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoavprobe: Print stereo3d information
Vittorio Giovara [Thu, 21 Apr 2016 21:24:08 +0000 (17:24 -0400)]
avprobe: Print stereo3d information

3 years agostereo3d: Add API to get name from value or value from name
Vittorio Giovara [Thu, 21 Apr 2016 21:24:07 +0000 (17:24 -0400)]
stereo3d: Add API to get name from value or value from name

Use it in av_dump_format() instead of a huge switch case.

3 years agolavf: Raw G.729 demuxer
Vladimir Voroshilov [Sat, 19 Mar 2016 21:48:39 +0000 (17:48 -0400)]
lavf: Raw G.729 demuxer

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
3 years agofate: Update fate-lavf-ts after commit 393596f9d5
Martin Storsjö [Tue, 17 May 2016 09:15:46 +0000 (12:15 +0300)]
fate: Update fate-lavf-ts after commit 393596f9d5

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agotools: Port to codec parameters API
Diego Biurrun [Wed, 11 May 2016 13:26:02 +0000 (15:26 +0200)]
tools: Port to codec parameters API

3 years agompegtsenc: stop impersonating ses in sdt
Francois Cartegnie [Tue, 17 May 2016 07:54:30 +0000 (09:54 +0200)]
mpegtsenc: stop impersonating ses in sdt

Unless specified, users must use non registered
range for network id

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agoMove VLC and RL_VLC_ELEM structure definitions to a separate header
Alexandra Hájková [Sat, 14 May 2016 09:45:01 +0000 (11:45 +0200)]
Move VLC and RL_VLC_ELEM structure definitions to a separate header

Use the newly created vlc.h directly instead of including get_bits when needed.
The VLC and RL_VLC_ELEM structures are independent from the bitreader.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agoavconv_dxva2: use the hwcontext API
Anton Khirnov [Sun, 1 May 2016 17:19:17 +0000 (19:19 +0200)]
avconv_dxva2: use the hwcontext API

3 years agohwcontext: add a dxva2 implementation
Anton Khirnov [Thu, 31 Mar 2016 11:12:41 +0000 (13:12 +0200)]
hwcontext: add a dxva2 implementation

3 years agompeg4videodec: Call av_log() in check_marker() with AVCodecContext instead of NULL
Alexandra Hájková [Sat, 14 May 2016 09:28:19 +0000 (11:28 +0200)]
mpeg4videodec: Call av_log() in check_marker() with AVCodecContext instead of NULL

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agoMove check_marker() from get_bits to mpeg4videodec
Alexandra Hájková [Sat, 14 May 2016 09:28:18 +0000 (11:28 +0200)]
Move check_marker() from get_bits to mpeg4videodec

MPEG-4 is the only decoder which uses check_marker().

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agolavc: mark the old audio/video encoding API as deprecated
Anton Khirnov [Sat, 14 May 2016 11:45:05 +0000 (13:45 +0200)]
lavc: mark the old audio/video encoding API as deprecated

3 years agox86inc: Enable AVX emulation in additional cases
Anton Mitrofanov [Wed, 20 Apr 2016 17:35:34 +0000 (19:35 +0200)]
x86inc: Enable AVX emulation in additional cases

Allows emulation to work when dst is equal to src2 as long as the
instruction is commutative, e.g. `addps m0, m1, m0`.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agox86inc: Improve handling of %ifid with multi-token parameters
Anton Mitrofanov [Wed, 20 Apr 2016 17:35:33 +0000 (19:35 +0200)]
x86inc: Improve handling of %ifid with multi-token parameters

The yasm/nasm preprocessor only checks the first token, which means that
parameters such as `dword [rax]` are treated as identifiers, which is
generally not what we want.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agox86inc: Fix AVX emulation of some instructions
Anton Mitrofanov [Wed, 20 Apr 2016 17:35:32 +0000 (19:35 +0200)]
x86inc: Fix AVX emulation of some instructions

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agox86inc: Fix AVX emulation of scalar float instructions
Henrik Gramner [Wed, 20 Apr 2016 17:35:31 +0000 (19:35 +0200)]
x86inc: Fix AVX emulation of scalar float instructions

Those instructions are not commutative since they only change the first
element in the vector and leave the rest unmodified.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agoavpacket: fix setting AVPacket.data in av_packet_ref()
Anton Khirnov [Thu, 12 May 2016 13:34:58 +0000 (15:34 +0200)]
avpacket: fix setting AVPacket.data in av_packet_ref()

The data field does not necessarily point to the beginning of the
underlying AVBuffer.

CC: libav-stable@libav.org
3 years agolavc: make avcodec_open2() fail when the timebase is not set for encoding
Anton Khirnov [Mon, 2 May 2016 16:38:41 +0000 (18:38 +0200)]
lavc: make avcodec_open2() fail when the timebase is not set for encoding

Many encoders use it. There is also a divide by the timebase lower in
this function, which would crash when it is not set.

3 years agoCombine deprecation guards where appropriate
Diego Biurrun [Tue, 3 May 2016 22:32:26 +0000 (00:32 +0200)]
Combine deprecation guards where appropriate

Some code blocks use multiple bits of deprecated API.

3 years agotests: Move all test programs to a subdirectory
Diego Biurrun [Wed, 20 Apr 2016 09:40:40 +0000 (11:40 +0200)]
tests: Move all test programs to a subdirectory

3 years agoSplit global .gitignore file into per-directory files
Diego Biurrun [Wed, 11 May 2016 10:03:34 +0000 (12:03 +0200)]
Split global .gitignore file into per-directory files

3 years agoAdd some more deprecation guards
Diego Biurrun [Tue, 3 May 2016 22:27:19 +0000 (00:27 +0200)]
Add some more deprecation guards

Avoids unused function/label/variable warnings after the next version bump.

3 years agoReduce the scope of some variables
Diego Biurrun [Tue, 3 May 2016 22:15:41 +0000 (00:15 +0200)]
Reduce the scope of some variables

This avoids unused variable warnings after the next version bump.
Also drop a trace level av_log() call that is in the way.

3 years agortsp: Parse SSRC attributes in the SDP
Martin Storsjö [Tue, 4 Dec 2012 13:28:29 +0000 (15:28 +0200)]
rtsp: Parse SSRC attributes in the SDP

When feeding input RTP packets to the depacketizer via custom IO,
it needs to pick the right stream using the payload type for
RTP packets, and using the SSRC for RTCP packets. If the first
packet is an RTCP packet, we don't (currently) know the SSRC
yet and thus can't pick the right RTP depacketizer to handle it.

By parsing the SSRC attribute in the SDP, we can map initial
RTCP packets to the right stream.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agortpdec: Always check if we have the next packet queued
Martin Storsjö [Mon, 14 Jan 2013 15:48:26 +0000 (17:48 +0200)]
rtpdec: Always check if we have the next packet queued

It doesn't matter what the actual reason for not returning
an AVPacket was - if we didn't return any packet and we have
the next one queued, parse it immediately. (rtp_parse_queued_packet
always consumes a queued packet if one exists, so there's no risk
for infinite loops.)

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoavconv_vaapi: fix double-free with some unsupported streams
Mark Thompson [Mon, 9 May 2016 17:53:48 +0000 (18:53 +0100)]
avconv_vaapi: fix double-free with some unsupported streams

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agopgssub: Fix subpicture colorspace and range
Jan Ekström [Sun, 24 Apr 2016 18:33:45 +0000 (20:33 +0200)]
pgssub: Fix subpicture colorspace and range

Widen the values from limited to full range and use BT.709 where it
should be used according to the video resolution:

SD is BT.601, HD is BT.709

Default to BT.709 due to most observed HDMV content being HD.

3 years agocolorspace: Add support for BT709
Jan Ekström [Sun, 24 Apr 2016 18:30:06 +0000 (20:30 +0200)]
colorspace: Add support for BT709

BT.709 coefficients were gathered from the first two parts of BT.709
to BT.2020 conversion guide in ARIB STD-B62 (Pt. 1, Chapter 6.2.2).
They were additionally confirmed by manually calculating values.

3 years agosimple_idct_template: Fix strict aliasing violation
Michael Niedermayer [Sun, 8 May 2016 18:55:40 +0000 (21:55 +0300)]
simple_idct_template: Fix strict aliasing violation

This fixes fate-wmv8-intrax8 in certain configurations, e.g.
gcc 4.4.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoavio: Remove a leftover comment
Martin Storsjö [Wed, 4 May 2016 14:00:52 +0000 (17:00 +0300)]
avio: Remove a leftover comment

The declarations that this comment referred to were removed
in 2439f2ca8 - there is no unbuffered IO in this header now.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoMark read-only tables as static
Diego Biurrun [Wed, 11 Nov 2015 16:38:43 +0000 (17:38 +0100)]
Mark read-only tables as static

3 years agoconfigure: Document --enable-libfontconfig
Diego Biurrun [Mon, 2 May 2016 05:34:35 +0000 (07:34 +0200)]
configure: Document --enable-libfontconfig

3 years agovf_frei0r: Drop overly verbose and broken debug output
Diego Biurrun [Tue, 3 May 2016 13:24:17 +0000 (15:24 +0200)]
vf_frei0r: Drop overly verbose and broken debug output

3 years agocosmetics: Fix spelling mistakes
Vittorio Giovara [Wed, 27 Apr 2016 17:45:23 +0000 (13:45 -0400)]
cosmetics: Fix spelling mistakes

Signed-off-by: Diego Biurrun <diego@biurrun.de>
3 years agoRemove unnecessary get_bits.h #includes and add missing headers where needed.
Alexandra Hájková [Sat, 23 Apr 2016 14:44:11 +0000 (16:44 +0200)]
Remove unnecessary get_bits.h #includes and add missing headers where needed.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
3 years agoh264: Drop broken trace debug output
Diego Biurrun [Tue, 3 May 2016 12:32:08 +0000 (14:32 +0200)]
h264: Drop broken trace debug output

3 years agovaapi: Drop pointless debug output
Diego Biurrun [Thu, 14 Apr 2016 16:25:35 +0000 (18:25 +0200)]
vaapi: Drop pointless debug output

3 years agolibopencore-amr: Fix ff_dlog()/av_log() invocations
Diego Biurrun [Thu, 14 Apr 2016 16:25:16 +0000 (18:25 +0200)]
libopencore-amr: Fix ff_dlog()/av_log() invocations

3 years agoDrop pointless assert.h #includes
Diego Biurrun [Thu, 14 Apr 2016 16:24:51 +0000 (18:24 +0200)]
Drop pointless assert.h #includes

3 years agompegts: Validate the SL Packet Header Configuration
Luca Barbato [Wed, 17 Feb 2016 01:16:42 +0000 (02:16 +0100)]
mpegts: Validate the SL Packet Header Configuration

timeStampLength, OCRLength and AU_Length have well specified upper
boundaries.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
3 years agofate: Add test for MTS2/MSS4
Diego Biurrun [Fri, 22 Apr 2016 16:59:43 +0000 (18:59 +0200)]
fate: Add test for MTS2/MSS4

3 years agortpdec_vp9: Support parsing the scalability structure
Martin Storsjö [Wed, 27 Apr 2016 11:36:57 +0000 (14:36 +0300)]
rtpdec_vp9: Support parsing the scalability structure

We still only support one single layer though, but this allows
receiving streams that have this structure present even for
single layer streams.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agortpdec_h264: Use avpriv_report_missing_feature instead of a manual av_log
Martin Storsjö [Fri, 29 Apr 2016 19:19:33 +0000 (22:19 +0300)]
rtpdec_h264: Use avpriv_report_missing_feature instead of a manual av_log

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agortpdec: Use AVERROR_PATCHWELCOME instead of AVERROR(ENOSYS) for unimplemented features
Martin Storsjö [Fri, 29 Apr 2016 17:37:24 +0000 (20:37 +0300)]
rtpdec: Use AVERROR_PATCHWELCOME instead of AVERROR(ENOSYS) for unimplemented features

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agortpdec_vp9: Update header parsing to spec draft 02
Martin Storsjö [Wed, 27 Apr 2016 11:36:24 +0000 (14:36 +0300)]
rtpdec_vp9: Update header parsing to spec draft 02

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agortpdec_vp9: Make sure to free the temp buffer on close
Martin Storsjö [Wed, 27 Apr 2016 11:03:18 +0000 (14:03 +0300)]
rtpdec_vp9: Make sure to free the temp buffer on close

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoRevert "mmaldec: autodetect by default" since it breaks linking on systems without...
Janne Grunau [Sat, 30 Apr 2016 14:05:32 +0000 (16:05 +0200)]
Revert "mmaldec: autodetect by default" since it breaks linking on systems without mmal libraries

This reverts commit 33ac77e850efdfd0e8835950c3d947baffd4df45.

3 years agommaldec: autodetect by default
wm4 [Thu, 14 Apr 2016 10:21:27 +0000 (12:21 +0200)]
mmaldec: autodetect by default

It qualifies as a system library.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agommaldec: limit internal buffering
wm4 [Thu, 14 Apr 2016 10:21:26 +0000 (12:21 +0200)]
mmaldec: limit internal buffering

This uses a new MMAL feature, which limits the number of extra frames
that can be buffered within the decoder. VIDEO_MAX_NUM_CALLBACKS can
be defined as positive or negative number. Positive numbers are
absolute, and can lead to deadlocks if the user underestimates the
number of required buffers. Negative numbers specify the number of extra
buffers, e.g. -1 means no extra buffer, (-1-N) means N extra buffers.

Set a gratuitous default of -11 (N=10). This is much lower than the
firmware default, which appears to be 96.

This is backwards compatible, but needs a symbol only present in newer
firmware headers. (It's an enum item, so it requires a check in
configure.)

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agommaldec: print the MMAL format FourCC automatically
wm4 [Thu, 14 Apr 2016 10:21:24 +0000 (12:21 +0200)]
mmaldec: print the MMAL format FourCC automatically

Slight simplification. The result is the same. Also, change the
wording of the message as requested in patch review.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agoconfigure: fix mmal build dependencies
wm4 [Thu, 14 Apr 2016 10:21:23 +0000 (12:21 +0200)]
configure: fix mmal build dependencies

The mmal decoders do not depend on the software decoders.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agommaldec: send only a single EOS packet on flushing
wm4 [Thu, 14 Apr 2016 10:21:22 +0000 (12:21 +0200)]
mmaldec: send only a single EOS packet on flushing

Fixes apparent mmal_port_disable() freezes in ffmmal_stop_decoder() when
calling ffmmal_decode() with flush semantics a large number of times in
a row.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agommaldec: correct package buffering accounting
wm4 [Thu, 14 Apr 2016 10:21:21 +0000 (12:21 +0200)]
mmaldec: correct package buffering accounting

The assert in ffmmal_stop_decoder() could trigger sometimes. The
packets_buffered counter was indeed not correctly maintained, and
packets were not subtracted from it if they were still in the waiting
queue.

For some reason, this happened especially with VC-1.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agommaldec: add vc1 decoding support
wm4 [Thu, 14 Apr 2016 10:21:20 +0000 (12:21 +0200)]
mmaldec: add vc1 decoding support

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agommaldec: Add mpeg2 decoding support
Julian Scheel [Thu, 14 Apr 2016 10:21:19 +0000 (12:21 +0200)]
mmaldec: Add mpeg2 decoding support

Register mmaldec as mpeg2 decoder. Supporting mpeg2 in mmaldec is just a
matter of setting the correct MMAL_ENCODING on the input port. To ease the
addition of further supported mmal codecs a macro is introduced to generate
the decoder and decoder class structs.

Signed-off-by: Julian Scheel <julian@jusst.de>
Signed-off-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agommaldec: Fix avpriv_atomic_get usage
Julian Scheel [Thu, 14 Apr 2016 10:21:18 +0000 (12:21 +0200)]
mmaldec: Fix avpriv_atomic_get usage

There is no avpriv_atomic_get, instead avpriv_atomic_int_get is to be used for
integers. This fixes building mmaldec.

Signed-off-by: Julian Scheel <julian@jusst.de>
Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agommaldec: Use av_assert0() instead of assert()
Michael Niedermayer [Thu, 14 Apr 2016 10:21:17 +0000 (12:21 +0200)]
mmaldec: Use av_assert0() instead of assert()

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agotestprogs: Mark some tables as static const
Diego Biurrun [Thu, 7 Apr 2016 16:52:10 +0000 (18:52 +0200)]
testprogs: Mark some tables as static const

3 years agofate: Add test for MSS1
Diego Biurrun [Sat, 16 Apr 2016 16:06:16 +0000 (18:06 +0200)]
fate: Add test for MSS1

3 years agodds: Add support for monochrome images
Vittorio Giovara [Fri, 22 Apr 2016 21:28:04 +0000 (17:28 -0400)]
dds: Add support for monochrome images

3 years agodds: Drop gray-alpha swapping
Vittorio Giovara [Fri, 22 Apr 2016 21:28:03 +0000 (17:28 -0400)]
dds: Drop gray-alpha swapping

The original sample was generated with invalid software.

3 years agodxva2_h264: Unbreak compilation after 3176217c6
Martin Storsjö [Mon, 25 Apr 2016 07:12:24 +0000 (10:12 +0300)]
dxva2_h264: Unbreak compilation after 3176217c6

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoape: Unbreak adaptcoeffs computation
Luca Barbato [Thu, 21 Apr 2016 14:09:38 +0000 (16:09 +0200)]
ape: Unbreak adaptcoeffs computation

And simplify and explain the expression.

Fault introduced in f3fdef108eb06b1e71b29152bf6822519e787efe

3 years agoh264: eliminate max_contexts
Anton Khirnov [Wed, 13 Apr 2016 15:33:59 +0000 (17:33 +0200)]
h264: eliminate max_contexts

It is always equal to nb_slice_ctx.

3 years agoh264: allocate some tables per slice contexts, not threads
Anton Khirnov [Wed, 13 Apr 2016 15:31:27 +0000 (17:31 +0200)]
h264: allocate some tables per slice contexts, not threads

This is more correct and avoids wasting space when frame threading is
used.

3 years agoh264: remove an artificial restriction on the number of slice threads
Anton Khirnov [Wed, 13 Apr 2016 15:28:26 +0000 (17:28 +0200)]
h264: remove an artificial restriction on the number of slice threads

This limit is now unnecessary, we can easily support an arbitrary number
of threads.

3 years agoh264: remove pointless setting of some variables in loop_filter
Anton Khirnov [Wed, 13 Apr 2016 15:17:51 +0000 (17:17 +0200)]
h264: remove pointless setting of some variables in loop_filter

Those should already be set to the correct values.

3 years agoh264: remove a pointless comment
Anton Khirnov [Wed, 13 Apr 2016 15:15:40 +0000 (17:15 +0200)]
h264: remove a pointless comment

3 years agoh264: make slice threading work with deblocking_filter=1
Anton Khirnov [Wed, 13 Apr 2016 11:52:36 +0000 (13:52 +0200)]
h264: make slice threading work with deblocking_filter=1

In such a case, decode the MBs in parallel without the loop filter, then
execute the filter serially.

The ref2frm array was previously moved to H264SliceContext. That was
incorrect, since it applies to all the slices and should properly be in
H264Context (it did not actually break decoding, since this distinction
only becomes relevant with slice threading and deblocking_filter=1,
which was not implemented before this commit). The ref2frm array is thus
moved back to H264Context.

3 years agoh264: remove H264Context.pict_type
Anton Khirnov [Mon, 11 Apr 2016 14:32:02 +0000 (16:32 +0200)]
h264: remove H264Context.pict_type

It is not used for anything internally, just exported in the output
frames. So remove the indirection and set it directly in frame_start().

3 years agoh264: drop a pointless indirection
Anton Khirnov [Mon, 11 Apr 2016 14:19:01 +0000 (16:19 +0200)]
h264: drop a pointless indirection

3 years agoh264: remove unused H264SliceContext.rbsp_buffer
Anton Khirnov [Mon, 11 Apr 2016 14:04:05 +0000 (16:04 +0200)]
h264: remove unused H264SliceContext.rbsp_buffer

3 years agoh264: merge ff_h264_free_context() into h264_decode_end()
Anton Khirnov [Mon, 11 Apr 2016 13:44:57 +0000 (15:44 +0200)]
h264: merge ff_h264_free_context() into h264_decode_end()

It is no longer called from outside the h264 decoder.

3 years agoh264: eliminate low_delay
Anton Khirnov [Mon, 11 Apr 2016 13:38:42 +0000 (15:38 +0200)]
h264: eliminate low_delay

It is always unconditionally initialized in decode_postinit() and then
immediately used in one place further below. All the other places where
it is accessed are just useless fluff.

3 years agoh264: remove a stale comment
Anton Khirnov [Mon, 11 Apr 2016 12:17:10 +0000 (14:17 +0200)]
h264: remove a stale comment

This comment used to apply to code that was removed.

3 years agoh264_refs: remove an unused parameter from ff_h264_fill_mbaff_ref_list()
Anton Khirnov [Mon, 11 Apr 2016 08:06:08 +0000 (10:06 +0200)]
h264_refs: remove an unused parameter from ff_h264_fill_mbaff_ref_list()

3 years agoh264_refs: make the H264Context const where possible
Anton Khirnov [Mon, 11 Apr 2016 08:05:25 +0000 (10:05 +0200)]
h264_refs: make the H264Context const where possible

3 years agoh264_refs: reorder functions to avoid forward declarations
Anton Khirnov [Mon, 11 Apr 2016 07:56:29 +0000 (09:56 +0200)]
h264_refs: reorder functions to avoid forward declarations

3 years agoh264: eliminate copy_fields
Anton Khirnov [Mon, 11 Apr 2016 07:27:08 +0000 (09:27 +0200)]
h264: eliminate copy_fields

It is very fragile against fields being moved and hides what is actually
being copied. Copy all the fields explicitly instead.

3 years agoh264_parser: remove the remaining dependencies on the h264 decoder
Anton Khirnov [Tue, 29 Mar 2016 02:19:50 +0000 (04:19 +0200)]
h264_parser: remove the remaining dependencies on the h264 decoder

3 years agoh264: decouple extradata parsing from the decoder
Anton Khirnov [Tue, 29 Mar 2016 02:09:14 +0000 (04:09 +0200)]
h264: decouple extradata parsing from the decoder

This will allow decoupling the parser from the decoder.

3 years agoh264: decouple h264_sei from the h264 decoder
Anton Khirnov [Tue, 22 Mar 2016 12:31:21 +0000 (13:31 +0100)]
h264: decouple h264_sei from the h264 decoder

Make the SEI parsing independent of the H264Context, to allow
decoupling the parser from the decoder.

3 years agoh264: factor out calculating the POC count into a separate file
Anton Khirnov [Mon, 21 Mar 2016 15:14:31 +0000 (16:14 +0100)]
h264: factor out calculating the POC count into a separate file

This will allow decoupling the parser from the decoder.

3 years agoh264_parser: move the H264DSPContext to the parser context
Anton Khirnov [Mon, 28 Mar 2016 08:56:51 +0000 (10:56 +0200)]
h264_parser: move the H264DSPContext to the parser context

3 years agoh264: decouple h264_ps from the h264 decoder
Anton Khirnov [Tue, 22 Mar 2016 12:31:21 +0000 (13:31 +0100)]
h264: decouple h264_ps from the h264 decoder

Make the SPS/PPS parsing independent of the H264Context, to allow
decoupling the parser from the decoder. The change is modelled after the
one done earlier for HEVC.

Move the dequant buffers to the PPS to avoid complex checks whether they
changed and an expensive copy for frame threads.

3 years agoh264_parser: eliminate H264SliceContext usage
Anton Khirnov [Mon, 21 Mar 2016 18:17:03 +0000 (19:17 +0100)]
h264_parser: eliminate H264SliceContext usage

It is no longer needed for anything.

3 years agoh264_parse: make sure the ref count is zeroed on all failure paths
Anton Khirnov [Mon, 21 Mar 2016 15:50:11 +0000 (16:50 +0100)]
h264_parse: make sure the ref count is zeroed on all failure paths

3 years agoh264: factor out parsing the reference count into a separate file
Anton Khirnov [Mon, 21 Mar 2016 15:14:31 +0000 (16:14 +0100)]
h264: factor out parsing the reference count into a separate file

This will allow decoupling the parser from the decoder.

3 years agoh264: stop testing whether the reference count changes in ff_set_ref_count()
Anton Khirnov [Mon, 21 Mar 2016 15:30:38 +0000 (16:30 +0100)]
h264: stop testing whether the reference count changes in ff_set_ref_count()

It is no longer necessary after 741b494fa8cd28a7d096349bac183893c236e3f9