Anton Khirnov
7693ba0a0e
hevc: export stream parameters from extradata
This allows the callers to have a hint of the probable stream parameters
without actually decoding anything.
10 years ago
Anton Khirnov
1ae7afd256
hevc: split out setting AVCodecContext parameters
Additionally always set the software pixel format, so it's available
even if ff_get_format() is not called later. This will be useful for
exporting stream parameters from init().
10 years ago
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>
10 years ago
Hendrik Leppkes
7e850fa67e
Add DXVA2 HEVC HWAccel
Signed-off-by: Anton Khirnov <anton@khirnov.net>
10 years ago
Hendrik Leppkes
b82722df9b
hevc: reindent after previous commit
Signed-off-by: Anton Khirnov <anton@khirnov.net>
10 years ago
Hendrik Leppkes
e72e8c5a1d
hevc: add hwaccel hooks
Signed-off-by: Anton Khirnov <anton@khirnov.net>
10 years ago
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>
10 years ago
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>
10 years ago
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>
10 years ago
Anton Khirnov
443b71928b
hevc: unref the current frame if frame_start() fails
Prevents DPB from filling up with damaged input.
10 years ago
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
10 years ago
Luca Barbato
cd975d5658
hevc: Spin the mv_mpv_mode calls in a stand alone function
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
10 years ago
Anton Khirnov
8b573ddda7
hevc: remove superfluous assignments and checks
10 years ago
Anton Khirnov
eac3ac1fe0
hevc: eliminate an unneeded intermediate variable
10 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.
10 years ago
Anton Khirnov
84c0ece5fd
hevc: further reduce code duplication in hls_prediction_unit()
10 years ago
Anton Khirnov
a7b365ae19
hevc: reduce code duplication in hls_prediction_unit()
10 years ago
Anton Khirnov
16c01fb434
hevc: remove an unused function parameter
10 years ago
Anton Khirnov
84b9463984
hevc: remove a redundant line
pred_mode is overwritten a few lines immediately below.
10 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().
10 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().
10 years ago
Vittorio Giovara
b1b1a7370e
display: fix order of operands
CC: libav-stable@libav.org
Bug-Id: CID 1238828 / CID 1238832
10 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.
11 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>
10 years ago
Christophe Gisquet
d1b1c3bb5e
hevc: reorder loops
iterate over memory in a more continuous order
Signed-off-by: Anton Khirnov <anton@khirnov.net>
10 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.
10 years ago
Anton Khirnov
4d1ff2a489
hevc: calculate the dbf strength in hls_pcm_sample() only if dbf is enabled
10 years ago
Anton Khirnov
e76f2d1197
hevc: eliminate the last element from TransformTree
Replace it by passing an additional parameter to transform_unit()
10 years ago
Anton Khirnov
4aa80808bc
hevc: eliminate unnecessary cbf_c{b,r} arrays
They are replaced by passing additional parameters to the transform
functions.
10 years ago
Anton Khirnov
0daa255463
hevc: do not store the transform inter_split flag in the context
It does not need to be preserved.
10 years ago
Anton Khirnov
53a11135f2
hevc: simplify splitting the transform tree blocks
10 years ago
Anton Khirnov
e36a2f4c52
hevc: eliminate an unnecessary array
We do not need to store the value of the split flag.
10 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