249 Commits

Author SHA1 Message Date
Anton Khirnov
c377e04d8a h264: move top_borders into the per-slice context
Also change the method for allocating to the same one as used by
edge_emu_buffer.
2015-03-21 11:27:15 +01:00
Anton Khirnov
36d04801ba h264: move the scratch buffers into the per-slice context
Also change the method for allocating them. Instead of two possible
alloc calls from different places, just ensure they are allocated at the
start of each slice. This should be simpler and less bug-prone than the
previous method.
2015-03-21 11:27:15 +01:00
Anton Khirnov
e9b2383bf8 h264: move mb_mbaff into the per-slice context 2015-03-21 11:27:15 +01:00
Anton Khirnov
bc98e8c0e0 h264: move mb_field_decoding_flag into the per-slice context 2015-03-21 11:27:15 +01:00
Anton Khirnov
f42485dbce h264: use a separate GetBitContext for slice data 2015-03-21 11:27:14 +01:00
Anton Khirnov
404a416d4b h264: remove some remnants of data partitioning 2015-03-21 11:27:14 +01:00
Anton Khirnov
7bbc254d64 h264: move resync_mb_{x,y} into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
d4d9068cdf h264: move mb_{x,y} into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
0edbe6faa7 h264: move mb_xy into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
07c5ca551b h264: move is_complex into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
47a0d39350 h264: move mb_skip_run into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
9951907f6f h264: move redundant_pic_count into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
a9b201cacf h264: move cabac_init_idc into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
e6c90ce94f h264: move loopfilter parameters into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
a67f8ae9a2 h264: move mvd_table into the per-slice context 2015-03-21 11:27:14 +01:00
Anton Khirnov
5c8280c307 h264: move last_qscale_diff into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
e7226984ac h264: move [{top,left}_]cbp into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
30da98adbd h264: move cabac[_state] into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
bf03a878a7 h264: move mb[_{padding,luma_dc}] into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
95eb35f305 h264: move the ref lists variables into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
ee0d774dfa h264: move dist_scale_factor[_field] into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
066aafced4 h264: move direct_spatial_mv_pred into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
56febc993b h264: move the slice type variables into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
5f390eef8e h264: move mb_[uv]linesize into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
e6287f077c h264: move {mv,ref}_cache into the per-slice context 2015-03-21 11:27:13 +01:00
Anton Khirnov
f69574cf7a h264: move non_zero_count_cache into the per-slice context 2015-03-21 11:27:12 +01:00
Anton Khirnov
7d8154edd5 h264: move intra4x4_pred_mode[_cache] into the per-slice context 2015-03-21 11:27:12 +01:00
Anton Khirnov
8b00f4df20 h264: move some neighbour information into the per-slice context 2015-03-21 11:27:12 +01:00
Anton Khirnov
06789ad3b7 h264: move qp_thresh into the per-slice context 2015-03-21 11:27:12 +01:00
Anton Khirnov
d231e84b06 h264: move the quantizers into the per-slice context 2015-03-21 11:27:12 +01:00
Anton Khirnov
d40ae0e595 h264: do not copy qscale when updating per-thread contexts
It's a per-slice quantity constructed when parsing the slice header.
2015-03-21 11:27:12 +01:00
Anton Khirnov
92c6c2a605 h264: split weighted pred-related vars into per-slice context 2015-03-21 11:27:09 +01:00
Anton Khirnov
ad786dd450 h264: remove a now redundant error check
It was only relevant when data partitioning was in use.
2015-03-05 16:10:11 +01:00
Michael Niedermayer
b37c3396cd avcodec/h264: Add ff_ prefix to the shared h264_init_dequant_tables() function
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-27 18:46:02 +01:00
Michael Niedermayer
c23a0e77dd avcodec/h264: Only reinit quant tables if a new PPS is allowed
Fixes null pointer dereference
Fixes: signal_sigsegv_3042097_3007_cov_1741463594_non_monotone_timestamps1.mkv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-24 21:21:22 +01:00
Michael Niedermayer
6458e4750f Merge commit '0dea4c77ccf5956561bb8991311b3d834bb5fa40'
* commit '0dea4c77ccf5956561bb8991311b3d834bb5fa40':
  h264: only ref cur_pic in update_thread_context if it is initialized

Conflicts:
	libavcodec/h264_slice.c

See: 0fc01ae33c7712168aab0f98c5715b40da0b5f03
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-21 11:45:42 +01:00
Michael Niedermayer
66d79aa2e1 Merge commit '9abc80f1ed673141326341e26a05c3e1f78576d0'
* commit '9abc80f1ed673141326341e26a05c3e1f78576d0':
  libavcodec: Make use of av_clip functions

Conflicts:
	libavcodec/takdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-21 11:27:24 +01:00
Anton Khirnov
0dea4c77cc h264: only ref cur_pic in update_thread_context if it is initialized
It may be empty if the previous thread's decode call did not contain a
valid frame.
2015-02-21 09:29:27 +01:00
Peter Meerwald
9abc80f1ed libavcodec: Make use of av_clip functions
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-02-21 00:54:40 +01:00
Michael Niedermayer
de6df46120 avcodec/h264: Setup decoder to have matching reference to the EC code
Also move EC ref initialization to where the EC code is called.
Fixes out of array read
Fixes: asan_heap-uaf_143f420_142_20110805_112659_ch0.mkv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-08 02:27:27 +01:00
Michael Niedermayer
2fd9ce92af avcodec/h264_slice: assert that reinit does not occur after the first slice
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-07 03:59:45 +01:00
Michael Niedermayer
38d5241b7f avcodec/h264_slice: ignore SAR changes in slices after the first
Fixes race condition and null pointer dereference
Fixes: signal_sigsegv_1472ac3_468_cov_2915641226_CABACI3_Sony_B.jsv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-07 03:59:45 +01:00
Michael Niedermayer
f111831ed6 avcodec/h264_slice: Check picture structure before setting the related fields
This might fix a hypothetical race condition

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-07 03:59:45 +01:00
Michael Niedermayer
f906982c94 avcodec/h264_slice: Do not change frame_num after the first slice
Fixes potential race condition
Fixes: signal_sigsegv_1472ac3_468_cov_2915641226_CABACI3_Sony_B.jsv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-07 02:20:14 +01:00
Michael Niedermayer
6fafc62b0b avcodec/h264: Be more strict on rejecting pps/sps changes
Fixes race condition
Fixes: signal_sigsegv_1472ac3_468_cov_2915641226_CABACI3_Sony_B.jsv

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-06 15:22:51 +01:00
Michael Niedermayer
392080cbe5 Merge commit '167e004e1aca7765686ed95d7cd8ea5064d4f6f6'
* commit '167e004e1aca7765686ed95d7cd8ea5064d4f6f6':
  h264: drop any pretense of support for data partitioning

Conflicts:
	libavcodec/h264.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-27 16:03:23 +01:00
Michael Niedermayer
3d04117078 Merge commit 'cf1e0786ed64e69614760bfb4ecd7adbde8e6094'
* commit 'cf1e0786ed64e69614760bfb4ecd7adbde8e6094':
  error_resilience: move the MECmpContext initialization into ER code

Conflicts:
	libavcodec/error_resilience.c
	libavcodec/h264.c
	libavcodec/h264.h
	libavcodec/h264_slice.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-27 14:56:52 +01:00
Anton Khirnov
167e004e1a h264: drop any pretense of support for data partitioning
It does not work correctly and apparently never did. There is no
indication that this (mis)feature is ever used in the wild or even that
any software other than the reference supports it.

Since the code that attempts to support it adds some nontrivial
complexity and has resulted in several bugs in the past, it is better to
just drop it.
2015-01-27 09:10:12 +01:00
Anton Khirnov
cf1e0786ed error_resilience: move the MECmpContext initialization into ER code
Currently, it needs to be initialized by the ER caller (which is
currently either a mpegvideo decoder or h264dec). However, since none of
those decoders use MECmpContext for anything except ER, it makes more
sense to handle it purely inside ER.
2015-01-27 09:07:59 +01:00
Michael Niedermayer
ecd39520b8 avcodec/h264: Partially decode and display single fields try #2
This like the previous attempt does not fully correctly decode this
type of non standard H.264, but it now works fully automatic
requiring no manual filters or flags to be used

See Ticket2254

Reviewed-by: Kieran Kunhya <kierank@obe.tv>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-23 00:47:24 +01:00