From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D3DEC49A67 for ; Sun, 28 Apr 2024 07:28:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1A74B68D3C1; Sun, 28 Apr 2024 10:28:00 +0300 (EEST) Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D5C9568D22E for ; Sun, 28 Apr 2024 10:27:53 +0300 (EEST) Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a58872c07d8so804892766b.0 for ; Sun, 28 Apr 2024 00:27:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714289273; x=1714894073; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7M1iHQoUbMNydDowVi7DDsNUy4h76nX1wrLWswAfFpY=; b=Yp9NyCtoYiBDsfPAV2OIIPUxn0K9oeZAVrLFsWt6H9bHyU7GPvSq9qpwHXfLy7T63B pmto/cbrwZY5GPj454DlawR5sOuTOycskKrMqrl6oB4DgzGffsu03BrBNS/t8XktqmEM iAm8WztRHL7wG8hZu2Gtnb6rmVUdlZ0fdPVIuIdxHQXRAhfZlNuv4MDlWs0Dr+DlR476 lj4x2C4Qw3Xadc5RvecqmopHWJvZkMWRQC+aIR9z5whPjG0/VOPtDQkeR3n85ss6tq1r cn+EWpjkArkYA5zsk2KMNdcFjiy5ELtFo1LIPbKJvJcXl/Nfqhgc8nnjMZnRG52e7TD3 CtGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714289273; x=1714894073; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7M1iHQoUbMNydDowVi7DDsNUy4h76nX1wrLWswAfFpY=; b=K2v+K+545SIuzYXFgW1DtUwmvR7eUmgM3+F39HvWWaCYj1wDeG01L7ctsjgG4tib+V aTCHmZL8RJbaXbRGhyOd9xf91crujMo2jwNPzscpL8tQBa7EvCkIgGuYDDZlIAI7ORc8 aYPJ9k8/BH6a8A6X0vJ6XhG6FBtPhdy9T6ezBTuVVOetdthX5gbflZj9gMnWZ4geaTkm KttCEOcqGd1qgPfLNluqNHbLLur2d7FoU17zy9LmVy84/KMHE4AewIOpoNddvhq9YLWN rUG44oQuUCGfSLkeMPzOh4Dz5Vyx4toIaY3SzP5ayuhMeeEXNSlPMfArfvfpvgOmFRKn Cjzg== X-Gm-Message-State: AOJu0YyvhPTS9EPhS/HwRsiTZtpeCbHTFs3LNqxeC8bVe8Hgockc+sPL 8s4FTXzcqPdxyrXSPHe8fQlrDXn2n+d7tMnwX5F/5eVME+mobEKgfohagw== X-Google-Smtp-Source: AGHT+IHMRwpzhYM/J8cruSBwtCCaanqvrasndqhZbjmDJNnFtrBkieBxgUEEuboJkhIyWpu9AFPJNQ== X-Received: by 2002:a17:906:7cc2:b0:a55:b8b7:1971 with SMTP id h2-20020a1709067cc200b00a55b8b71971mr5328727ejp.32.1714289272906; Sun, 28 Apr 2024 00:27:52 -0700 (PDT) Received: from mitsuki.. (ip-78-45-35-87.bb.vodafone.cz. [78.45.35.87]) by smtp.gmail.com with ESMTPSA id ku2-20020a170907788200b00a58c0c48756sm3128911ejc.32.2024.04.28.00.27.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Apr 2024 00:27:52 -0700 (PDT) From: David Rosca To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Apr 2024 09:26:41 +0200 Message-ID: <20240428072650.168514-2-nowrep@gmail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240428072650.168514-1-nowrep@gmail.com> References: <20240428072650.168514-1-nowrep@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] lavc/vaapi_av1: Avoid sending the same slice buffer multiple times 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: David Rosca Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: When there are multiple tiles in one slice buffer, use multiple slice params to avoid sending the same slice buffer multiple times and thus increasing the bitstream size the driver will need to upload to hw. --- libavcodec/vaapi_av1.c | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/libavcodec/vaapi_av1.c b/libavcodec/vaapi_av1.c index 4a90db1e09..567f505fbd 100644 --- a/libavcodec/vaapi_av1.c +++ b/libavcodec/vaapi_av1.c @@ -19,6 +19,7 @@ */ #include "libavutil/frame.h" +#include "libavutil/mem.h" #include "hwaccel_internal.h" #include "vaapi_decode.h" #include "internal.h" @@ -393,13 +394,17 @@ static int vaapi_av1_decode_slice(AVCodecContext *avctx, { const AV1DecContext *s = avctx->priv_data; VAAPIDecodePicture *pic = s->cur_frame.hwaccel_picture_private; - VASliceParameterBufferAV1 slice_param; - int err = 0; + VASliceParameterBufferAV1 *slice_params; + int err = 0, nb_params = 0; - for (int i = s->tg_start; i <= s->tg_end; i++) { - memset(&slice_param, 0, sizeof(VASliceParameterBufferAV1)); + slice_params = av_calloc(s->tg_end - s->tg_start + 1, sizeof(*slice_params)); + if (!slice_params) { + err = AVERROR(ENOMEM); + goto fail; + } - slice_param = (VASliceParameterBufferAV1) { + for (int i = s->tg_start; i <= s->tg_end; i++) { + slice_params[nb_params++] = (VASliceParameterBufferAV1) { .slice_data_size = s->tile_group_info[i].tile_size, .slice_data_offset = s->tile_group_info[i].tile_offset, .slice_data_flag = VA_SLICE_DATA_FLAG_ALL, @@ -408,18 +413,22 @@ static int vaapi_av1_decode_slice(AVCodecContext *avctx, .tg_start = s->tg_start, .tg_end = s->tg_end, }; - - err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &slice_param, 1, - sizeof(VASliceParameterBufferAV1), - buffer, - size); - if (err) { - ff_vaapi_decode_cancel(avctx, pic); - return err; - } } + err = ff_vaapi_decode_make_slice_buffer(avctx, pic, slice_params, nb_params, + sizeof(VASliceParameterBufferAV1), + buffer, + size); + av_free(slice_params); + + if (err) + goto fail; + return 0; + +fail: + ff_vaapi_decode_cancel(avctx, pic); + return err; } const FFHWAccel ff_av1_vaapi_hwaccel = { -- 2.44.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".