From patchwork Mon Apr 8 20:13:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47963 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3f98:b0:1a7:a0dc:8de5 with SMTP id ay24csp143104pzb; Mon, 8 Apr 2024 13:31:56 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWmsRJyxpOdi5Cr7GFNQ/rIxgb/VESIqA5N3Yk1J0bywt3g9Dr+KCEGSE05ZfIqT02wln63m9sb8YhLMAtNpCFf+sgc6CctiNGjDA== X-Google-Smtp-Source: AGHT+IHLQ4J+IbeOtdyAXvJ4XL8nfbJcB0I/ZC3M3/ZSRVZS6QlOOewc2WPm5mN8tfbFMLzj8oZs X-Received: by 2002:a17:906:6a1a:b0:a4e:5641:23d4 with SMTP id qw26-20020a1709066a1a00b00a4e564123d4mr7778978ejc.1.1712608316492; Mon, 08 Apr 2024 13:31:56 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id di13-20020a170906730d00b00a4e25e2f089si4132974ejc.937.2024.04.08.13.31.54; Mon, 08 Apr 2024 13:31:56 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b="mex/fCYs"; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9DD5B68D41D; Mon, 8 Apr 2024 23:31:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2091.outbound.protection.outlook.com [40.92.50.91]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6D28568C4BA for ; Mon, 8 Apr 2024 23:31:44 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z2N15TcTzcycJYMCXOF77JsGsKH9dt1tWc6emit10h/+nTWCImc/8If5N8KEAUDzYsUfyFNx3vLBJaNm2YwkDE2PBjkwrBHFdRBQFaVepMVAdby8vnjOpzIGcv7m8jCusaEs87+I9+Dg9eWJS2VMvMJ/zlbxSaLucHwQ3LdulUiTIxs8yyjP1Z6Y7KCnaQw0gKSpecPt9Yee/nwRAlGeHzLYRVXdQ6/xRWip6BL/bvyUqp+ectuirQj6iHC7teF8kOwQ0FcdytMHor5ECgVr1h0G+kD+mcmbU8P1gafISDlg4OeTZvSTIVHwlOokWgU97NAjJWhyt+7VVQd147VI6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=S2PXVpCK9edti1A1iYBkuvn/vXn1F6GKxPPPdWLwnvA=; b=QSz5KWlP4F+CfkVhP42XLjLVw/bcBENMp94lGDkBKJUPDDUjFBC3wRUJGuSMZErQZBh3yMJojx+Vc1EORM0g7ZnY7yjpkoPgWWE6PsDU11ivPaAvwBgMV9NLqERWBp41UHBwMxyfhv8wHO1vjI1OzCAFCUYXNXopcd8C41mWjaB5ch4DN2IrO//1/hZ/nGwp8w5ifpikzjM0MwBmqPsuuDDzaXruKg/QpQo4uqIQoD4INUE0IKHCDo3Z4VMFLyzksnP8of5Z3RQ483EopkkZqGpFT48S9YH5lSg/5RvBG3a94Y/fE/ZqSgwdBrXjyn6M4iIho7xBg7sxbQUU2EZ3SQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S2PXVpCK9edti1A1iYBkuvn/vXn1F6GKxPPPdWLwnvA=; b=mex/fCYsRLftvNf+/JbAkHWHO+FjjQkiAX7O6N7KibkPzCt6OhIOvtoXxNRlZcTyYqkFOknkdk+RBvxcfXAjlgbft2PgBF24b6sHMoWrDHBrvJKzvHJ/dqBt+bQvpLD7zDglKTP4t73fdNEHxdSZTQzyr2sREQvRHNwgO8/KetRsiWOaeUhYP+oyvQOp7XVlNYYmenDq1qi32ASOZl25A7hzz7gk4wtvfD1V7uMXGAIABQbNk13AjC9hQXq5BWTZmerJ248qz4ANIvmUmNW00cx87pJUag/scGSEjni9uZItffDMg8yZrlKVLIZeW2bnUBWf1GU9w/IGJoTHMTXdmA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0171.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:322::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Mon, 8 Apr 2024 20:16:00 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.042; Mon, 8 Apr 2024 20:16:00 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 Apr 2024 22:13:57 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [PfKa2u6j18X2hbEFT6xIG9oYmQguglxM23OQ5MZ3FOQ=] X-ClientProxiedBy: ZR0P278CA0124.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::21) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240408201405.2136840-18-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0171:EE_ X-MS-Office365-Filtering-Correlation-Id: f3460005-e8a6-45c0-3410-08dc5808b56e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vUB1/YHHAO/mA9rpJ4b7lc+RJ6jZoyqbfR2Fg4DrrjZJkCrbHj44ui5MYpTa5WQCmL4OYHwF6EmLHe1ULKMqs1dqSxx0qHwyOmuT2ExZYY5LBONd48lFqSKnSg3NfdGPBZV6izfkIYHCKQXA4Af/I4pbWvGy0woJ1kMKgt3f561bHd+biRig2mc2Q83JeaxzWoUVtSLrhLDmdtmoyHtkVNb/6ZOkGOLx48E5X15fImtnfwHDv/5evJb5csBvLjS7j6q9Evx4+kcPuBSOKM2zQgmPAmJYuW7H5ioxWTTJ0hrupLJGLRmGT26Y0lif12edPBfeQMwR5sRbifvA+xjVA+nvDQH7rL6pRHNGDJZ8hhXQ+wyOsj3sKrKWJrA0d1afCOxUYLnrXTN6ErqZT34pUFyRGgyEqK8+Uix6z2jp/u75aBO6iFFPbCr+2qkCRRpKnNQQKwSSZqcmpsBVXK/+PSmpitNCFQgIvQC+FGXtp78S4r8v/RwwpZh5NBYzJDY+623PLq/HYDUmWQ5zAooWOos7eYoeqIbbhwP96X0wHwIdt7IsiGAztKOvw30qKcDfLan7QuF3PZTu1hgVx0+c+SuyEdiiUMSMGykxMJC9YI/vMo+9cj4sPe8M+NleR+c2 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QAFtrW8pPyM0okGvpYV+qxMEA4rTRcVCTeMf56yCmK2748fzb9yVcLoB5nTza/BFNF7LdWVaY9LOQZUxEFaGr0A3WcC/vQ8i69TaL1e5l5c9+xxrXjwabFb7B+/x5XgCnLswx9w/c6GQGfTa5Uf4rdIEvHMQfFNKV51kNaZ5uwX9pI2emEGPLZt9vq1nl5PI7l1SFFrEggiXYgpnIta+XSijHFINZgPV0uJtk4q/acwLKtKbgF3VinIGEzKpI1xtusEu6ABh4XuO9QEz71l/sk8/LPvrjTOUgm0/T9Eky2EG73OC/aU2qCmCP15IklsbEwD72PkcD+Mr/S5h9XVVMPoPgCISNb5+1FEUcHtwAUMEBJ7qCAME9gLX5rPc/z6B3fYbQ2K8inXURYq1acvCmMchQCL/3ydb0BONEQDRCKGJ8At2iGzhUeFuFzbxLkwjLyC6Z0jzSDXKvkn+UJxf86tgI/55ORSi2horm1rmsIOA3hnxUs9dsplSxjS/LKliZ9WtclO/MTWRb+KhtAYC6OKa0ZrTjUtama/8NUqK+8OfL0xGxDaN+jWFEYZWAOipW+K75pinBKpPzi8ILi+T7iQf7FLx9cKNYECOzwkI3KGmMm7E7z7Zj7myr+StivGSGPOXimHQ3UgCUivqY1sAjgHFyvx5qdA6TaiwY/Vn0lpP/agl7v2A9xh1374z4VeZaOVzH0K6tUWwdHxTR/u5KeFRXsekyAfpGFodJ6fKB2nI7C14CfV4pVFdskYkk48jXyLjcR8QDj6xpkYisYnJJcmJvBfdydQSxZO9cELj9OCnUThAEicw9pCDUi66M8K7ueV5ZHNE715LKRvAesy2lfKhxa0yv5MWlheqYJxPr/bACSTGvq4qasZ/Z0/oYKRxJ7fiqvFqdUpKo5Cv3odkSbyu4+RZI6B8haIv1/DeZRydunC2ImwziLl7zbs2FAAfxIG4ttCVTAEoUk+yTsv3TpqxEbdOQo2WeI8GfpHq+0mS5y7K56PA0j/Jp94gKZYYUNd1bH1cePCTFnmYYURLJX6hRy/Z283Bn51bHciUjeZH8yxXqN3BcgQXhkrw1odZjhvb4EITZhm77MDB0HuWJCm2LRL25CW/7VjWJeJWCSArtbwWXt3iSK7nE26ym9jSph023hfT2ZCEOI1yy9QnxzukGjiiPbqOkWe+88TiXHTln6m2TzHT/rJeWGk2j+djpLj8LMzdYNhL7m6pHK/thqv5z2qZvRkmamckSMkcU4pqoG52b6E+Vzg4f21BRyY2e/xTtUVI/0yLECbNrYHXDw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3460005-e8a6-45c0-3410-08dc5808b56e X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2024 20:16:00.8426 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8P250MB0171 Subject: [FFmpeg-devel] [PATCH v2 19/27] avcodec/hevcdec: Switch to ProgressFrames X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qU5MkmP7RVFH Avoids implicit av_frame_ref() and therefore allocations and error checks. It also avoids explicitly allocating the AVFrames (done implicitly when getting the buffer). Signed-off-by: Andreas Rheinhardt --- libavcodec/hevc_filter.c | 8 ++++---- libavcodec/hevc_mvs.c | 6 +++--- libavcodec/hevc_refs.c | 22 ++++++++++------------ libavcodec/hevcdec.c | 24 ++++++++++-------------- libavcodec/hevcdec.h | 4 ++-- 5 files changed, 29 insertions(+), 35 deletions(-) diff --git a/libavcodec/hevc_filter.c b/libavcodec/hevc_filter.c index 0c45310ea6..b1e2ea7a66 100644 --- a/libavcodec/hevc_filter.c +++ b/libavcodec/hevc_filter.c @@ -26,7 +26,7 @@ #include "libavutil/internal.h" #include "hevcdec.h" -#include "threadframe.h" +#include "progressframe.h" #define LUMA 0 #define CB 1 @@ -874,15 +874,15 @@ void ff_hevc_hls_filter(HEVCLocalContext *lc, int x, int y, int ctb_size) if (y && x_end) { sao_filter_CTB(lc, s, x, y - ctb_size); if (s->threads_type & FF_THREAD_FRAME ) - ff_thread_report_progress(&s->ref->tf, y, 0); + ff_progress_frame_report(&s->ref->tf, y); } if (x_end && y_end) { sao_filter_CTB(lc, s, x , y); if (s->threads_type & FF_THREAD_FRAME ) - ff_thread_report_progress(&s->ref->tf, y + ctb_size, 0); + ff_progress_frame_report(&s->ref->tf, y + ctb_size); } } else if (s->threads_type & FF_THREAD_FRAME && x_end) - ff_thread_report_progress(&s->ref->tf, y + ctb_size - 4, 0); + ff_progress_frame_report(&s->ref->tf, y + ctb_size - 4); } void ff_hevc_hls_filters(HEVCLocalContext *lc, int x_ctb, int y_ctb, int ctb_size) diff --git a/libavcodec/hevc_mvs.c b/libavcodec/hevc_mvs.c index 0a8cc2c43d..5591919e2e 100644 --- a/libavcodec/hevc_mvs.c +++ b/libavcodec/hevc_mvs.c @@ -23,7 +23,7 @@ #include "hevc.h" #include "hevcdec.h" -#include "threadframe.h" +#include "progressframe.h" static const uint8_t l0_l1_cand_idx[12][2] = { { 0, 1, }, @@ -248,7 +248,7 @@ static int temporal_luma_motion_vector(const HEVCContext *s, int x0, int y0, x &= ~15; y &= ~15; if (s->threads_type == FF_THREAD_FRAME) - ff_thread_await_progress(&ref->tf, y, 0); + ff_progress_frame_await(&ref->tf, y); x_pu = x >> s->ps.sps->log2_min_pu_size; y_pu = y >> s->ps.sps->log2_min_pu_size; temp_col = TAB_MVF(x_pu, y_pu); @@ -262,7 +262,7 @@ static int temporal_luma_motion_vector(const HEVCContext *s, int x0, int y0, x &= ~15; y &= ~15; if (s->threads_type == FF_THREAD_FRAME) - ff_thread_await_progress(&ref->tf, y, 0); + ff_progress_frame_await(&ref->tf, y); x_pu = x >> s->ps.sps->log2_min_pu_size; y_pu = y >> s->ps.sps->log2_min_pu_size; temp_col = TAB_MVF(x_pu, y_pu); diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index aed649933d..192d311696 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -26,18 +26,15 @@ #include "decode.h" #include "hevc.h" #include "hevcdec.h" +#include "progressframe.h" #include "refstruct.h" -#include "threadframe.h" void ff_hevc_unref_frame(HEVCFrame *frame, int flags) { - /* frame->frame can be NULL if context init failed */ - if (!frame->frame || !frame->frame->buf[0]) - return; - frame->flags &= ~flags; if (!frame->flags) { - ff_thread_release_ext_buffer(&frame->tf); + ff_progress_frame_unref(&frame->tf); + frame->frame = NULL; av_frame_unref(frame->frame_grain); frame->needs_fg = 0; @@ -83,13 +80,14 @@ static HEVCFrame *alloc_frame(HEVCContext *s) int i, j, ret; for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { HEVCFrame *frame = &s->DPB[i]; - if (frame->frame->buf[0]) + if (frame->frame) continue; - ret = ff_thread_get_ext_buffer(s->avctx, &frame->tf, - AV_GET_BUFFER_FLAG_REF); + ret = ff_progress_frame_get_buffer(s->avctx, &frame->tf, + AV_GET_BUFFER_FLAG_REF); if (ret < 0) return NULL; + frame->frame = frame->tf.f; frame->rpl = ff_refstruct_allocz(s->pkt.nb_nals * sizeof(*frame->rpl)); if (!frame->rpl) @@ -135,7 +133,7 @@ int ff_hevc_set_new_ref(HEVCContext *s, AVFrame **frame, int poc) for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { HEVCFrame *frame = &s->DPB[i]; - if (frame->frame->buf[0] && frame->sequence == s->seq_decode && + if (frame->frame && frame->sequence == s->seq_decode && frame->poc == poc) { av_log(s->avctx, AV_LOG_ERROR, "Duplicate POC in a sequence: %d.\n", poc); @@ -394,7 +392,7 @@ static HEVCFrame *find_ref_idx(HEVCContext *s, int poc, uint8_t use_msb) for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { HEVCFrame *ref = &s->DPB[i]; - if (ref->frame->buf[0] && ref->sequence == s->seq_decode) { + if (ref->frame && ref->sequence == s->seq_decode) { if ((ref->poc & mask) == poc && (use_msb || ref->poc != s->poc)) return ref; } @@ -441,7 +439,7 @@ static HEVCFrame *generate_missing_ref(HEVCContext *s, int poc) frame->flags = 0; if (s->threads_type == FF_THREAD_FRAME) - ff_thread_report_progress(&frame->tf, INT_MAX, 0); + ff_progress_frame_report(&frame->tf, INT_MAX); return frame; } diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index cedd09fe14..5f0f50adf1 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -49,9 +49,9 @@ #include "hwconfig.h" #include "internal.h" #include "profiles.h" +#include "progressframe.h" #include "refstruct.h" #include "thread.h" -#include "threadframe.h" static const uint8_t hevc_pel_weight[65] = { [2] = 0, [4] = 1, [6] = 2, [8] = 3, [12] = 4, [16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9 }; @@ -1867,7 +1867,7 @@ static void hevc_await_progress(const HEVCContext *s, const HEVCFrame *ref, if (s->threads_type == FF_THREAD_FRAME ) { int y = FFMAX(0, (mv->y >> 2) + y0 + height + 9); - ff_thread_await_progress(&ref->tf, y, 0); + ff_progress_frame_await(&ref->tf, y); } } @@ -3238,7 +3238,7 @@ static int decode_nal_units(HEVCContext *s, const uint8_t *buf, int length) fail: if (s->ref && s->threads_type == FF_THREAD_FRAME) - ff_thread_report_progress(&s->ref->tf, INT_MAX, 0); + ff_progress_frame_report(&s->ref->tf, INT_MAX); return ret; } @@ -3416,14 +3416,15 @@ static int hevc_ref_frame(HEVCFrame *dst, HEVCFrame *src) { int ret; - ret = ff_thread_ref_frame(&dst->tf, &src->tf); - if (ret < 0) - return ret; + ff_progress_frame_ref(&dst->tf, &src->tf); + dst->frame = dst->tf.f; if (src->needs_fg) { ret = av_frame_ref(dst->frame_grain, src->frame_grain); - if (ret < 0) + if (ret < 0) { + ff_hevc_unref_frame(dst, ~0); return ret; + } dst->needs_fg = 1; } @@ -3463,7 +3464,6 @@ static av_cold int hevc_decode_free(AVCodecContext *avctx) for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { ff_hevc_unref_frame(&s->DPB[i], ~0); - av_frame_free(&s->DPB[i].frame); av_frame_free(&s->DPB[i].frame_grain); } @@ -3509,11 +3509,6 @@ static av_cold int hevc_init_context(AVCodecContext *avctx) return AVERROR(ENOMEM); for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { - s->DPB[i].frame = av_frame_alloc(); - if (!s->DPB[i].frame) - return AVERROR(ENOMEM); - s->DPB[i].tf.f = s->DPB[i].frame; - s->DPB[i].frame_grain = av_frame_alloc(); if (!s->DPB[i].frame_grain) return AVERROR(ENOMEM); @@ -3545,7 +3540,7 @@ static int hevc_update_thread_context(AVCodecContext *dst, for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { ff_hevc_unref_frame(&s->DPB[i], ~0); - if (s0->DPB[i].frame->buf[0]) { + if (s0->DPB[i].frame) { ret = hevc_ref_frame(&s->DPB[i], &s0->DPB[i]); if (ret < 0) return ret; @@ -3715,6 +3710,7 @@ const FFCodec ff_hevc_decoder = { .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS, .caps_internal = FF_CODEC_CAP_EXPORTS_CROPPING | + FF_CODEC_CAP_USES_PROGRESSFRAMES | FF_CODEC_CAP_INIT_CLEANUP, .p.profiles = NULL_IF_CONFIG_SMALL(ff_hevc_profiles), .hw_configs = (const AVCodecHWConfigInternal *const []) { diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index e65a6180ca..24fcbf440a 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -40,7 +40,7 @@ #include "hevc_sei.h" #include "hevcdsp.h" #include "h274.h" -#include "threadframe.h" +#include "progressframe.h" #include "videodsp.h" #define SHIFT_CTB_WPP 2 @@ -354,7 +354,7 @@ typedef struct DBParams { typedef struct HEVCFrame { AVFrame *frame; AVFrame *frame_grain; - ThreadFrame tf; + ProgressFrame tf; int needs_fg; /* 1 if grain needs to be applied by the decoder */ MvField *tab_mvf; ///< RefStruct reference RefPicList *refPicList;