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);