mpeg12: Ignore slice threading if hwaccel is active
Slice threading does not work with hardware acceleration, as decoding
is per-picture. This fixes Bugzilla #542.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
(cherry picked from commit 93a51984a2
)
Conflicts:
libavcodec/mpeg12dec.c
This commit is contained in:

committed by
Carl Eugen Hoyos

parent
8f9bc6f2ce
commit
ccf470fdb6
@@ -2130,7 +2130,8 @@ static int decode_chunks(AVCodecContext *avctx,
|
|||||||
buf_ptr = avpriv_find_start_code(buf_ptr, buf_end, &start_code);
|
buf_ptr = avpriv_find_start_code(buf_ptr, buf_end, &start_code);
|
||||||
if (start_code > 0x1ff) {
|
if (start_code > 0x1ff) {
|
||||||
if (!skip_frame) {
|
if (!skip_frame) {
|
||||||
if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE)) {
|
if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE) &&
|
||||||
|
!avctx->hwaccel) {
|
||||||
int i;
|
int i;
|
||||||
av_assert0(avctx->thread_count > 1);
|
av_assert0(avctx->thread_count > 1);
|
||||||
|
|
||||||
@@ -2194,7 +2195,8 @@ static int decode_chunks(AVCodecContext *avctx,
|
|||||||
s2->intra_dc_precision= 3;
|
s2->intra_dc_precision= 3;
|
||||||
s2->intra_matrix[0]= 1;
|
s2->intra_matrix[0]= 1;
|
||||||
}
|
}
|
||||||
if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE) && s->slice_count) {
|
if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE) &&
|
||||||
|
!avctx->hwaccel && s->slice_count) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
avctx->execute(avctx, slice_decode_thread,
|
avctx->execute(avctx, slice_decode_thread,
|
||||||
@@ -2369,7 +2371,8 @@ static int decode_chunks(AVCodecContext *avctx,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE)) {
|
if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE) &&
|
||||||
|
!avctx->hwaccel) {
|
||||||
int threshold = (s2->mb_height * s->slice_count +
|
int threshold = (s2->mb_height * s->slice_count +
|
||||||
s2->slice_context_count / 2) /
|
s2->slice_context_count / 2) /
|
||||||
s2->slice_context_count;
|
s2->slice_context_count;
|
||||||
|
Reference in New Issue
Block a user