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.
10 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
11 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
11 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
11 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
11 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
11 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
11 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)].
11 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
11 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
11 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>
11 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>
11 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>
11 years ago
Gildas Cocherel
321cb8b048
hevc: store profile and level in AVCodecContext
...
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Gildas Cocherel
2a41826bea
lavc: add HEVC profiles names
...
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Guillaume Martres
17a10d51b8
hevc: set time_base when possible
...
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 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>
11 years ago
Michael Niedermayer
b769cf4b44
hevc: do not dereference pointer before NULL check in verify_md5()
...
Signed-off-by: Anton Khirnov <anton@khirnov.net>
11 years ago
Vittorio Giovara
acb77dff6a
hevc: parse frame packing arrangement SEI messages and save relevant stereo3d information
11 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.
11 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>
11 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>
11 years ago