[FFmpeg-cvslog] mpeg12: Ignore slice threading if hwaccel is active
Rémi Denis-Courmont
git at videolan.org
Fri Jul 26 12:34:05 CEST 2013
ffmpeg | branch: release/1.2 | Rémi Denis-Courmont <remi at remlab.net> | Wed Jul 24 19:50:43 2013 +0300| [70127070dd9f7eef52ed029dd68606b0c8efd137] | committer: Carl Eugen Hoyos
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 at biurrun.de>
(cherry picked from commit 93a51984a27f3ba84d4e6f13d0c704ee9891603e)
Conflicts:
libavcodec/mpeg12dec.c
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=70127070dd9f7eef52ed029dd68606b0c8efd137
---
libavcodec/mpeg12.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index 4021996..7f72f13 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -2277,7 +2277,8 @@ static int decode_chunks(AVCodecContext *avctx,
buf_ptr = avpriv_mpv_find_start_code(buf_ptr, buf_end, &start_code);
if (start_code > 0x1ff) {
if (s2->pict_type != AV_PICTURE_TYPE_B || avctx->skip_frame <= AVDISCARD_DEFAULT) {
- if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE)) {
+ if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE) &&
+ !avctx->hwaccel) {
int i;
av_assert0(avctx->thread_count > 1);
@@ -2337,7 +2338,8 @@ static int decode_chunks(AVCodecContext *avctx,
s2->intra_dc_precision= 3;
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;
avctx->execute(avctx, slice_decode_thread,
@@ -2504,7 +2506,8 @@ static int decode_chunks(AVCodecContext *avctx,
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 +
s2->slice_context_count / 2) /
s2->slice_context_count;
More information about the ffmpeg-cvslog
mailing list