Commit Graph

3848 Commits

Author SHA1 Message Date
Philip Langdale
6e5e139fe3 avcodec/vdpau: Support for VDPAU accelerated HEVC decoding
This change introduces basic support for HEVC decoding through vdpau.
Right now, there are problems with the nvidia driver/library implementation
that mean that frames are incorrectly laid out in memory when they are
returned from the decoder, and it is normally impossible to recover the
complete decoded frame due to loss of data from alignment inconsistencies.

I obviously hope that nvidia will be fixing it in due course - I've verified
the problems exist with their example application.

As such, this support is not useful for any real world application, but I
believe that it is correct (with the caveat that the mangled frames may hide
problems) and will work properly once the nvidia problem is fixed.

Right now it appears that any file encoded by x265 or nvenc is decoded
correctly, but that's because these files don't use a bunch of HEVC
features.

Quick summary:

Features that seem to work:

1) Short Term References
2) Scaling Lists
3) Tiling

Features with known problems:

1) Long Term References

It's hard to tell what's going on here. After I read the nvidia example
app that does not set the IsLongTerm flag on LTRs, and changed my code,
a bunch of frames using LTR started to display correctly, but there
are still samples with glitches that are related to LTRs.

In terms of real world files, both x265 and nvenc only use short term
refs from this list. The divx encoder seems similar.

Signed-off-by: Philip Langdale <philipl@overt.org>
2015-06-25 20:06:47 -07:00
Shawn Rainey
2c77ca459e configure: Fix ranlib failure with older cross toolchains
Cross-compile toolchains without support for ranlib -D would fail.
This fixes the configure script to test the cross ranlib rather than the native ranlib.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-25 18:46:39 +02:00
Michael Niedermayer
ff68b83968 Merge commit '5c018ee18895f88e9e1d2174059dcdd48bf872d2'
* commit '5c018ee18895f88e9e1d2174059dcdd48bf872d2':
  DirectDraw Surface image decoder

Conflicts:
	Changelog
	configure
	doc/general.texi
	libavcodec/Makefile
	libavcodec/version.h
	tests/fate/image.mak

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-22 23:34:56 +02:00
Michael Niedermayer
55219a78c7 Merge commit '7ca3e5203f133eb41a0b5c3a1d753a7427ba72e7'
* commit '7ca3e5203f133eb41a0b5c3a1d753a7427ba72e7':
  Hap decoder and encoder

Conflicts:
	Changelog
	configure
	doc/general.texi
	libavcodec/allcodecs.c
	libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-22 22:47:32 +02:00
Michael Niedermayer
a5b2b22d9a Merge commit 'c0b105756f61d253bdabcc2bb49453a2557e7c3b'
* commit 'c0b105756f61d253bdabcc2bb49453a2557e7c3b':
  txd: Use the TextureDSP module for decoding

Conflicts:
	configure
	libavcodec/s3tc.c
	libavcodec/s3tc.h
	libavcodec/txd.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-22 21:15:50 +02:00
Michael Niedermayer
d1dc22dddd Merge commit '8337e0c57345f24cf6471220e5f8a0ea21b7c1d0'
* commit '8337e0c57345f24cf6471220e5f8a0ea21b7c1d0':
  Introduce a TextureDSP module

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-22 20:57:41 +02:00
Michael Niedermayer
9e5b0f070b Merge commit '2ecfd451649c7a08cb633635df98e59f7c6e2140'
* commit '2ecfd451649c7a08cb633635df98e59f7c6e2140':
  Implement Snappy decompression

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-22 20:47:21 +02:00
Vittorio Giovara
5c018ee188 DirectDraw Surface image decoder
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-06-22 15:23:08 +01:00
Vittorio Giovara
7ca3e5203f Hap decoder and encoder
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-06-22 15:23:08 +01:00
Vittorio Giovara
c0b105756f txd: Use the TextureDSP module for decoding
Using the internal DXTC routines brings support for non multiple of 4
textures. A new test is added to cover this feature. Hashes differ
since the decoding algorithm is different, though no visual changes
have been spotted.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-06-22 15:23:08 +01:00
Vittorio Giovara
8337e0c573 Introduce a TextureDSP module
This module implements generic texture decompression from different
families (DXTC, RGTC, BCn) and texture compression DXTC 1, 3, and 5.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-06-22 15:23:08 +01:00
Luca Barbato
2ecfd45164 Implement Snappy decompression
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-06-22 15:23:08 +01:00
Michael Niedermayer
1e7008675b Merge commit '8655c54160767de1a6b96f8bc310d6e4eaceff48'
* commit '8655c54160767de1a6b96f8bc310d6e4eaceff48':
  libvpx: Support the vp9 extended profiles

Conflicts:
	Changelog
	configure
	libavcodec/libvpx.c
	libavcodec/libvpx.h
	libavcodec/libvpxdec.c
	libavcodec/libvpxenc.c
	libavcodec/version.h

mostly not merged, as requested by jamrial

See: 01e59d48ed
See: 079b7f6eac and others
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-21 22:57:54 +02:00
Luca Barbato
8655c54160 libvpx: Support the vp9 extended profiles
Bump the minimum libvpx version to 1.3.0 and rework the configure logic
to fail only if no decoders and encoders are found.

Based on the original patch from Vittorio.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-06-21 16:27:18 +03:00
Andreas Cadhalpun
72654526e4 configure: make makeinfo_html check more robust
The current check is too strict for newer makeinfo versions.
Existing version strings are:
makeinfo (GNU texinfo) 4.13
makeinfo (GNU texinfo) 5.2
texi2any (GNU texinfo) 5.9.93

Probably version 6 will come in the not too far future.

Reviewed-by: Timothy Gu <timothygu99@gmail.com>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-06-16 21:47:17 +02:00
Andreas Cadhalpun
45babb0121 configure: only disable VSX for !ppc64el
This reverts commit 04f0002, which made it impossible to enable VSX with
a generic cpu.

This changes the behavior back to what it was before commit b0af404.

Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-06-13 20:42:38 +02:00
Michael Niedermayer
04f0002291 configure: Disable VSX on unspecified / generic CPUs
Fixes fate tests on PPC64be

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-12 13:37:04 +02:00
Michael Niedermayer
a4557b7a98 Merge commit 'a6f19d6a9f8d1e08653d9d77581e8c823f4955c2'
* commit 'a6f19d6a9f8d1e08653d9d77581e8c823f4955c2':
  configure: Support MSVC 2015

Conflicts:
	configure
	libavutil/internal.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-08 20:39:38 +02:00
Luca Barbato
a6f19d6a9f configure: Support MSVC 2015
The C runtime C99 compatibility had been improved a lot and it now
rejects some of the compatibility defines provided for the older
versions.

Many thanks to Ray for the time spent testing.

Bug-Id: 864
CC: libav-stable@libav.org
2015-06-08 13:27:49 +02:00
Philip Langdale
7e4661174a avcodec/nvenc: Add 'nvenc_h264' as an alternative name for 'nvenc'
This allows us to offer the same codec name that libav uses. We don't have
a special way to do aliases, so it's all a bit more verbose than you'd want
but such is life.

Signed-off-by: Philip Langdale <philipl@overt.org>
2015-06-06 13:14:14 -07:00
Philip Langdale
e79c40fe72 avcodec/nvenc: Rename nvenc_h265 to nvenc_hevc
For the sake of compatibility, and because pretty much everything else in the
codebase calls it HEVC.

Signed-off-by: Philip Langdale <philipl@overt.org>
2015-06-06 13:14:11 -07:00
Philip Langdale
d47de79372 Revert "Merge commit 'b08caa87c35a768ec0abb16b1e99c3a85f1df28e'"
This reverts commit d8bbb99c51, reversing
changes made to d0d0913702.

Signed-off-by: Philip Langdale <philipl@overt.org>
2015-06-06 13:14:02 -07:00
Philip Langdale
58b49f78cf Revert "nvenc: remove cuda.h requirement for nvenc_a"
This reverts commit f10497042f.

Signed-off-by: Philip Langdale <philipl@overt.org>
2015-06-06 13:13:59 -07:00
James Almer
1b4dd59e5f configure: improve the checks for gmtime_r and localtime_r
They are inlined wrapper functions inside the time.h header on MinGW-w64, so
neither check_func() or check_func_headers() work with them.

Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-06-06 12:07:53 -03:00
Michael Niedermayer
ee08beb7d9 Merge commit 'e97446e600578392549ef6d0191f2020dae7f8bf'
* commit 'e97446e600578392549ef6d0191f2020dae7f8bf':
  configure: Check for DXVA2_ConfigPictureDecode instead of LPDIRECT3DSURFACE9

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-03 18:52:05 +02:00
Michael Niedermayer
5116381511 Merge commit 'b9875b497a38f494acb599083b0d004545958697'
* commit 'b9875b497a38f494acb599083b0d004545958697':
  configure: Remove unnecessary tests for d3d11va

Conflicts:
	configure

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-03 18:41:02 +02:00
Michael Niedermayer
c08a64bb2b Merge commit '76eb0950b8d82b1e9617b9c854f091e13bb23131'
* commit '76eb0950b8d82b1e9617b9c854f091e13bb23131':
  configure: Don't run "export $e" for an empty string

Conflicts:
	configure

See: d5db4a7c23
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-03 18:26:17 +02:00
Martin Storsjö
e97446e600 configure: Check for DXVA2_ConfigPictureDecode instead of LPDIRECT3DSURFACE9
Checking this struct is a bit more natural for this dependency.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-06-03 15:29:54 +03:00
Martin Storsjö
b9875b497a configure: Remove unnecessary tests for d3d11va
These are only necessary once/if avconv gets support for this hwaccel.
While that obviously is desireable, we don't have it yet, and they
currently only are a distraction.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-06-03 15:28:25 +03:00
Martin Storsjö
76eb0950b8 configure: Don't run "export $e" for an empty string
This fixes the side effect of printing the whole environment,
if no --env parameter was provided.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-06-03 15:27:42 +03:00
Michael Niedermayer
21e40f006a Merge commit '876d441fbe37c3ffc57ada9ce1f9ea841ca4c9de'
* commit '876d441fbe37c3ffc57ada9ce1f9ea841ca4c9de':
  configure: don't enable tls protocols if network is disabled

Conflicts:
	configure

See: 7fc6545d5d
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-02 22:50:19 +02:00
Michael Niedermayer
b0af4043b9 configure: Remove now redundant vsx setting code
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-02 22:14:41 +02:00
James Almer
876d441fbe configure: don't enable tls protocols if network is disabled
This was a regression introduced with d8ffb2055f.

Signed-off-by: James Almer <jamrial@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
2015-06-02 22:48:50 +03:00
Michael Niedermayer
d5db4a7c23 configure: Do not dump the whole environment to stdout
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-02 19:53:17 +02:00
Michael Niedermayer
2a33972030 Merge commit 'fd11465b21ac90bf6964b0c0ca9d6ba64cd3291d'
* commit 'fd11465b21ac90bf6964b0c0ca9d6ba64cd3291d':
  configure: Use pkg-config for fdk-aac

Conflicts:
	configure

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-02 19:31:22 +02:00
Michael Niedermayer
f939bf58b2 Merge commit '604abd025dac4cc73a2f6b0c000c3695c16fb000'
* commit '604abd025dac4cc73a2f6b0c000c3695c16fb000':
  configure: Provide an option to override the environment

Conflicts:
	configure

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-02 19:03:02 +02:00
Michael Niedermayer
cec3456254 Merge commit '06db45523c1068c24f049ef2b20fcdead3bf36d8'
* commit '06db45523c1068c24f049ef2b20fcdead3bf36d8':
  configure: Support the extended pkgconf syntax

Conflicts:
	configure

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-02 18:54:57 +02:00
Luca Barbato
fd11465b21 configure: Use pkg-config for fdk-aac
Makes the life of the people already setting PKG_CONFIG_PATH simpler.
2015-06-02 10:33:32 +02:00
Luca Barbato
604abd025d configure: Provide an option to override the environment
Useful to have `make config` work with custom pkgconf path.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-06-02 10:33:11 +02:00
Luca Barbato
06db45523c configure: Support the extended pkgconf syntax
Make possible to require a combination of
packages and/or pin specific versions.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-06-02 10:33:11 +02:00
Michael Niedermayer
da05c62499 Merge commit '8349bedfa5eac7f261ac43053a2f66b894bac288'
* commit '8349bedfa5eac7f261ac43053a2f66b894bac288':
  configure: Remove some unnecessary exported config items

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-01 23:08:33 +02:00
Michael Niedermayer
9ac3417c6b Merge commit 'ff7ae4b9df6e89d99dbd5434408123b80a4f6cd7'
* commit 'ff7ae4b9df6e89d99dbd5434408123b80a4f6cd7':
  configure: Require LPDIRECT3DSURFACE9 for dxva2

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-01 23:08:12 +02:00
James Almer
7fc6545d5d configure: don't enable any tls protocol if network is disabled
This was a regression introduced with 4a006b9eb7.

Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-06-01 17:49:21 -03:00
Martin Storsjö
8349bedfa5 configure: Remove some unnecessary exported config items
The only need to be listed if they are to be used in ifdefs from
within the code - config items used as dependencies only within
configure don't need to be exported.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-06-01 23:04:52 +03:00
Martin Storsjö
ff7ae4b9df configure: Require LPDIRECT3DSURFACE9 for dxva2
This fixes dxva2 detection (i.e. correctly realizes that it isn't
available) for WinRT, where dxva2api.h does exist, but these definitions
are omitted (when targeting the API subsets).

Ideally we should rather check for e.g. DXVA2_ConfigPictureDecode,
but configure might fail to find that definition due to _WIN32_WINNT
not being set to the right value during configure. (libavcodec/dxva2.h
manually overrides the _WIN32_WINNT define.)

This allows removing hardcoded --disable-dxva2 from such build
configurations.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-06-01 23:04:49 +03:00
Michael Niedermayer
589d39c768 Merge commit '63ce9fd23cfa5ac0d9a862be0da138108dc1c505'
* commit '63ce9fd23cfa5ac0d9a862be0da138108dc1c505':
  rtmpdh: Use GMP functions directly, instead of nettle wrappers

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-01 11:29:05 +02:00
Steve Lhomme
31de41babc configure: Check if ID3D11VideoDecoder exists, not just the header to enable d3d11va
Fixes build with some mingw-w64 versions, that have got the header
but not the interface declaration.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-06-01 12:04:46 +03:00
Martin Storsjö
63ce9fd23c rtmpdh: Use GMP functions directly, instead of nettle wrappers
mpz_import and mpz_export were added in GMP 4.1, in 2002.

This simplifies the DH code by clarifying that it only uses pure
bignum functions, no other parts of nettle/hogweed.

Signed-off-by: Martin Storsjö <martin@martin.st>
2015-06-01 10:38:54 +03:00
James Almer
f10497042f nvenc: remove cuda.h requirement for nvenc_a
Reviewed-by: Philip Langdale <philipl@overt.org>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-06-01 01:33:47 -03:00
Michael Niedermayer
d8bbb99c51 Merge commit 'b08caa87c35a768ec0abb16b1e99c3a85f1df28e'
* commit 'b08caa87c35a768ec0abb16b1e99c3a85f1df28e':
  nvenc: H264 and HEVC encoders

Conflicts:
	Changelog
	configure
	libavcodec/Makefile
	libavcodec/version.h

This implementation is merged under the name nvenc_b*

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-01 03:13:55 +02:00