From patchwork Sun Sep 22 15:43:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 15226 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 A85014479FD for ; Sun, 22 Sep 2019 18:44:09 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 83A2C689884; Sun, 22 Sep 2019 18:44:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 588316882F7 for ; Sun, 22 Sep 2019 18:44:03 +0300 (EEST) Received: by mail-pg1-f193.google.com with SMTP id y35so669250pgl.1 for ; Sun, 22 Sep 2019 08:44:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Yk+KmszCxnZ2OLKXzHoviRe7KY98U+xIRqsxQxxP1as=; b=huisx9BlmDmcHQiPv2PE3dinJCoVVG2KWRjdGxQJ3OrGwWI7CRqbsWB9Cxs8e6On9r UBGrSqjxYtNPjmf6KMslKarjlwNAXxtoY1VU9Pn3657J77BXVctowxJsuFEq4I+7Fbjp b4+wyIUBW2zQBTR2d5+BRVFPZFODXeuAVs0cvTWrZL1BZkxMz15cXSPc5Q3sZQ235h0b JfNU9nMxGAlWpoawrnPay1pMMvydf8ZaLv6XUHQrCdWHOM16W+1Y97u82fSp3iB4YMNH 7VVHdDNC00htSYgu13cJtf8fk8JVtgtMGy5KvWmk/oDTlqYFn9BkHCxnos1EzAo6RtXg 58iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Yk+KmszCxnZ2OLKXzHoviRe7KY98U+xIRqsxQxxP1as=; b=aaw6qaf7xfFoH1r/ZeWULOd1C5yJCPZdBRBfxfSuY4PcfciDOs3hgEkcSEZTl1+iQa rRwJeWXTPoUY5pSEy/vTh4SCSqALAxiGSC4xSo5Eu9oc5jM+DG8xPVJaQgWdCkPYCt5T L6KLNFtxlIYsBYj+7vlsjHTMmU4wYtBtCcTpdCQrqwm+LwOrT4TOXANqmWc7/YVkHawv 787PXLIEb+Ss7FmRX/3ADrwu2k/nlxGARheBuouGNcag8a5FgeOpJpt/KFtS1ekYUaJ7 QWWsN1zSjcgjhdBRErJjho4/S2csVU0+7CdsDHGDLMq0xYYVhj5scvCqcY2DnMRlhFXf qtYQ== X-Gm-Message-State: APjAAAWOpnXOhW5QwFhk0cymAbWF0jtteIFoB8niVHJeQdxh+swVsOft 3TOmmhA+4PBplwjitqnecn/rxeGp X-Google-Smtp-Source: APXvYqySohlTFO/KoEPh7xpnaC4+PC1AsaLEO4NhlyC21klskAkCSetNcIHyfYPXcNbJz5pzTZgoog== X-Received: by 2002:a62:14cb:: with SMTP id 194mr30421546pfu.192.1569167041145; Sun, 22 Sep 2019 08:44:01 -0700 (PDT) Received: from vpn.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id k5sm9763396pfp.109.2019.09.22.08.43.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 22 Sep 2019 08:44:00 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Sun, 22 Sep 2019 23:43:56 +0800 Message-Id: <20190922154356.2369-1-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20190922140616.2216-1-lance.lmwang@gmail.com> References: <20190922140616.2216-1-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v2] avcodec/dnxhdenc: remove the unneed *thread[MAX_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 Cc: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavcodec/dnxhdenc.c | 47 ++++++++++------------------------------------- libavcodec/dnxhdenc.h | 2 -- 2 files changed, 10 insertions(+), 39 deletions(-) diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c index 41b8079..6be3c43 100644 --- a/libavcodec/dnxhdenc.c +++ b/libavcodec/dnxhdenc.c @@ -365,7 +365,7 @@ fail: static av_cold int dnxhd_encode_init(AVCodecContext *avctx) { DNXHDEncContext *ctx = avctx->priv_data; - int i, index, ret; + int index, ret; switch (avctx->pix_fmt) { case AV_PIX_FMT_YUV422P: @@ -526,26 +526,11 @@ FF_DISABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS #endif - if (avctx->active_thread_type == FF_THREAD_SLICE) { - if (avctx->thread_count > MAX_THREADS) { - av_log(avctx, AV_LOG_ERROR, "too many threads\n"); - return AVERROR(EINVAL); - } - } - if (avctx->qmax <= 1) { av_log(avctx, AV_LOG_ERROR, "qmax must be at least 2\n"); return AVERROR(EINVAL); } - ctx->thread[0] = ctx; - if (avctx->active_thread_type == FF_THREAD_SLICE) { - for (i = 1; i < avctx->thread_count; i++) { - ctx->thread[i] = av_malloc(sizeof(DNXHDEncContext)); - memcpy(ctx->thread[i], ctx, sizeof(DNXHDEncContext)); - } - } - return 0; fail: // for FF_ALLOCZ_OR_GOTO return AVERROR(ENOMEM); @@ -713,11 +698,11 @@ void dnxhd_get_blocks(DNXHDEncContext *ctx, int mb_x, int mb_y) int dct_uv_offset = ctx->dct_uv_offset; int linesize = ctx->m.linesize; int uvlinesize = ctx->m.uvlinesize; - const uint8_t *ptr_y = ctx->thread[0]->src[0] + + const uint8_t *ptr_y = ctx->src[0] + ((mb_y << 4) * ctx->m.linesize) + (mb_x << bs + 1); - const uint8_t *ptr_u = ctx->thread[0]->src[1] + + const uint8_t *ptr_u = ctx->src[1] + ((mb_y << 4) * ctx->m.uvlinesize) + (mb_x << bs + ctx->is_444); - const uint8_t *ptr_v = ctx->thread[0]->src[2] + + const uint8_t *ptr_v = ctx->src[2] + ((mb_y << 4) * ctx->m.uvlinesize) + (mb_x << bs + ctx->is_444); PixblockDSPContext *pdsp = &ctx->m.pdsp; VideoDSPContext *vdsp = &ctx->m.vdsp; @@ -853,7 +838,6 @@ static int dnxhd_calc_bits_thread(AVCodecContext *avctx, void *arg, int mb_y = jobnr, mb_x; int qscale = ctx->qscale; LOCAL_ALIGNED_16(int16_t, block, [64]); - ctx = ctx->thread[threadnr]; ctx->m.last_dc[0] = ctx->m.last_dc[1] = @@ -908,7 +892,6 @@ static int dnxhd_encode_thread(AVCodecContext *avctx, void *arg, { DNXHDEncContext *ctx = avctx->priv_data; int mb_y = jobnr, mb_x; - ctx = ctx->thread[threadnr]; init_put_bits(&ctx->m.pb, (uint8_t *)arg + ctx->data_offset + ctx->slice_offs[jobnr], ctx->slice_size[jobnr]); @@ -969,9 +952,8 @@ static int dnxhd_mb_var_thread(AVCodecContext *avctx, void *arg, int partial_last_row = (mb_y == ctx->m.mb_height - 1) && ((avctx->height >> ctx->interlaced) & 0xF); - ctx = ctx->thread[threadnr]; if (ctx->bit_depth == 8) { - uint8_t *pix = ctx->thread[0]->src[0] + ((mb_y << 4) * ctx->m.linesize); + uint8_t *pix = ctx->src[0] + ((mb_y << 4) * ctx->m.linesize); for (mb_x = 0; mb_x < ctx->m.mb_width; ++mb_x, pix += 16) { unsigned mb = mb_y * ctx->m.mb_width + mb_x; int sum; @@ -1000,7 +982,7 @@ static int dnxhd_mb_var_thread(AVCodecContext *avctx, void *arg, } else { // 10-bit const int linesize = ctx->m.linesize >> 1; for (mb_x = 0; mb_x < ctx->m.mb_width; ++mb_x) { - uint16_t *pix = (uint16_t *)ctx->thread[0]->src[0] + + uint16_t *pix = (uint16_t *)ctx->src[0] + ((mb_y << 4) * linesize) + (mb_x << 4); unsigned mb = mb_y * ctx->m.mb_width + mb_x; int sum = 0; @@ -1264,14 +1246,11 @@ static int dnxhd_encode_fast(AVCodecContext *avctx, DNXHDEncContext *ctx) static void dnxhd_load_picture(DNXHDEncContext *ctx, const AVFrame *frame) { - int i; - for (i = 0; i < ctx->m.avctx->thread_count; i++) { - ctx->thread[i]->m.linesize = frame->linesize[0] << ctx->interlaced; - ctx->thread[i]->m.uvlinesize = frame->linesize[1] << ctx->interlaced; - ctx->thread[i]->dct_y_offset = ctx->m.linesize *8; - ctx->thread[i]->dct_uv_offset = ctx->m.uvlinesize*8; - } + ctx->m.linesize = frame->linesize[0] << ctx->interlaced; + ctx->m.uvlinesize = frame->linesize[1] << ctx->interlaced; + ctx->dct_y_offset = ctx->m.linesize *8; + ctx->dct_uv_offset = ctx->m.uvlinesize*8; #if FF_API_CODED_FRAME FF_DISABLE_DEPRECATION_WARNINGS @@ -1354,7 +1333,6 @@ FF_ENABLE_DEPRECATION_WARNINGS static av_cold int dnxhd_encode_end(AVCodecContext *avctx) { DNXHDEncContext *ctx = avctx->priv_data; - int i; av_freep(&ctx->orig_vlc_codes); av_freep(&ctx->orig_vlc_bits); @@ -1374,11 +1352,6 @@ static av_cold int dnxhd_encode_end(AVCodecContext *avctx) av_freep(&ctx->qmatrix_c16); av_freep(&ctx->qmatrix_l16); - if (avctx->active_thread_type == FF_THREAD_SLICE) { - for (i = 1; i < avctx->thread_count; i++) - av_freep(&ctx->thread[i]); - } - return 0; } diff --git a/libavcodec/dnxhdenc.h b/libavcodec/dnxhdenc.h index 7b0d862..972f2e2 100644 --- a/libavcodec/dnxhdenc.h +++ b/libavcodec/dnxhdenc.h @@ -55,8 +55,6 @@ typedef struct DNXHDEncContext { uint32_t *slice_size; uint32_t *slice_offs; - struct DNXHDEncContext *thread[MAX_THREADS]; - // Because our samples are either 8 or 16 bits for 8-bit and 10-bit // encoding respectively, these refer either to bytes or to two-byte words. unsigned dct_y_offset;