Luca Barbato
cd975d5658
hevc: Spin the mv_mpv_mode calls in a stand alone function
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
11 years ago
Anton Khirnov
8b573ddda7
hevc: remove superfluous assignments and checks
11 years ago
Anton Khirnov
eac3ac1fe0
hevc: eliminate an unneeded intermediate variable
11 years ago
Anton Khirnov
eb335f3c5c
hevc: reduce variable scope
Also, collapse the array into a scalar, since only one value is needed
at a time.
11 years ago
Anton Khirnov
84c0ece5fd
hevc: further reduce code duplication in hls_prediction_unit()
11 years ago
Anton Khirnov
a7b365ae19
hevc: reduce code duplication in hls_prediction_unit()
11 years ago
Anton Khirnov
16c01fb434
hevc: remove an unused function parameter
11 years ago
Anton Khirnov
84b9463984
hevc: remove a redundant line
pred_mode is overwritten a few lines immediately below.
11 years ago
Anton Khirnov
2c6a7f9348
hevc: do not store rqt_root_cbf in the context
It does not need to be accessed outside of hls_coding_unit().
11 years ago
Anton Khirnov
920bca3e23
hevc: do not store pcm_flag in the context
It does not need to be accessed outside of hls_coding_unit().
11 years ago
Vittorio Giovara
b1b1a7370e
display: fix order of operands
CC: libav-stable@libav.org
Bug-Id: CID 1238828 / CID 1238832
11 years ago
Anton Khirnov
7ea1b3472a
lavc: deprecate the use of AVCodecContext.time_base for decoding
When decoding, this field holds the inverse of the framerate that can be
written in the headers for some codecs. Using a field called 'time_base'
for this is very misleading, as there are no timestamps associated with
it. Furthermore, this field is used for a very different purpose during
encoding.
Add a new field, called 'framerate', to replace the use of time_base for
decoding.
12 years ago
Christophe Gisquet
cf6090dc62
hevc: use intreadwrite
When dealing with MVs, both components may be processed at a time.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Christophe Gisquet
d1b1c3bb5e
hevc: reorder loops
iterate over memory in a more continuous order
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Anton Khirnov
70211539a3
hevc: deobfuscate slice/tile boundary handling for DBF
Use named constants instead of magic numbers, avoid using variables with
inverse meaning from what their name implies.
11 years ago
Anton Khirnov
4d1ff2a489
hevc: calculate the dbf strength in hls_pcm_sample() only if dbf is enabled
11 years ago
Anton Khirnov
e76f2d1197
hevc: eliminate the last element from TransformTree
Replace it by passing an additional parameter to transform_unit()
11 years ago
Anton Khirnov
4aa80808bc
hevc: eliminate unnecessary cbf_c{b,r} arrays
They are replaced by passing additional parameters to the transform
functions.
11 years ago
Anton Khirnov
0daa255463
hevc: do not store the transform inter_split flag in the context
It does not need to be preserved.
11 years ago
Anton Khirnov
53a11135f2
hevc: simplify splitting the transform tree blocks
11 years ago
Anton Khirnov
e36a2f4c52
hevc: eliminate an unnecessary array
We do not need to store the value of the split flag.
11 years ago
Gildas Cocherel
458e7c9483
hevc: implement pic_output_flag handling
Sample-Id: OPFLAG_B_Qualcomm_1.bit, OPFLAG_C_Qualcomm_1.bit
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Mickaël Raulet
f43789b76e
hevc: set the keyframe flag on output frames
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Mickaël Raulet
1493b237bd
hevc: Replace nal type chek with equivalent IS_IRAP macro
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Vittorio Giovara
0569a7e0bd
hevc: parse display orientation SEI message
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
11 years ago
Luca Barbato
df949b645b
hevc: Use the local context variable when needed
11 years ago
Diego Biurrun
c67b449beb
dsputil: Split bswap*_buf() off into a separate context
12 years ago
Justin Ruggles
9e500efdbe
Add av_image_check_sar() and use it to validate SAR
11 years ago
Anton Khirnov
a1c2b48018
hevc: templatize intra_pred
11 years ago
Michael Niedermayer
ed06e5d92b
hevc: Do not turn 32bit timebases into negative numbers
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
12 years ago
Michael Niedermayer
6cc94e9719
hevc: use av_mallocz() for allocating tab_ipm
Fixes use of uninitialized memory and out of stack array read.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
12 years ago
Luca Barbato
521726ff57
hevc: Always consider VLC NALU type mismatch fatal
Sample-Id: 00001667-google
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
12 years ago
Anton Khirnov
b25e84b739
hevc: check that the VCL NAL types are the same for all slice segments of a frame
Fixes possible invalid memory access for mismatching skipped/non-skipped
slice segments.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Sample-Id: 00001533-google
12 years ago
Luca Barbato
816e5b9970
hevc: Reject impossible slice segment
A dependent slice cannot have address 0.
Prevent an out of array bound load in ff_hevc_cabac_init().
Sample-Id: 00001406-google
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
12 years ago
Luca Barbato
e22ebd04bc
hevc: Bound check cu_qp_delta
The T-REC-H.265-2013044 page 91 states it has to be in the range
[-(26 + s->sps->qp_bd_offset / 2), (25 + s->sps->qp_bd_offset / 2)].
12 years ago
Luca Barbato
0d999333f9
hevc: Bound check slice_qp
The T-REC-H.265-2013044 page 79 states it has to be in the range
[-s->sps->qp_bd_offset, 51].
Sample-Id: 00001386-google
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
12 years ago
Luca Barbato
838740e642
hevc: Prevent some integer overflows
get_ue_golomb_long() returns an unsigned.
Sample-Id: 00001541-google
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
12 years ago
Michael Niedermayer
d5c15ebeaf
hevc: Fix modulo operations
Keep qp fields within the range.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
12 years ago
Guillaume Martres
e588615d93
hevc: fix decoding of one PU wide files
For those the block size may be larger than the source linesize (if the
edges are not allocated).
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago
Mickaël Raulet
5c3fa74b94
hevc: support luma bit depth != chroma bit depth for PCM coding units
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago
Gildas Cocherel
321cb8b048
hevc: store profile and level in AVCodecContext
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago
Gildas Cocherel
2a41826bea
lavc: add HEVC profiles names
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago
Guillaume Martres
17a10d51b8
hevc: set time_base when possible
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago
Gildas Cocherel
33452aede6
hevc: store the VPS list as an AVBufferRef, just like the others *PS
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago
Michael Niedermayer
b769cf4b44
hevc: do not dereference pointer before NULL check in verify_md5()
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago
Vittorio Giovara
acb77dff6a
hevc: parse frame packing arrangement SEI messages and save relevant stereo3d information
12 years ago
Ronald S. Bultje
458446acfa
lavc: Edge emulation with dst/src linesize
Allow supporting files for which the image stride is smaller than
the maximum block size + number of subpel mc taps, e.g. a 64x64 VP9
file or a 16x16 VP8 file with -fflags +emu_edge.
12 years ago
Jan Ekström
885ec92425
hevc: Use parsed VUI colorimetry in avcodec
Also limit the parsed VUI values to known valid ones.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
12 years ago
Guillaume Martres
064698d381
Add HEVC decoder
Initially written by Guillaume Martres <smarter@ubuntu.com> as a GSoC
project. Further contributions by the OpenHEVC project and other
developers, namely:
Mickaël Raulet <mraulet@insa-rennes.fr>
Seppo Tomperi <seppo.tomperi@vtt.fi>
Gildas Cocherel <gildas.cocherel@laposte.net>
Khaled Jerbi <khaled_jerbi@yahoo.fr>
Wassim Hamidouche <wassim.hamidouche@insa-rennes.fr>
Vittorio Giovara <vittorio.giovara@gmail.com>
Jan Ekström <jeebjp@gmail.com>
Anton Khirnov <anton@khirnov.net>
Martin Storsjö <martin@martin.st>
Luca Barbato <lu_zero@gentoo.org>
Yusuke Nakamura <muken.the.vfrmaniac@gmail.com>
Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Diego Biurrun <diego@biurrun.de>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
12 years ago