Commit Graph

226 Commits

Author SHA1 Message Date
Rainer Hochecker
786032cad8 hevc: avoid unnecessary calls to get_format
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-16 20:48:14 +01:00
Michael Niedermayer
12cf61c3b2 avcodec/hevc: Fix undefined shifts
Found-by: Clang -fsanitize=shift
Reported-by: Thierry Foucu <tfoucu@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-16 14:27:11 +01:00
Rainer Hochecker
31816eae32 hevc: delay ff_thread_finish_setup for hwaccel
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-12 14:49:41 +01:00
Michael Niedermayer
114a2eb272 avcodec: Use av_clip_uintp2() where possible
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-21 15:50:03 +01:00
Michael Niedermayer
3e2714992b Merge commit 'eea769df322fac2601a96db195fa7dc8d12a8fbc'
* commit 'eea769df322fac2601a96db195fa7dc8d12a8fbc':
  hevc: Use generic av_clip function, not C implementation

Conflicts:
	libavcodec/hevc.c
	libavcodec/hevc_filter.c
	libavcodec/hevc_mvs.c

See: 83976e40e8
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-13 12:34:18 +01:00
Peter Meerwald
eea769df32 hevc: Use generic av_clip function, not C implementation
hevc seems to be the only place where the C implementation
of the av_clip function is explicitly selected, precluding
platform-specific optimizations

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-02-13 08:37:13 +01:00
Michael Niedermayer
43b1fd5bb4 avcodec/hevc: drop redundant ifs()
Found-by: Clément Bœsch <u@pkh.me>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-05 22:29:55 +01:00
Christophe Gisquet
9a2f5d825a hevc: free sao buffers when receiving a new SPS
The buffer pointers would be otherwise overwritten, causing a
leak on e.g. PERSIST_RPARAM_A_RExt_Sony_1.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-05 21:50:35 +01:00
Christophe Gisquet
52f2adc015 avcodec/hevc: Update the USE_SAO_SMALL_BUFFER case for the alignment requirements in FFmpeg
Use edge emu buffers
And enable the code unconditionally

Speed difference without USE_SAO_SMALL_BUFFER and with the new code:
Decicycles: 26772->26220 (BO32),  83803->80942 (BO64)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-04 01:54:22 +01:00
Christophe Gisquet
00fe77855b avcodec/hevc: Do not zero is_pcm on allocation
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-04 01:54:13 +01:00
Fabrice Bellard
da81cc38e8 avcodec/hevc: reduce memory for SAO
cherry picked from commit 5d9f79edef2c11b915bdac3a025b59a32082f409

SAO edge filter uses pre-SAO pixel data on the left and top of the ctb, so
this data must be kept available. This was done previously by having 2
copies of the frame, one before and one after SAO.

This commit reduces the storage to just that, instead of the previous whole
frame.

Commit message taken from patch by Christophe Gisquet <christophe.gisquet@gmail.com>

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-04 01:54:01 +01:00
Mickaël Raulet
7cf6a67ef9 avcodec/hevc: adding support for monochrome sequences in hevc
cherry picked from commit 8e50557707d2ec11ccad657470b2e140f314348e

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-02 18:10:57 +01:00
Christophe Gisquet
bff7feb328 x86: hevc/sao: aligned source buffers
Usefull for at least band filter, for which:
- Band filter call only:
           32      64
Before:  16556    54015
After:   16497    52355
- Whole case:
           32      64
Before:  37031   103008
After:   32045    93952
2015-02-01 20:22:54 -03:00
Michael Niedermayer
2b215b7f5a avcodec/hevc: Check for av_malloc failure
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-30 00:44:51 +01:00
Michael Niedermayer
5008605bf2 avcodec/hevc: Replace more mallocs by av_malloc_array()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-30 00:44:50 +01:00
Michael Niedermayer
a7fa1b9aa1 Merge commit '443b71928b2f36362e805c037751e6c3c79ea4e8'
* commit '443b71928b2f36362e805c037751e6c3c79ea4e8':
  hevc: unref the current frame if frame_start() fails

Conflicts:
	libavcodec/hevc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-27 13:15:06 +01:00
Hendrik Leppkes
36962ad233 Add DXVA2 HEVC HWAccel
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-27 12:37:34 +01:00
Hendrik Leppkes
f8ecffa9b7 hevc: reindent after previous commit
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-27 12:37:34 +01:00
Hendrik Leppkes
b2e9b0f5d4 hevc: add hwaccel hooks
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-27 12:37:34 +01:00
Hendrik Leppkes
06894f1a04 hevc: store the short term rps flag and size in the context
For future use by hardware accelerators.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-27 12:37:34 +01:00
Hendrik Leppkes
2af82a1ad9 hevc: store the escaped/raw bitstream in HEVCNAL
Hardware Accelerators require access to the escaped bitstream.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-27 12:37:34 +01:00
Hendrik Leppkes
7e850fa67e Add DXVA2 HEVC HWAccel
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-01-27 09:05:31 +01:00
Hendrik Leppkes
b82722df9b hevc: reindent after previous commit
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-01-27 09:05:25 +01:00
Hendrik Leppkes
e72e8c5a1d hevc: add hwaccel hooks
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-01-27 09:05:08 +01:00
Hendrik Leppkes
4b95e95dba hevc: store the short term rps flag and size in the context
For future use by hardware accelerators.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-01-27 09:04:59 +01:00
Hendrik Leppkes
36779a8405 hevc: store the escaped/raw bitstream in HEVCNAL
Hardware Accelerators require access to the escaped bitstream.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-01-27 09:04:44 +01:00
Hendrik Leppkes
b0593a4bca hevc: pass the full HEVCNAL struct to decode_nal_unit
This enables decode_nal_unit to access additional fields added in
subsequent commits.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2015-01-27 09:04:29 +01:00
Anton Khirnov
443b71928b hevc: unref the current frame if frame_start() fails
Prevents DPB from filling up with damaged input.
2015-01-27 08:34:56 +01:00
Hendrik Leppkes
77140279d3 hevc: pass the full HEVCNAL struct to decode_nal_unit
This enables decode_nal_unit to access additional fields added in
subsequent commits.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-24 17:49:27 +01:00
Michael Niedermayer
e172f5e53a avcodec/hevc: Fix handling of skipped_bytes() reallocation failures
Fixes CID1260704

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-13 20:10:21 +01:00
Michael Niedermayer
99f8c9e4d1 avcodec/hevc: move qp_block_mask to where its used
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-18 01:55:02 +01:00
Michael Niedermayer
8aa8d12554 avcodec/hevc: clear filter_slice_edges() on allocation
This avoids use of uninitialized memory
Fixes: asan_static-oob_17aa046_582_cov_212287884_DBLK_G_VIXS_1.bit
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-17 19:43:58 +01:00
Michael Niedermayer
b799ec7e0b avcodec/hevc: Print an error if luma_log2_weight_denom is out of range
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-15 21:12:46 +01:00
Michael Niedermayer
241943d3a2 Merge commit 'b2bece5e9a4dd96142962c6798e187c77b88bbfa'
* commit 'b2bece5e9a4dd96142962c6798e187c77b88bbfa':
  hevc: always clip luma_log2_weight_denom

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-15 21:06:20 +01:00
Vittorio Giovara
b2bece5e9a hevc: always clip luma_log2_weight_denom
Its value shall be between 0 and 7 according to the specifications.

CC: libav-stable@libav.org
Bug-Id: CID 1257502
2014-12-15 15:46:34 +01:00
Michael Niedermayer
ef23bd939d avcodec/hevc: Silence "warning: ref0/1 may be used uninitialized in this function"
Also make code more robust by initializing the pointers to NULL

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-11 04:17:43 +01:00
Michael Niedermayer
148506c965 Merge commit 'cd975d5658a1cbe99939df75db59d5ae9fbcb4e0'
* commit 'cd975d5658a1cbe99939df75db59d5ae9fbcb4e0':
  hevc: Spin the mv_mpv_mode calls in a stand alone function

Conflicts:
	libavcodec/hevc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-22 01:32:55 +01:00
Luca Barbato
cd975d5658 hevc: Spin the mv_mpv_mode calls in a stand alone function
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-11-21 23:17:37 +01:00
Michael Niedermayer
91a9ae5b6b Merge commit 'eac3ac1fe0774b65316852616b2672702dbc3f31'
* commit 'eac3ac1fe0774b65316852616b2672702dbc3f31':
  hevc: eliminate an unneeded intermediate variable

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 12:13:09 +01:00
Michael Niedermayer
0d5af820f7 Merge commit 'eb335f3c5ce37f2b93c993e28404d113bee843bc'
* commit 'eb335f3c5ce37f2b93c993e28404d113bee843bc':
  hevc: reduce variable scope

Conflicts:
	libavcodec/hevc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 12:07:49 +01:00
Michael Niedermayer
c23d7de22e Merge commit '84c0ece5fd9569c0f31804f02a199ecd0e7d13d8'
* commit '84c0ece5fd9569c0f31804f02a199ecd0e7d13d8':
  hevc: further reduce code duplication in hls_prediction_unit()

Conflicts:
	libavcodec/hevc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 12:01:47 +01:00
Michael Niedermayer
e078549421 Merge commit 'a7b365ae191f45a0d7ed7b34033d5d0cbdd47139'
* commit 'a7b365ae191f45a0d7ed7b34033d5d0cbdd47139':
  hevc: reduce code duplication in hls_prediction_unit()

Conflicts:
	libavcodec/hevc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 11:54:41 +01:00
Michael Niedermayer
c192be1968 Merge commit '16c01fb4347312b6d29a6498dad627665b96a20e'
* commit '16c01fb4347312b6d29a6498dad627665b96a20e':
  hevc: remove an unused function parameter

Conflicts:
	libavcodec/hevc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 11:30:41 +01:00
Michael Niedermayer
f1b20930f2 Merge commit '2c6a7f9348378f887066fb1669c46b9485e8ef3e'
* commit '2c6a7f9348378f887066fb1669c46b9485e8ef3e':
  hevc: do not store rqt_root_cbf in the context

Conflicts:
	libavcodec/hevc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 11:20:32 +01:00
Michael Niedermayer
7cbe1e0447 Merge commit '920bca3e2332dced9c78bd14cfc2ff138188bd57'
* commit '920bca3e2332dced9c78bd14cfc2ff138188bd57':
  hevc: do not store pcm_flag in the context

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-17 11:06:13 +01:00
Anton Khirnov
eac3ac1fe0 hevc: eliminate an unneeded intermediate variable 2014-11-17 09:26:45 +01:00
Anton Khirnov
eb335f3c5c hevc: reduce variable scope
Also, collapse the array into a scalar, since only one value is needed
at a time.
2014-11-17 09:26:45 +01:00
Anton Khirnov
8b573ddda7 hevc: remove superfluous assignments and checks 2014-11-17 09:26:45 +01:00
Anton Khirnov
84c0ece5fd hevc: further reduce code duplication in hls_prediction_unit() 2014-11-17 09:25:15 +01:00
Anton Khirnov
a7b365ae19 hevc: reduce code duplication in hls_prediction_unit() 2014-11-17 09:25:12 +01:00