OSDN Git Service

android-x86/external-ffmpeg.git
7 years agodxtory: Convert to the new bitstream reader
Alexandra Hájková [Sat, 9 Apr 2016 17:37:46 +0000 (19:37 +0200)]
dxtory: Convert to the new bitstream reader

7 years agoapedec: Convert to the new bitstream reader
Alexandra Hájková [Fri, 8 Apr 2016 17:49:07 +0000 (19:49 +0200)]
apedec: Convert to the new bitstream reader

7 years agompegvideoenc: make a table const
Anton Khirnov [Sun, 22 May 2016 19:20:31 +0000 (21:20 +0200)]
mpegvideoenc: make a table const

7 years agozmbvenc: get rid of a global table
Anton Khirnov [Sun, 22 May 2016 19:09:58 +0000 (21:09 +0200)]
zmbvenc: get rid of a global table

7 years agohevc: Mark as having threadsafe init
Derek Buitenhuis [Wed, 11 Jan 2017 18:12:19 +0000 (13:12 -0500)]
hevc: Mark as having threadsafe init

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
7 years agoals: Convert to the new bitstream reader
Alexandra Hájková [Fri, 8 Apr 2016 17:22:46 +0000 (19:22 +0200)]
als: Convert to the new bitstream reader

7 years agonvenc: Explicitly push the cuda context on encoding
Luca Barbato [Fri, 13 Jan 2017 09:53:35 +0000 (10:53 +0100)]
nvenc: Explicitly push the cuda context on encoding

Make sure that NVENC does not misbehave if other cuda usages happen
in the application.

7 years agoalac: Convert to the new bitstream reader
Alexandra Hájková [Thu, 7 Apr 2016 20:04:58 +0000 (22:04 +0200)]
alac: Convert to the new bitstream reader

7 years agortp: Convert to the new bitstream reader
Alexandra Hájková [Sun, 17 Apr 2016 14:59:24 +0000 (16:59 +0200)]
rtp: Convert to the new bitstream reader

7 years agomov: Convert to the new bitstream reader
Alexandra Hájková [Sat, 16 Apr 2016 10:17:24 +0000 (12:17 +0200)]
mov: Convert to the new bitstream reader

7 years agoavconv: Do not pass NULL to avio_tell
Luca Barbato [Thu, 15 Dec 2016 17:59:41 +0000 (18:59 +0100)]
avconv: Do not pass NULL to avio_tell

The null demuxer does not have a backing AVIOContext.

7 years agoqsv: Set the correct range for la_depth
Luca Barbato [Wed, 14 Dec 2016 10:58:18 +0000 (11:58 +0100)]
qsv: Set the correct range for la_depth

Setting an invalid range for it makes the encoder behave inconsistently.

7 years agotheora: export cropping information instead of handling it internally
Anton Khirnov [Sun, 18 Dec 2016 20:11:47 +0000 (21:11 +0100)]
theora: export cropping information instead of handling it internally

7 years agoh264dec: export cropping information instead of handling it internally
Anton Khirnov [Sun, 18 Dec 2016 20:11:47 +0000 (21:11 +0100)]
h264dec: export cropping information instead of handling it internally

7 years agoh264dec: be more explicit in handling container cropping
Anton Khirnov [Tue, 27 Dec 2016 18:07:18 +0000 (19:07 +0100)]
h264dec: be more explicit in handling container cropping

The current condition can trigger in cases where it shouldn't, with
unexpected results.
Make sure that:
- container cropping is really based on the original dimensions from the
  caller
- those dimenions are discarded on size change

The code is still quite hacky and eventually should be deprecated and
removed, with the decision about which cropping is used delegated to the
caller.

7 years agohevcdec: export cropping information instead of handling it internally
Anton Khirnov [Sun, 18 Dec 2016 20:11:47 +0000 (21:11 +0100)]
hevcdec: export cropping information instead of handling it internally

7 years agolavc: add an option for exporting cropping information to the caller
Anton Khirnov [Sun, 18 Dec 2016 15:42:24 +0000 (16:42 +0100)]
lavc: add an option for exporting cropping information to the caller

Also, add generic code for handling cropping, so the decoders can export
just the cropping size and not bother with the rest.

7 years agoframe: add a cropping rectangle to AVFrame
Anton Khirnov [Sun, 18 Dec 2016 11:30:27 +0000 (12:30 +0100)]
frame: add a cropping rectangle to AVFrame

Extend the width/height doxy to clarify that it should store coded
values.

7 years agoqsvdec: do not sync PIX_FMT_QSV surfaces
Anton Khirnov [Sat, 7 Jan 2017 20:06:16 +0000 (21:06 +0100)]
qsvdec: do not sync PIX_FMT_QSV surfaces

Introducing enforced sync points in arbitrary places is bad for
performance. Since the vast majority of receiving code (QSV VPP or
encoders, retrieving frames through hwcontext) will do the syncing, this
change should not be visible to most callers. But bumping micro just in
case.

This is also consistent with what VAAPI hwaccel does.

7 years agodxva2: allow an empty array of ID3D11VideoDecoderOutputView
Steve Lhomme [Tue, 3 Jan 2017 16:31:51 +0000 (17:31 +0100)]
dxva2: allow an empty array of ID3D11VideoDecoderOutputView

We can pick the correct slice index directly from the ID3D11VideoDecoderOutputView
casted from data[3].

Signed-off-by: Anton Khirnov <anton@khirnov.net>
7 years agodxva2: get the slice number directly from the surface in D3D11VA
Steve Lhomme [Wed, 4 Jan 2017 12:44:12 +0000 (13:44 +0100)]
dxva2: get the slice number directly from the surface in D3D11VA

No need to loop through the known surfaces, we'll use the requested surface
anyway.

The loop is only done for DXVA2.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
7 years agoReplace cmdutils_common_opts.h by a macro
Diego Biurrun [Tue, 17 May 2011 15:06:57 +0000 (17:06 +0200)]
Replace cmdutils_common_opts.h by a macro

7 years agobuild: Remove stray duplicate conditional variable declaration
Diego Biurrun [Thu, 5 Jan 2017 16:02:31 +0000 (17:02 +0100)]
build: Remove stray duplicate conditional variable declaration

7 years agovaapi_h264: Scale log2_max_pic_order_cnt_lsb with max_b_frames
Mark Thompson [Wed, 4 Jan 2017 23:05:10 +0000 (23:05 +0000)]
vaapi_h264: Scale log2_max_pic_order_cnt_lsb with max_b_frames

Before this change, it was possible to overflow pic_order_cnt_lsb and
generate a stream with invalid POC numbering.  This makes sure that
the field is large enough that a single IDR B* P sequence uses fewer
than half the available POC lsb values.

7 years agovaapi_encode: Support forcing IDR frames via AVFrame.pict_type
Mark Thompson [Mon, 12 Dec 2016 21:25:28 +0000 (21:25 +0000)]
vaapi_encode: Support forcing IDR frames via AVFrame.pict_type

7 years agovaapi_encode: Fix GOP sizing
Mark Thompson [Wed, 4 Jan 2017 23:17:23 +0000 (23:17 +0000)]
vaapi_encode: Fix GOP sizing

This change makes the configured GOP size be respected exactly -
previously the value could be exceeded slightly due to flaws in the
frame type selection logic.

7 years agointerplayvideo: Convert to the new bitstream reader
Alexandra Hájková [Tue, 12 Apr 2016 15:18:09 +0000 (17:18 +0200)]
interplayvideo: Convert to the new bitstream reader

7 years agoadx: Convert to the new bitstream reader
Alexandra Hájková [Tue, 12 Apr 2016 10:32:06 +0000 (12:32 +0200)]
adx: Convert to the new bitstream reader

7 years agodvbsubdec: Convert to the new bitstream reader
Alexandra Hájková [Tue, 12 Apr 2016 10:29:20 +0000 (12:29 +0200)]
dvbsubdec: Convert to the new bitstream reader

7 years agomotionpixels: Convert to the new bitstream reader
Alexandra Hájková [Sun, 10 Apr 2016 19:41:02 +0000 (21:41 +0200)]
motionpixels: Convert to the new bitstream reader

7 years agohmac: Explicitly convert types at function pointer assignment
Diego Biurrun [Thu, 5 Feb 2015 18:45:41 +0000 (19:45 +0100)]
hmac: Explicitly convert types at function pointer assignment

Fixes a number of warnings of the type
libavutil/hmac.c:61:21: warning: assignment from incompatible pointer type

7 years agocrypto: consistently use size_t as type for length parameters
Diego Biurrun [Thu, 15 Dec 2016 11:46:03 +0000 (12:46 +0100)]
crypto: consistently use size_t as type for length parameters

size_t is the correct type to use for sizes.

7 years agoh264dec: make ff_h264_decode_init() static
Anton Khirnov [Tue, 27 Dec 2016 17:54:47 +0000 (18:54 +0100)]
h264dec: make ff_h264_decode_init() static

It is not called from outside h264dec.c anymore.

7 years agoh264dec: drop a redundant check
Anton Khirnov [Tue, 27 Dec 2016 17:16:36 +0000 (18:16 +0100)]
h264dec: drop a redundant check

Cropping parameters are already checked for validity during SPS parsing,
no need to check them again.

7 years agox86inc: Avoid using eax/rax for storing the stack pointer
Henrik Gramner [Sun, 25 Dec 2016 19:24:59 +0000 (20:24 +0100)]
x86inc: Avoid using eax/rax for storing the stack pointer

When allocating stack space with an alignment requirement that is larger
than the current stack alignment we need to store a copy of the original
stack pointer in order to be able to restore it later.

If we chose to use another register for this purpose we should not pick
eax/rax since it can be overwritten as a return value.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
7 years agoChangelog: mention the new avbuild/ directory
Anton Khirnov [Mon, 9 Jan 2017 10:09:16 +0000 (11:09 +0100)]
Changelog: mention the new avbuild/ directory

Especially config.log is often read by users trying to compile Libav, so
its move should be documented.

7 years agofate: Skip the checkasm test if CONFIG_STATIC is disabled
Martin Storsjö [Fri, 30 Dec 2016 19:45:51 +0000 (21:45 +0200)]
fate: Skip the checkasm test if CONFIG_STATIC is disabled

When building DLLs with MSVC, CONFIG_STATIC is disabled (see
d66c52c2b3694 for a more verbose explanation) since the built
object files can't be linked statically (which checkasm does).

This worked up until recently, only by luck.

Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agohevcdec: add P010 support for D3D11VA
Steve Lhomme [Wed, 4 Jan 2017 08:39:31 +0000 (09:39 +0100)]
hevcdec: add P010 support for D3D11VA

Given it's the same API than DVXA2 I don't know why the same output was not
enabled for both.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
7 years agodxva2: Factorize DXVA context validity test into a single macro
Steve Lhomme [Tue, 3 Jan 2017 16:31:49 +0000 (17:31 +0100)]
dxva2: Factorize DXVA context validity test into a single macro

Signed-off-by: Diego Biurrun <diego@biurrun.de>
7 years agodxva2: Make ff_dxva2_get_surface() static and drop its name prefix
Steve Lhomme [Tue, 3 Jan 2017 16:31:48 +0000 (17:31 +0100)]
dxva2: Make ff_dxva2_get_surface() static and drop its name prefix

Signed-off-by: Diego Biurrun <diego@biurrun.de>
7 years agomatroskadec: make sure not to leave EbmlBin in an inconsistent state
Anton Khirnov [Wed, 28 Dec 2016 12:15:14 +0000 (13:15 +0100)]
matroskadec: make sure not to leave EbmlBin in an inconsistent state

If a read fails, the current code will free the data but leave the size
non-zero. Make sure the size is zeroed in such a case.

CC: libav-stable@libav.org
Bug-Id: 1001
Found-By: Kamil Frankowicz
Signed-off-by: Sean McGovern <gseanmcg@gmail.com>
7 years agovaapi_h264: Fix POC on IDR frames
Jun Zhao [Fri, 11 Nov 2016 06:53:49 +0000 (14:53 +0800)]
vaapi_h264: Fix POC on IDR frames

In H.264 section 8.2.1, we have that "The bitstream shall not contain
data that result in Min(TopFieldOrderCnt, BottomFieldOrderCnt) not
equal to 0 for a coded IDR frame".  This fixes the encoder to always
conform to this - previously the POC values formed an unbroken
sequence, not resetting to zero on IDR frames.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
7 years agovaapi_h265: Fix build failure with old libva without 10-bit surfaces
Mark Thompson [Sat, 10 Dec 2016 15:57:01 +0000 (15:57 +0000)]
vaapi_h265: Fix build failure with old libva without 10-bit surfaces

10-bit surface support was added in libva 1.6.2, earlier versions
support H.265 encoding in 8-bit only.

7 years agoaarch64: vp9mc: Fix a comment to refer to a register with the right name
Martin Storsjö [Fri, 16 Dec 2016 20:59:45 +0000 (22:59 +0200)]
aarch64: vp9mc: Fix a comment to refer to a register with the right name

Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agoaarch64: vp9dsp: Fix vertical alignment in the init file
Martin Storsjö [Thu, 15 Dec 2016 10:00:18 +0000 (12:00 +0200)]
aarch64: vp9dsp: Fix vertical alignment in the init file

Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agoarm: vp9mc: Fix vertical alignment of operands
Martin Storsjö [Fri, 9 Dec 2016 10:36:28 +0000 (12:36 +0200)]
arm: vp9mc: Fix vertical alignment of operands

Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agocmdutils: update copyright year to 2017
Sean McGovern [Sun, 1 Jan 2017 21:31:15 +0000 (16:31 -0500)]
cmdutils: update copyright year to 2017

CC: libav-stable@libav.org
7 years agoconfigure: Fix typo in incdir variable written to config.sh
Diego Biurrun [Thu, 29 Dec 2016 13:34:52 +0000 (14:34 +0100)]
configure: Fix typo in incdir variable written to config.sh

This fixes includedir lines in pkg-config files broken after 92db508307.

7 years agofate: Tweak printing of ignored tests
Martin Storsjö [Thu, 29 Dec 2016 12:20:51 +0000 (14:20 +0200)]
fate: Tweak printing of ignored tests

Use a tab instead of two spaces, skip the fate prefix for the test name.

This makes IGNORE line fit in even better with the other make printouts.

Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agofate: Unset the sig variable if ignoring a test failure
Martin Storsjö [Wed, 28 Dec 2016 22:15:17 +0000 (00:15 +0200)]
fate: Unset the sig variable if ignoring a test failure

Otherwise the .rep file would still contain a signal instead of a
zero, even if the process returned success.

Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agofate: Add --ignore-tests configure option for omitting specific FATE tests
Janne Grunau [Tue, 27 Dec 2016 22:19:49 +0000 (00:19 +0200)]
fate: Add --ignore-tests configure option for omitting specific FATE tests

This can be useful to filter out noise in known-broken scenarios like
miscompilation by legacy compilers and similar.

Originally based on a patch by Diego Biurrun.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
7 years agobuild: Add version numbers to "Requires" entries in pkg-config files
Diego Biurrun [Sun, 25 Dec 2016 17:25:41 +0000 (18:25 +0100)]
build: Add version numbers to "Requires" entries in pkg-config files

The (required) version numbers disappeared after edb4348732.

7 years agoparser: Add missing #include for printing ISO C99 conversion specifiers
Diego Biurrun [Sat, 24 Dec 2016 10:36:53 +0000 (11:36 +0100)]
parser: Add missing #include for printing ISO C99 conversion specifiers

7 years agomatroskadec: fix SRT subtitle duration
John Stebbins [Thu, 22 Dec 2016 17:23:30 +0000 (09:23 -0800)]
matroskadec: fix SRT subtitle duration

The codec id for SRT was changed and conditionals were not updated.

7 years agohttp: Check for negative chunk sizes
Martin Storsjö [Thu, 15 Dec 2016 08:24:20 +0000 (10:24 +0200)]
http: Check for negative chunk sizes

A negative chunk size is illegal and would end up used as
length for memcpy, where it would lead to memory accesses
out of bounds.

Found-by: Paul Cher <paulcher@icloud.com>
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agoUse correct printf conversion specifiers for POSIX integer types
Diego Biurrun [Wed, 21 Dec 2016 10:25:34 +0000 (11:25 +0100)]
Use correct printf conversion specifiers for POSIX integer types

7 years agobuild: Generate pkg-config files from Make and not from configure
Diego Biurrun [Tue, 20 Dec 2016 13:27:19 +0000 (14:27 +0100)]
build: Generate pkg-config files from Make and not from configure

This moves work from the configure to the Make stage where it can
be parallelized and ensures that pkgconfig files are updated when
library versions change.

Bug-Id: 449

7 years agobuild: Store library version numbers in .version files
Diego Biurrun [Sat, 17 Dec 2016 19:01:07 +0000 (20:01 +0100)]
build: Store library version numbers in .version files

This moves work from the configure to the Make stage where it can
be parallelized and ensures that shared libraries are built with
the right version number in the filename.

7 years agobuild: Move build-system-related helper files to a separate subdirectory
Diego Biurrun [Tue, 26 Mar 2013 00:11:11 +0000 (01:11 +0100)]
build: Move build-system-related helper files to a separate subdirectory

This unclutters the top-level directory and groups related files together.

7 years agoratecontrol: Drop xvid-rc-related struct members unused after a6901b9c6
Diego Biurrun [Mon, 19 Dec 2016 11:20:14 +0000 (12:20 +0100)]
ratecontrol: Drop xvid-rc-related struct members unused after a6901b9c6

7 years agonvenc: Update check for lookahead
Ruta Gadkari [Mon, 19 Dec 2016 11:14:04 +0000 (16:44 +0530)]
nvenc: Update check for lookahead

By default it is -1.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
7 years agoaarch64: vp9itxfm: Use the offset parameter to movrel
Martin Storsjö [Mon, 19 Dec 2016 08:38:33 +0000 (10:38 +0200)]
aarch64: vp9itxfm: Use the offset parameter to movrel

This fixes build failures for iOS, broken since cad42fadcd2c.

Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agotta: Convert to the new bitstream reader
Alexandra Hájková [Thu, 14 Apr 2016 08:54:11 +0000 (10:54 +0200)]
tta: Convert to the new bitstream reader

7 years agomlp: Convert to the new bitstream reader
Alexandra Hájková [Sun, 10 Apr 2016 18:47:11 +0000 (20:47 +0200)]
mlp: Convert to the new bitstream reader

7 years agounary: Convert to the new bitstream reader
Alexandra Hájková [Wed, 8 Jun 2016 09:31:33 +0000 (11:31 +0200)]
unary: Convert to the new bitstream reader

7 years agoh264dec: make sure to only end a field if it has been started
Anton Khirnov [Sun, 18 Dec 2016 10:29:25 +0000 (11:29 +0100)]
h264dec: make sure to only end a field if it has been started

Calling ff_h264_field_end() when the per-field state is not properly
initialized leads to all kinds of undefined behaviour.

CC: libav-stable@libav.org
Bug-Id: 977 978 992

7 years agompeg12dec: move setting first_field to mpeg_field_start()
Anton Khirnov [Sat, 17 Dec 2016 16:04:55 +0000 (17:04 +0100)]
mpeg12dec: move setting first_field to mpeg_field_start()

For field picture, the first_field is set based on its previous value.
Before this commit, first_field is set when reading the picture
coding extension. However, in corrupted files there may be multiple
picture coding extension headers, so the final value of first_field that
is actually used during decoding can be wrong. That can lead to various
undefined behaviour, like predicting from a non-existing field.

Fix this problem, by setting first_field in mpeg_field_start(), which
should be called exactly once per field.

CC: libav-stable@libav.org
Bug-ID: 999

7 years agompeg12dec: avoid signed overflow in bitrate calculation
Anton Khirnov [Sat, 17 Dec 2016 14:07:51 +0000 (15:07 +0100)]
mpeg12dec: avoid signed overflow in bitrate calculation

CC: libav-stable@libav.org
Bug-Id: 981
Found-By: Agostino Sarubbo
7 years agompegvideo_parser: avoid signed overflow in bitrate calculation
Anton Khirnov [Sat, 17 Dec 2016 14:07:51 +0000 (15:07 +0100)]
mpegvideo_parser: avoid signed overflow in bitrate calculation

CC: libav-stable@libav.org
Bug-Id: 981
Found-By: Agostino Sarubbo
7 years agomov: fix a possible invalid read in mov_read_mac_string()
Anton Khirnov [Sat, 17 Dec 2016 13:17:20 +0000 (14:17 +0100)]
mov: fix a possible invalid read in mov_read_mac_string()

When the input string is too large, so the second condition in if ()
fails, the code will erroneously execute the else branch, indexing the
mac_to_unicode table with a negative index.

CC: libav-stable@libav.org
Bug-Id: 1000
Found-By: Kamil Frankowicz
7 years agovaapi_decode: use the correct logging context
Anton Khirnov [Mon, 19 Dec 2016 07:13:28 +0000 (08:13 +0100)]
vaapi_decode: use the correct logging context

7 years agohevcdec: add a VAAPI hwaccel
Anton Khirnov [Sun, 2 Oct 2016 06:51:32 +0000 (08:51 +0200)]
hevcdec: add a VAAPI hwaccel

Partially based on a patch by Timo Rothenpieler <timo@rothenpieler.org>.
Additional scaling list handling fix by Jun Zhao <mypopydev@gmail.com>.

7 years agoChangelog: add some missing entries
Anton Khirnov [Thu, 15 Dec 2016 09:23:26 +0000 (10:23 +0100)]
Changelog: add some missing entries

7 years agopthread_frame: do not run hwaccel decoding asynchronously unless it's safe
Anton Khirnov [Thu, 24 Nov 2016 14:14:22 +0000 (15:14 +0100)]
pthread_frame: do not run hwaccel decoding asynchronously unless it's safe

Certain hardware decoding APIs are not guaranteed to be thread-safe, so
having the user access decoded hardware surfaces while the decoder is
running in another thread can cause failures (this is mainly known to
happen with DXVA2).

For such hwaccels, only allow the decoding thread to run while the user
is inside a lavc decode call (avcodec_send_packet/receive_frame).

7 years agopthread_frame: ensure the threads don't run simultaneously with hwaccel
Anton Khirnov [Sat, 3 Dec 2016 14:21:40 +0000 (15:21 +0100)]
pthread_frame: ensure the threads don't run simultaneously with hwaccel

7 years agohevcdec: do not set decoder-global SPS prematurely
Anton Khirnov [Sun, 18 Dec 2016 21:06:32 +0000 (22:06 +0100)]
hevcdec: do not set decoder-global SPS prematurely

It should only be set after the decoder state has been fully initialized
for using that SPS.
Fixes possible invalid reads on get_format() failure.

CC: libav-stable@libav.org
7 years agov4l2: use codec descriptors for mapping a codec name to id
Anton Khirnov [Wed, 14 Dec 2016 12:22:19 +0000 (13:22 +0100)]
v4l2: use codec descriptors for mapping a codec name to id

This mapping has nothing to do with decoder implementations, so using
decoder names is wrong.

7 years agobuild: Add name parameter to check_lib() helper function
Diego Biurrun [Thu, 8 Dec 2016 09:16:34 +0000 (10:16 +0100)]
build: Add name parameter to check_lib() helper function

This allows enabling or disabling the library-related variables from
within the function instead of doing it manually outside of it.

7 years agoconfigure: Disentangle vfw32 and user32 lib handling
Diego Biurrun [Thu, 15 Dec 2016 17:59:46 +0000 (18:59 +0100)]
configure: Disentangle vfw32 and user32 lib handling

Check for and link against user32 instead, which also fixes
the missing dependency of dxva2 on user32 with MSVC.

7 years agoconfigure: fix linking with MSVC when using --disable-optimizations
Steve Lhomme [Thu, 15 Dec 2016 17:00:56 +0000 (18:00 +0100)]
configure: fix linking with MSVC when using --disable-optimizations

Without any optimization flags, MSVC does no dead code elimination (DCE) at
all, even for the most trivial cases. DCE is a prerequisite for building libav
correctly, otherwise there are undefined references to functions for other
architectures and disabled components.

-O1 is the minimal optimization flag for MSVC that does include DCE.

7 years agoconfigure: put d3d11 check in alphabetical order
Steve Lhomme [Thu, 15 Dec 2016 17:00:55 +0000 (18:00 +0100)]
configure: put d3d11 check in alphabetical order

7 years agortmppkt: Check for packet size mismatches
Michael Niedermayer [Mon, 5 Dec 2016 10:14:51 +0000 (11:14 +0100)]
rtmppkt: Check for packet size mismatches

When receiving fragmented packets, the first packet declares the size,
and the later ones normally are small follow-on packets that don't repeat
the size and the other header fields. But technically, the later fragments
also can have a full header, declaring a different size than the previous
packet.

If the follow-on packet declares a larger size than the initial one, we
could end up writing outside of the allocation.

This fixes out of bounds writes.

Found-by: Paul Cher <paulcher@icloud.com>
Reviewed-by: Paul Cher <paulcher@icloud.com>
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agolibavformat: Fix a faulty api deprecation guard in prepare_input_packet
Martin Storsjö [Thu, 15 Dec 2016 07:45:49 +0000 (09:45 +0200)]
libavformat: Fix a faulty api deprecation guard in prepare_input_packet

This seems to have been added by mistake in 11de006b, by not
noticing the negation for the existing condition. This block does
not contain any code that accesses the codec field in AVStream.

This function is meant to serve as a complement to compute_pkt_fields2,
which is guarded by FF_API_COMPUTE_PKT_FIELDS2 && FF_API_LAVF_AVCTX.

Signed-off-by: Martin Storsjö <martin@martin.st>
7 years agoarm64: replace 'bic' with immediate with 'and' with inverted immediate
Janne Grunau [Thu, 8 Dec 2016 19:40:34 +0000 (20:40 +0100)]
arm64: replace 'bic' with immediate with 'and' with inverted immediate

The former is not an official pseudo instruction although gas and llvm's
internal assembler support it. Fixes a build error with xcode 6.2
reported by Memphiz on github.

7 years agoppc: Merge types_altivec.h into util_altivec.h
Diego Biurrun [Tue, 13 Dec 2016 12:50:10 +0000 (13:50 +0100)]
ppc: Merge types_altivec.h into util_altivec.h

There is no point in keeping the two separate.

7 years agoppc: Centralize compiler-specific altivec.h #include handling in one place
Diego Biurrun [Mon, 12 Dec 2016 15:00:04 +0000 (16:00 +0100)]
ppc: Centralize compiler-specific altivec.h #include handling in one place

Also move #includes into canonical order where appropriate.

7 years agoppc: hevcdsp: Use shorthands for vector types
Diego Biurrun [Tue, 13 Dec 2016 12:45:11 +0000 (13:45 +0100)]
ppc: hevcdsp: Use shorthands for vector types

This is more consistent and fixes compilation with clang.

7 years agodecode.h: Add missing headers to fix standalone compilation
Diego Biurrun [Wed, 14 Dec 2016 13:05:16 +0000 (14:05 +0100)]
decode.h: Add missing headers to fix standalone compilation

7 years agopthread_frame: use better memory orders for frame progress
Wan-Teh Chang [Fri, 9 Dec 2016 17:54:47 +0000 (09:54 -0800)]
pthread_frame: use better memory orders for frame progress

This improves commit 59c70227405c214b29971e6272f3a3ff6fcce3d0.

In ff_thread_report_progress(), the fast code path can load
progress[field] with the relaxed memory order, and the slow code path
can store progress[field] with the release memory order. These changes
are mainly intended to avoid confusion when one inspects the source code.
They are unlikely to have measurable performance improvement.

ff_thread_report_progress() and ff_thread_await_progress() form a pair.
ff_thread_await_progress() reads progress[field] with the acquire memory
order (in the fast code path). Therefore, one expects to see
ff_thread_report_progress() write progress[field] with the matching
release memory order.

In the fast code path in ff_thread_report_progress(), the atomic load of
progress[field] doesn't need the acquire memory order because the
calling thread is trying to make the data it just decoded visible to the
other threads, rather than trying to read the data decoded by other
threads.

In ff_thread_get_buffer(), initialize progress[0] and progress[1] using
atomic_init().

Signed-off-by: Wan-Teh Chang <wtc@google.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
7 years agofate: Add h264 test for frame num gaps
Derek Buitenhuis [Mon, 12 Dec 2016 14:33:28 +0000 (14:33 +0000)]
fate: Add h264 test for frame num gaps

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
7 years agoh264_slice: Wait for refs to be available before we use them in error concealment
Derek Buitenhuis [Mon, 12 Dec 2016 14:33:27 +0000 (14:33 +0000)]
h264_slice: Wait for refs to be available before we use them in error concealment

This could happen when there was a frame number gap and frame threading was used.

Debugging-by: Ronald S. Bultje <rsbultje@gmail.com>
Debugging-by: Justin Ruggles <justin.ruggles@gmail.com>
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
CC:libav-stable@libav.org
Signed-off-by: Anton Khirnov <anton@khirnov.net>
7 years agohevc: decouple calling get_format() from exporting the SPS parameters
Anton Khirnov [Sun, 2 Oct 2016 13:39:10 +0000 (15:39 +0200)]
hevc: decouple calling get_format() from exporting the SPS parameters

This makes sure ff_get_format() does not get called unnecessarily from
update_thread_context().

7 years agobinkaudio: switch to the new send/receive API
Anton Khirnov [Thu, 24 Nov 2016 22:05:20 +0000 (23:05 +0100)]
binkaudio: switch to the new send/receive API

It is more natural for this codec and allows to avoid awkward constructs
like "consuming 0 bytes from input". Also, keep a reference to the input
packet to avoid unnecessary copying.

7 years agovp9: split superframes in the filtering stage before actual decoding
Anton Khirnov [Sun, 13 Nov 2016 10:24:16 +0000 (11:24 +0100)]
vp9: split superframes in the filtering stage before actual decoding

Significantly increases the efficiency of frame threading, since
individual frames in a superframe can now be decoded in parallel.

7 years agolavc: add a bitstream filter for splitting VP9 superframes
Anton Khirnov [Sun, 13 Nov 2016 10:00:02 +0000 (11:00 +0100)]
lavc: add a bitstream filter for splitting VP9 superframes

Partially based on code by Ronald S. Bultje <rsbultje@gmail.com>.

7 years agoqsvdec_h2645: switch to the new generic filtering mechanism
Anton Khirnov [Sun, 13 Nov 2016 08:09:06 +0000 (09:09 +0100)]
qsvdec_h2645: switch to the new generic filtering mechanism

Drop the internal manual conversion from the MP4 format to Annex B.

7 years agolavc: add support for filtering packets before decoding
Anton Khirnov [Sat, 12 Nov 2016 16:43:55 +0000 (17:43 +0100)]
lavc: add support for filtering packets before decoding

7 years agodecode: restructure the core decoding code
Anton Khirnov [Wed, 26 Oct 2016 11:59:15 +0000 (13:59 +0200)]
decode: restructure the core decoding code

Currently, the new decoding API is pretty much just a wrapper around the
old deprecated one. This is problematic, since it interferes with making
full use of the flexibility added by the new API. The old API should
also be removed at some future point.

Reorganize the code so that the new send_packet/receive_frame functions
call the actual decoding directly and change the old deprecated
avcodec_decode_* functions into wrappers around the new API.

The new internal API for decoders is now changing as well. Before this
commit, it mirrors the public API, so the decoders need to implement
send_packet() and receive_frame() callbacks. This turns out to require
awkward constructs in both the decoders and the generic code. After this
commit, the decoders only implement the receive_frame() callback and
call a new internal function, ff_decode_get_packet() to obtain input
data, in the same manner to how the bitstream filters now work.

avcodec will now always make a reference to the input packet, which means
that non-refcounted input packets will be copied. Keeping the previous
behaviour, where this copy could sometimes be avoided, would make the
code significantly more complex and fragile for only dubious gains,
since packets are typically small and everyone who cares about
performance should use refcounted packets anyway.

7 years agodecode: be more explicit about storing the last packet properties
Anton Khirnov [Wed, 26 Oct 2016 11:41:12 +0000 (13:41 +0200)]
decode: be more explicit about storing the last packet properties

The current code stores a pointer to the packet passed to the decoder,
which is then used during get_buffer() for timestamps and side data
passthrough. However, since this is a pointer to user data which we do
not own, storing it is potentially dangerous. It is also ill defined for
the new decoding API with split input/output.

Fix this problem by making an explicit internally owned copy of the
packet properties.

7 years agolavc: add a null bitstream filter
Anton Khirnov [Tue, 24 May 2016 13:09:29 +0000 (15:09 +0200)]
lavc: add a null bitstream filter

It is useful for testing/debugging and will also be used as the default
filter in the following commit adding pre-decode filtering to avoid
having a separate non-filtered codepath.