From patchwork Wed Apr 17 16:16:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 12782 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 8C4AE448074 for ; Wed, 17 Apr 2019 19:16:57 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7161268827F; Wed, 17 Apr 2019 19:16:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 86C7B6805EC for ; Wed, 17 Apr 2019 19:16:50 +0300 (EEST) Received: by mail-wm1-f66.google.com with SMTP id c1so4067383wml.4 for ; Wed, 17 Apr 2019 09:16:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=F7/phjfaXegTV+h2T39cVenMFNAfl/C6UkIZNEDruEE=; b=P+9EzMzE2IyyXoGSbEieLT7hXQaXUMKhn49W7FxR9KPb+FdIFTRMGR+LXnrBR/OEt0 ptO6QZeeLTPcaVeBPsmpMo6y4LTRWMSlm8lw7xSFNlxRTh7v+Xyhc8wji5fkZ8+CtnjC /pUNctt+6IJKQO1HSjZoCKX+e8ZAcYQ5Ed4D/KfyBQPCjeSfP8CjUshsrMG2DVpIzL9r nZ5/6JEH45Xaoo2w8hlyBe9rCVxTnPd+OMTWKxcmswKGtx3SoXNEojnuTqfT0g4mEcUG ri8ATElOUn/72LrofOMjUi7mW72eMdifkZo7pzqHCuKfq3M0cI7lPkx+5e2QYXx9G+tx EjOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=F7/phjfaXegTV+h2T39cVenMFNAfl/C6UkIZNEDruEE=; b=sBJknqnhCPGQb81lIIy+28t1lQdTssmX5K+5tF3omC5x5Clv8cEk4ismB3FsE48mb8 7f2tifdeSp4fTgJkpugkqf4W9IXnmbavxulYhGTdw1RNPadHS9WrORHRbTWDj9f8qROX aMIV0PVnvU7Rs6dItkJkP/knyaIupY8ZofSCP6tsbUKtQEGjwRkFvkkxlYCpR1sw1f2X FesQgdFANQFvRwJs1RJKjW/DsmqiWo3H67xNf0bZk5F1PowW6hOHwCXg5mu1phQ2BVoy iNwXsi4tqC+QHg3tRwqNYCumvJ4G/cA0GAJGidPnec7At5sb6y3Zp9n8JEtHM6Ju00yA f4FQ== X-Gm-Message-State: APjAAAXTWTce0jqe7LuiECfuh/CtV0n5DLTqiHFkqQg/PrxwZxfOA1g5 ElnKpH+dymVQMvW8/byREGcXgOgt X-Google-Smtp-Source: APXvYqwLnzBVKrMK43R9EJWf3VJ7SQ8UZlNrOoHFSGiAZtN2hP8fmB6cAwAnRdFcjNoPwyRj9JcvoA== X-Received: by 2002:a05:600c:2309:: with SMTP id 9mr32764762wmo.52.1555517809778; Wed, 17 Apr 2019 09:16:49 -0700 (PDT) Received: from localhost.localdomain ([37.244.238.255]) by smtp.gmail.com with ESMTPSA id t15sm4676456wmt.2.2019.04.17.09.16.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Apr 2019 09:16:48 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Apr 2019 18:16:39 +0200 Message-Id: <20190417161639.822-1-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH] avcodec/dvdec: add frame threads X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Paul B Mahol --- libavcodec/dvdec.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 7b16787e27..89864f2edc 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -49,6 +49,7 @@ #include "internal.h" #include "put_bits.h" #include "simple_idct.h" +#include "thread.h" typedef struct BlockInfo { const uint32_t *factor_table; @@ -499,7 +500,7 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, uint8_t *buf = avpkt->data; int buf_size = avpkt->size; DVVideoContext *s = avctx->priv_data; - AVFrame *frame = data; + ThreadFrame frame = { .f = data }; const uint8_t *vsc_pack; int apt, is16_9, ret; const AVDVProfile *sys; @@ -520,9 +521,9 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, s->sys = sys; } - s->frame = frame; - frame->key_frame = 1; - frame->pict_type = AV_PICTURE_TYPE_I; + s->frame = frame.f; + frame.f->key_frame = 1; + frame.f->pict_type = AV_PICTURE_TYPE_I; avctx->pix_fmt = s->sys->pix_fmt; avctx->framerate = av_inv_q(s->sys->time_base); @@ -539,14 +540,14 @@ static int dvvideo_decode_frame(AVCodecContext *avctx, void *data, ff_set_sar(avctx, s->sys->sar[is16_9]); } - if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) + if ((ret = ff_thread_get_buffer(avctx, &frame, 0)) < 0) return ret; - frame->interlaced_frame = 1; - frame->top_field_first = 0; + frame.f->interlaced_frame = 1; + frame.f->top_field_first = 0; /* Determine the codec's field order from the packet */ if ( *vsc_pack == dv_video_control ) { - frame->top_field_first = !(vsc_pack[3] & 0x40); + frame.f->top_field_first = !(vsc_pack[3] & 0x40); } s->buf = buf; @@ -569,6 +570,6 @@ AVCodec ff_dvvideo_decoder = { .priv_data_size = sizeof(DVVideoContext), .init = dvvideo_decode_init, .decode = dvvideo_decode_frame, - .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_SLICE_THREADS, + .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_SLICE_THREADS, .max_lowres = 3, };