From patchwork Sat Aug 31 16:31:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 51261 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:612c:4027:b0:48e:c0f8:d0de with SMTP id ky39csp1031681vqb; Sat, 31 Aug 2024 10:10:14 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXUrkAdJ8EoPSQ4hyT9VVM4tQljULC8bCYrepLLmqG2aXbv4Zhc2vWW0Pq3+JYOa7tHIx7mPPrR8L2xOVzCIDmR@gmail.com X-Google-Smtp-Source: AGHT+IHeqfk9dsS18CED1l/BzXtjUZmVgc79JJU5HYv53slGUaeEVk65mp0DCKg8XIz1Eds23dIo X-Received: by 2002:a05:6512:124f:b0:530:e228:779c with SMTP id 2adb3069b0e04-53546b04212mr4108684e87.19.1725124213823; Sat, 31 Aug 2024 10:10:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1725124213; cv=none; d=google.com; s=arc-20240605; b=E/B0MQM9Ftwg8D8++3rSxZWcX0Z35N2gIpqYmTOVQapqAWNI2dxOuOOGnDEANHDXgY kF7070RMjlG6Voy+Ep1di2PGQ02fUEzIa3eqlsLN57PwvJ4ZHRm9v7n1sl2IYKmfx9bS j/crmeO506fAaumkOdsbpS0jhT2UVucB4LS6hFzLcY2mWwoelwcPVrRIluZ+85b+7Bye fHsvLQFIbAVphBHeMOLP4GddNHsGVwOdjIJY5dZCUXUOZvL/fgQ8fKBVbSpP/0Jo33Az Y2lPAm127BhIIdCk94lLBounRbSTRl4C6VnmTNDxp4L9+K/4HXD/o82a/xLKIbHjXOFz 6Q1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding: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=vXZ2sxgfwXzJ0Rtq+312+y1tC+Gd5mdvNlGdkiIoVQ0=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=JtW6nOzpigLWqR4uQmKr5a+tb2SjH5yQ7/GJuovPuSVvz55pFS0Ql7DjHOQzLmQWHT yvGze4y3ZGQtI3lEe+0kT8hjksVUyDI6dBeuDNPKxpaIQfPLq2iXAkbSEwY5BWUFbACq 5MKcNwF0uHW5nN02C/dpmwNqKHudoGHLOHdsbBJsUi5POLKSdn/pahrXq0lAt7yKYXOK vPUidF9QK6z0MxDdUZ/tToNJvydGE8yTyREL7YVk/iirJCSN9O+wMZkk/5j2jJ2t9x1z WY/IqyGSj7JQGTQ2mDQ/RFOkHNqUdrQKK6Vw55VmHjYmbcctVmMerS+K7wzlCInuozo+ X3sQ==; 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=BlJD4fiv; 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; dara=fail header.i=@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 2adb3069b0e04-5354082a07esi2166173e87.474.2024.08.31.10.10.13; Sat, 31 Aug 2024 10:10:13 -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=BlJD4fiv; 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; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A3D3D68DDA0; Sat, 31 Aug 2024 19:31:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E0DE068DDE1 for ; Sat, 31 Aug 2024 19:30:57 +0300 (EEST) Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-2d88c0f8e79so745013a91.3 for ; Sat, 31 Aug 2024 09:30:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725121855; x=1725726655; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=4SPt3Z6cMaFR4mIx50eMascMoC0APJmemF/ohxWFdXE=; b=BlJD4fiv6j/Zccb3CLyX8LvheJsVVhjxEEAisQC7r9vBX8UXc3rITHCzHC57V96hvT IDflV4dUASi3wB+Jh//Xg0dJgVFqh8Hranllj+0v3okxoHo4Pqv5prSI8lYJwdLE+fjh XSS14ESnXShyLzEUs9fCLfTRt/fEkMMhFes7mY58xSbDLcWNpMqJglufcFx8ZXqkmZE9 xxUuJblMoMZdvxiafn8itwfcqlY+tn4E8WGUGjQ3h6XvO6xpT/cyPE7md8yy9hfz1E+M dIUWF+Agp0oAThKxP8DzrBO4LgVMMroxMpaNNCaRs8Yb62YuneE8dpGeq3zoe5qBdOJu QU0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725121855; x=1725726655; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4SPt3Z6cMaFR4mIx50eMascMoC0APJmemF/ohxWFdXE=; b=CxYrBK2Nh91VIl2qEDqn6FaPakmyvM6F9IxC+NmsWBJNoZ90aqBS/TAhmVRh00p4ss 5388BkQu98fpVonkPiX85zRbjV/hK398HTIC33akM2RujHARFOkFg9zhrm8+KbR9GMB+ mXxsbgjmh6ha+RkqKhLJFhahomWDkpnVJwuAMIzV1Z2XFh9R7LLuLVsySnkUNiBWDI89 z3Y4JsDHKfWD5zKzM5qYBRgbGqjXpgQPvgppSOW4InNDQMqwiUGSPFFUcBx4vTJuMGTE AkCdMZVOeqWSp/UmwTDBFvgTI8hEXl4EhokERhpMXFXw0nLwPtsbbPx9J7/UidNkMv+w EEBQ== X-Gm-Message-State: AOJu0YyvdKKFprud1NhS5pglckea2+5IS4Dkkj8SfqG2DNsqhbE1Wcev uQn1koZLWGoLMKbAZNkg10k9in3zqRO5RZ7UzqJiXp6hQuJdESCfp6G5Mw== X-Received: by 2002:a17:90a:c684:b0:2d8:8cef:3d64 with SMTP id 98e67ed59e1d1-2d88cef3f05mr3631688a91.6.1725121855182; Sat, 31 Aug 2024 09:30:55 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2d85b3b9522sm5935328a91.50.2024.08.31.09.30.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 31 Aug 2024 09:30:54 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 31 Aug 2024 13:31:08 -0300 Message-ID: <20240831163114.4197-7-jamrial@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20240831163114.4197-1-jamrial@gmail.com> References: <20240831163114.4197-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/13] avcodec/hevcdec: export LCEVC metadata as frame side data 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: PGwqvZx4FjTX Signed-off-by: James Almer --- configure | 1 + libavcodec/hevc/hevcdec.c | 3 +++ libavcodec/hevc/refs.c | 15 ++++++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 84f63bbb87..3b7cf05bb5 100755 --- a/configure +++ b/configure @@ -2975,6 +2975,7 @@ hap_decoder_select="snappy texturedsp" hap_encoder_deps="libsnappy" hap_encoder_select="texturedspenc" hevc_decoder_select="bswapdsp cabac dovi_rpudec golomb hevcparse hevc_sei videodsp" +hevc_decoder_suggest="liblcevc_dec" huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp" huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp" hymt_decoder_select="huffyuv_decoder" diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c index 4077ed3ac5..41bb7fdfe1 100644 --- a/libavcodec/hevc/hevcdec.c +++ b/libavcodec/hevc/hevcdec.c @@ -3459,6 +3459,9 @@ do_output: if (ff_container_fifo_read(s->output_fifo, frame) >= 0) { if (!(avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN)) av_frame_remove_side_data(frame, AV_FRAME_DATA_FILM_GRAIN_PARAMS); + if (!CONFIG_LIBLCEVC_DEC && + !(avctx->export_side_data & AV_CODEC_EXPORT_DATA_ENHANCEMENTS)) + av_frame_remove_side_data(frame, AV_FRAME_DATA_LCEVC); return 0; } diff --git a/libavcodec/hevc/refs.c b/libavcodec/hevc/refs.c index 65abd09a21..88c5c5ea52 100644 --- a/libavcodec/hevc/refs.c +++ b/libavcodec/hevc/refs.c @@ -83,10 +83,23 @@ static HEVCFrame *alloc_frame(HEVCContext *s) if (frame->f) continue; + ret = ff_progress_frame_alloc(s->avctx, &frame->tf); + if (ret < 0) + return NULL; + + if (CONFIG_LIBLCEVC_DEC && s->sei.common.lcevc.info && !s->avctx->hwaccel && + !(s->avctx->export_side_data & AV_CODEC_EXPORT_DATA_ENHANCEMENTS)) { + HEVCSEILCEVC *lcevc = &s->sei.common.lcevc; + ret = ff_frame_new_side_data_from_buf(s->avctx, frame->tf.f, + AV_FRAME_DATA_LCEVC, &lcevc->info); + if (ret < 0) + goto fail; + } + ret = ff_progress_frame_get_buffer(s->avctx, &frame->tf, AV_GET_BUFFER_FLAG_REF); if (ret < 0) - return NULL; + goto fail; frame->rpl = ff_refstruct_allocz(s->pkt.nb_nals * sizeof(*frame->rpl)); if (!frame->rpl)