From patchwork Sun Apr 28 07:26:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Rosca X-Patchwork-Id: 48329 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1509:b0:1a9:af23:56c1 with SMTP id nq9csp1336791pzb; Sun, 28 Apr 2024 00:34:29 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXTYW5oqi0z5hpuwVSSwNBQdrrNAQdiFB7UOP6+IfYL+qvJoLwDznCciWJ+5u5BbCC63L+iOfb6Uo/hTW8jFsKKXNJp0ZMRAvZCTg== X-Google-Smtp-Source: AGHT+IHAGONAfYDHd3QkTGlYdbbVAdRD7dsT5RPleG5HZw1+wYjnGjTIdo0orqMx6IPlxFeCzanb X-Received: by 2002:a2e:3c11:0:b0:2dd:87a9:f152 with SMTP id j17-20020a2e3c11000000b002dd87a9f152mr3996595lja.2.1714289668884; Sun, 28 Apr 2024 00:34:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1714289668; cv=none; d=google.com; s=arc-20160816; b=HSzKnHbjlV8dR2leyWk+Jche4sDB2rTad4DV9IQX/NJLI6i55+ebPV2lbwzpkKhGFY ZH8XHWa4gdegyy4M4PN/r/GjqTXsQFKSusdENkLvHGpzAj6pCWjKmMCja6UGny4pqPyW xf1fU7E4buBJW6KfPKUt8uo+t1ioku/x2m9DEbsbtG7D7q67JzumCqmh5jbKEfZkmz9R H6Te5UYCiXswfp57RWu6SYiH8PQP/KV1J9UiuwUItTkMQOAtX1Tp0trD47XZaMx8jJ3N IKh6s4YDvAG6OIAznbqILzTrqGEHJ05GhlHXjAPIrDT0onqnV9QQLlgyHZUnZWnn4meJ py9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=+CBjpMxaBjm59mczHXVMWWA0L5fLMMMVVRUA/6Hw4B4=; fh=mbb85L8FZ404unHdLI+iF4ZFmTMGr6nZHIcfO/oKEvw=; b=Uafjs2Ps54fKFSmFdeerk3wWVzCfqbIklm7sZRTRq52c8Y3l/rpctyT16LW5QmdMHS GjUsyRYC8sdqyjbcCbVidTzWGZSqTBUdyhL9UTUx9JdzusZg143gv7w4T4nhLl/cpFPD tvA1kzdR2TJtVQphhY3c1r8iW3DLTJ1p0YQ1xW637SG7PWN2mEmqD43peGCP+cKHXYnB eNzRSGQKaZd59L7RkDyK2U51ft+R2Jt87Yo1UgMH0MDu+rQDfBT55IE8TCe3+FWM/dqU +zXeonxw39b6naQw3l7f0D6a79vDSkcgghH4MfWpq34JQcgMAD1x/LaiuvOfr/Fwz1Gz ALyg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="c0EnVT/n"; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n8-20020a2e86c8000000b002d46a6a311fsi6718856ljj.385.2024.04.28.00.34.28; Sun, 28 Apr 2024 00:34:28 -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=@gmail.com header.s=20230601 header.b="c0EnVT/n"; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EDF9768D390; Sun, 28 Apr 2024 10:27:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A09068D2D0 for ; Sun, 28 Apr 2024 10:27:50 +0300 (EEST) Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-51d62b0ecb7so524501e87.3 for ; Sun, 28 Apr 2024 00:27:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714289269; x=1714894069; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=34CZNZmlS8ofgqMhKlH+UuwQaJ5sRF3AOEffusFQO0o=; b=c0EnVT/nrp64ZBiEaxMZ8FdHTFM/Q6Hdw8Ta/6e+RAvuf6JzDPFtJ2hkyo4G3Um8uN +9Ca8Xa+TOJJ42Fu5xdcNqZMeRTVkO6LgBoI1bK+RwTHFvHR2DoWq+3N95b/3BZs4f8n GKf4m1yo8FSMeFMvvK/g+fOUxGvaEfnrSVcHf72m1AueKGKTAV6xe9PV/AgnVeskEKDO FfIxHHggT/+X/JpDCFVUgSb349ht1I5YzMGL5/RhST4CiucAuBX3BBudGuTc6eqOavTt L+kI5ILTQli9putdtUYYlvsmPdBsWjpNoCYMUsgUPN3owrPpSKokWvN2ihifl16R+XLI VR8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714289269; x=1714894069; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=34CZNZmlS8ofgqMhKlH+UuwQaJ5sRF3AOEffusFQO0o=; b=cG3JH7pPCv0uP04pik1QICifFsPf+7stzTEfl5+209307FOZiVnTiknOZKhf+DAoUN OcmHu6L6jZPYwJB2o0KJfw9dW12mgVhFe2HmJbMwICUwAftX/Ydm3S9WX8kMupM6Kjrp BVI3jdQ5g3f8SZB/8hEvRqQu8INOEomQhPIGLO3suQDQyx+PmrzwnSADijJkfslEoogs rv0g19vZCgQWBXAJoIjnoxIZdWAGJajk6j+mXaRWnMrZSCsWnCvsGhOy+sgnWaH4+EcP nIFsAUC3oZunIAEa8niPVuxcY/V4AEPBCJ/Y3O8rp7mZDx+UjAFdRFt3iougGLJ31eVC iK/w== X-Gm-Message-State: AOJu0YxWex+8toXDPgIPi+hfSC9yxfiE3Bzs6kNAXDkxt3+GKfPXWl7u 2ib4P7YndOEmcstzGeWZ+JhEeVqkN3JNDDHxKxcIt9Xv6Yvvkv8xMME0ng== X-Received: by 2002:a05:6512:3d20:b0:51d:b9a:f4b0 with SMTP id d32-20020a0565123d2000b0051d0b9af4b0mr3946058lfv.43.1714289268950; Sun, 28 Apr 2024 00:27:48 -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.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Apr 2024 00:27:48 -0700 (PDT) From: David Rosca To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Apr 2024 09:26:40 +0200 Message-ID: <20240428072650.168514-1-nowrep@gmail.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] lavc/vaapi_decode: Make it possible to send multiple slice params buffers 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: xWVMVbJ2ZKvD --- libavcodec/vaapi_av1.c | 2 +- libavcodec/vaapi_decode.c | 3 ++- libavcodec/vaapi_decode.h | 1 + libavcodec/vaapi_h264.c | 2 +- libavcodec/vaapi_hevc.c | 4 ++-- libavcodec/vaapi_mjpeg.c | 2 +- libavcodec/vaapi_mpeg2.c | 2 +- libavcodec/vaapi_mpeg4.c | 2 +- libavcodec/vaapi_vc1.c | 2 +- libavcodec/vaapi_vp8.c | 2 +- libavcodec/vaapi_vp9.c | 2 +- 11 files changed, 13 insertions(+), 11 deletions(-) diff --git a/libavcodec/vaapi_av1.c b/libavcodec/vaapi_av1.c index 1f563483b9..4a90db1e09 100644 --- a/libavcodec/vaapi_av1.c +++ b/libavcodec/vaapi_av1.c @@ -409,7 +409,7 @@ static int vaapi_av1_decode_slice(AVCodecContext *avctx, .tg_end = s->tg_end, }; - err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &slice_param, + err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &slice_param, 1, sizeof(VASliceParameterBufferAV1), buffer, size); diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c index 21b273cd0f..8e9f647c20 100644 --- a/libavcodec/vaapi_decode.c +++ b/libavcodec/vaapi_decode.c @@ -63,6 +63,7 @@ int ff_vaapi_decode_make_param_buffer(AVCodecContext *avctx, int ff_vaapi_decode_make_slice_buffer(AVCodecContext *avctx, VAAPIDecodePicture *pic, const void *params_data, + int nb_params, size_t params_size, const void *slice_data, size_t slice_size) @@ -88,7 +89,7 @@ int ff_vaapi_decode_make_slice_buffer(AVCodecContext *avctx, vas = vaCreateBuffer(ctx->hwctx->display, ctx->va_context, VASliceParameterBufferType, - params_size, 1, (void*)params_data, + params_size, nb_params, (void*)params_data, &pic->slice_buffers[index]); if (vas != VA_STATUS_SUCCESS) { av_log(avctx, AV_LOG_ERROR, "Failed to create slice " diff --git a/libavcodec/vaapi_decode.h b/libavcodec/vaapi_decode.h index 6beda14e52..702171e108 100644 --- a/libavcodec/vaapi_decode.h +++ b/libavcodec/vaapi_decode.h @@ -73,6 +73,7 @@ int ff_vaapi_decode_make_param_buffer(AVCodecContext *avctx, int ff_vaapi_decode_make_slice_buffer(AVCodecContext *avctx, VAAPIDecodePicture *pic, const void *params_data, + int nb_params, size_t params_size, const void *slice_data, size_t slice_size); diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c index 55cf5a05ee..b47531ce1c 100644 --- a/libavcodec/vaapi_h264.c +++ b/libavcodec/vaapi_h264.c @@ -375,7 +375,7 @@ static int vaapi_h264_decode_slice(AVCodecContext *avctx, slice_param.chroma_offset_l1); err = ff_vaapi_decode_make_slice_buffer(avctx, pic, - &slice_param, sizeof(slice_param), + &slice_param, 1, sizeof(slice_param), buffer, size); if (err) { ff_vaapi_decode_cancel(avctx, pic); diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index 3bdd2dd1b8..3937b7574a 100644 --- a/libavcodec/vaapi_hevc.c +++ b/libavcodec/vaapi_hevc.c @@ -353,7 +353,7 @@ static int vaapi_hevc_end_frame(AVCodecContext *avctx) if (pic->last_size) { last_slice_param->LongSliceFlags.fields.LastSliceOfPic = 1; ret = ff_vaapi_decode_make_slice_buffer(avctx, &pic->pic, - &pic->last_slice_param, slice_param_size, + &pic->last_slice_param, 1, slice_param_size, pic->last_buffer, pic->last_size); if (ret < 0) goto fail; @@ -471,7 +471,7 @@ static int vaapi_hevc_decode_slice(AVCodecContext *avctx, if (!sh->first_slice_in_pic_flag) { err = ff_vaapi_decode_make_slice_buffer(avctx, &pic->pic, - &pic->last_slice_param, slice_param_size, + &pic->last_slice_param, 1, slice_param_size, pic->last_buffer, pic->last_size); pic->last_buffer = NULL; pic->last_size = 0; diff --git a/libavcodec/vaapi_mjpeg.c b/libavcodec/vaapi_mjpeg.c index 5b8d47bb2a..9557cf5f9b 100644 --- a/libavcodec/vaapi_mjpeg.c +++ b/libavcodec/vaapi_mjpeg.c @@ -131,7 +131,7 @@ static int vaapi_mjpeg_decode_slice(AVCodecContext *avctx, sp.components[i].ac_table_selector = s->ac_index[i]; } - err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, sizeof(sp), buffer, size); + err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, 1, sizeof(sp), buffer, size); if (err) goto fail; diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c index eeb4e87321..171a742c7f 100644 --- a/libavcodec/vaapi_mpeg2.c +++ b/libavcodec/vaapi_mpeg2.c @@ -162,7 +162,7 @@ static int vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer }; err = ff_vaapi_decode_make_slice_buffer(avctx, pic, - &slice_param, sizeof(slice_param), + &slice_param, 1, sizeof(slice_param), buffer, size); if (err < 0) { ff_vaapi_decode_cancel(avctx, pic); diff --git a/libavcodec/vaapi_mpeg4.c b/libavcodec/vaapi_mpeg4.c index 363b686e42..612de10cd7 100644 --- a/libavcodec/vaapi_mpeg4.c +++ b/libavcodec/vaapi_mpeg4.c @@ -169,7 +169,7 @@ static int vaapi_mpeg4_decode_slice(AVCodecContext *avctx, const uint8_t *buffer }; err = ff_vaapi_decode_make_slice_buffer(avctx, pic, - &slice_param, sizeof(slice_param), + &slice_param, 1, sizeof(slice_param), buffer, size); if (err < 0) { ff_vaapi_decode_cancel(avctx, pic); diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c index 5594118a69..abbe877dd8 100644 --- a/libavcodec/vaapi_vc1.c +++ b/libavcodec/vaapi_vc1.c @@ -490,7 +490,7 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, }; err = ff_vaapi_decode_make_slice_buffer(avctx, pic, - &slice_param, sizeof(slice_param), + &slice_param, 1, sizeof(slice_param), buffer, size); if (err < 0) { ff_vaapi_decode_cancel(avctx, pic); diff --git a/libavcodec/vaapi_vp8.c b/libavcodec/vaapi_vp8.c index 31137a45bd..66fdde1f39 100644 --- a/libavcodec/vaapi_vp8.c +++ b/libavcodec/vaapi_vp8.c @@ -209,7 +209,7 @@ static int vaapi_vp8_decode_slice(AVCodecContext *avctx, for (i = 0; i < 8; i++) sp.partition_size[i+1] = s->coeff_partition_size[i]; - err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, sizeof(sp), data, data_size); + err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, 1, sizeof(sp), data, data_size); if (err) goto fail; diff --git a/libavcodec/vaapi_vp9.c b/libavcodec/vaapi_vp9.c index b8e760c807..a28fc75a59 100644 --- a/libavcodec/vaapi_vp9.c +++ b/libavcodec/vaapi_vp9.c @@ -158,7 +158,7 @@ static int vaapi_vp9_decode_slice(AVCodecContext *avctx, } err = ff_vaapi_decode_make_slice_buffer(avctx, pic, - &slice_param, sizeof(slice_param), + &slice_param, 1, sizeof(slice_param), buffer, size); if (err) { ff_vaapi_decode_cancel(avctx, pic); From patchwork Sun Apr 28 07:26:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Rosca X-Patchwork-Id: 48328 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1509:b0:1a9:af23:56c1 with SMTP id nq9csp1334882pzb; Sun, 28 Apr 2024 00:28:10 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX/jSIQV+QdcXml3DgzhGCRByxbmbMTSJuPHpX2w1bV6yX7a20OmLflLh78UN6aXl2vzZEHXwf7wplN0PLEW/6HgDwq6dHSXFIsyw== X-Google-Smtp-Source: AGHT+IHmL55ALuyoXHo/DIp9COwut1BRvydQ4MacHmzttCWkpBpD+r15Nq7HKVJkZeac/1cUd+hx X-Received: by 2002:a17:906:2a96:b0:a55:b2e9:413a with SMTP id l22-20020a1709062a9600b00a55b2e9413amr3627536eje.7.1714289290101; Sun, 28 Apr 2024 00:28:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1714289290; cv=none; d=google.com; s=arc-20160816; b=p4ozy4O515JtfSvpqAVflFkZhO18IfFqAzZ2XVJQ4fg8Rw6DkijFYHcYwjgJrRxsKJ D3ICSfJ2XKiB9hkjNvaQgwmVG0TbiQprkupZXT8yyFlG0E6KgYSqFAODQcpGEm+J9rgv zDi923hIVl49FqeDTF+m+LzlrrO4DNKG8EFO0kGO8G82wE41NYYWSGXJzJztAK2D1wdZ PHxvaCquauB7mX4Tyhy9xSnJSjDp+nLutORPm7/e0gv7mjWoVoDoVAd3wbFurCJ2pvjK JRkmefFXxVy/m+6RuR42tp/miJx97zaZFtDRn9eBOXDrNXNSdi2WxWzXnpoTW3XhlsKz ohwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=5SIRjCntrhHfdsT1axuw9vlzMWpqRG3bq5+BOdJZUzA=; fh=mbb85L8FZ404unHdLI+iF4ZFmTMGr6nZHIcfO/oKEvw=; b=sb4ns+9PuYW4OvQEIY8Gab/ivcRWRbOtv25hSOYFGGlXjBu4yVPELj+ReB8Qo72Zon fPQPyvjvWOtCTK9twxIdTOdO/EoLiJhlj0cNYSviWU8hIq/vL22yylNbjxwkVyNSAx9P YKk6dL+dJGtftmv9lvti7tEmke1B7n/hqFjg5+ZzuZeiDSmm/OV2E5/baxdaKuuTBWxY cT6neqp+JeHwJIGQMtqKVCb8/AUaK/jNhAOJmEt5pyTyp2RjCONS0BBaNnXLcIa4koQa oANaWcGC3jnlfQI9kZFFrNn0hcgaJSwn8ylu1UwZ+BleFeElUQE+4FXoRRa3M72AnbMq IlIA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=Yp9NyCto; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a17-20020a1709066d5100b00a58ed275918si1132976ejt.787.2024.04.28.00.28.09; Sun, 28 Apr 2024 00:28:10 -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=@gmail.com header.s=20230601 header.b=Yp9NyCto; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6266C68D3DC; Sun, 28 Apr 2024 10:28:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org 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-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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TOr6B9jeZbpU 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 = {