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 ESMTPS id E10DD4BACD for ; Fri, 31 Jan 2025 20:59:22 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D923868C0D2; Fri, 31 Jan 2025 22:59:18 +0200 (EET) Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2D2B168BFBA for ; Fri, 31 Jan 2025 22:59:12 +0200 (EET) Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-2166022c5caso38934295ad.2 for ; Fri, 31 Jan 2025 12:59:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738357149; x=1738961949; 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=wp7bj+eUGkSO3n+3aEtXy5idHx+N4nCjm2g6j4ggmws=; b=MZaSY8BJUinPIuWZuduomHPXNO8CVmBo9vGauWmkosL1as1eXUBrW/Ts3G67a/HSgi AlaUE/FbuuXSnjJiCg405vXqfTvNPjy2fDdJNKtFLphKsgCj7pq+rjayg/MSPzpSzxHY LTNydKebhjc6WpUoBWJ4kk/h7Z3JUA3fGq9DdVoXrWf3kn6wWo7QZeD2naPCDr0kDGqQ JOQUAhgF4gV9ddfPrW/cN+ter//JenNI7ZcQxThn0dsLXf8zN5otrwDd0S7XEo4nE4k0 rCzSI4rCuBaFImptYPLnUqwvxT5WnWCNrVQQOB5EvJGRekPJrfrRhFDPc2sQo5e5Fp78 h2eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738357149; x=1738961949; 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=wp7bj+eUGkSO3n+3aEtXy5idHx+N4nCjm2g6j4ggmws=; b=fk922JsWiLfRWIQFsNzw4Md6ONFOkVXDWkh/wBbkyT1XGXcQW7DQXRZZ+BUnzPakCj uIox/3OKNO9d/Axwv/BlDCNMM4yS0aVqzEaqGyyLn3fwXcxf0miNECG/8BEmH1tdNuBY Ip+YCnB0+WhwSr2bOE54A23miq3FQzUq7FqGCPM87j4CUI60m3Nl4R0Sx6rCAo5CGFuw hNOpGyaE8NBZCMWosuP4f/zTpcEfoxHjAnTk7WhZGPnkDDJc3LLol3G+Q+oaVpy/OiBV nlCfjWr8fqKRbrchEEu/0S0BjjLdlecYR9DiPoWL1c8UYq6rSs8PgTfSasOz3YOyyFix he8g== X-Gm-Message-State: AOJu0YwSJpBPhzCMU9m4dufryXD5+GYnxGk+oeNEBtgmfUuXse1Sc8p3 Jq77+q21fZk3Ttzkxy6rbekhbfCCxeZ6lgf9kg7WrThkq9VVl8KxbuxT0M9j X-Gm-Gg: ASbGncu/D4095YV/GskjiapI8LM4QDIoK6heuMc3g49qnN6uYDy+sgHhFlNcL+fBWME 1bhr/xnAYJxyL2n4Sp3H9zks5EGb3jKjhaIbAb6XuKuDnLCGA8TlesBq7XNe86GrUqHnrFY5Dxv cXoGsjk5fOaCKxMsoXSLZ8q+HJ0ICx7fnizPUaVPFlHGGPNPkbq7/Tz60Ng9V/Ksipl46QDlQRT gPHTzd5RxZO4e8ooO/VBGtx0PskAfqhyyWXzPArK54Pj3Q95CKXTvPzq2zXxZqaoyMjuXqYJA0T lSecNU+xEPLxSnOMpZKpuCE9FHFL7xC5 X-Google-Smtp-Source: AGHT+IHhI0hLOic+Qz5WGe75MQ8roXhG6KYFOKo4Pjv4pARrDKyRMIi8jTHEtnSEsyzNAsK6x6zxng== X-Received: by 2002:a05:6a20:9186:b0:1dc:e8d:c8f0 with SMTP id adf61e73a8af0-1ed7a6b825amr22113517637.29.1738357148851; Fri, 31 Jan 2025 12:59:08 -0800 (PST) Received: from localhost.localdomain ([2800:2121:b040:c:aca0:6b6b:5a40:f8fa]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-72fe631bf9asm3735813b3a.27.2025.01.31.12.59.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jan 2025 12:59:08 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 31 Jan 2025 17:58:55 -0300 Message-ID: <20250131205855.23609-1-jamrial@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250131140020.10887-6-jamrial@gmail.com> References: <20250131140020.10887-6-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 6/6] avcodec/hevc/hevcdec: export 3D Reference Displays 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 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: Signed-off-by: James Almer --- libavcodec/hevc/hevcdec.c | 57 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) Now actually filling the correct side data array. diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c index 7d3e844945..db97d9b0a2 100644 --- a/libavcodec/hevc/hevcdec.c +++ b/libavcodec/hevc/hevcdec.c @@ -36,6 +36,7 @@ #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/stereo3d.h" +#include "libavutil/tdrdi.h" #include "libavutil/timecode.h" #include "aom_film_grain.h" @@ -4015,6 +4016,60 @@ static int hevc_update_thread_context(AVCodecContext *dst, } #endif +static int hevc_sei_to_context(AVCodecContext *avctx, HEVCSEI *sei) +{ + int ret; + + if (sei->tdrdi.num_ref_displays) { + AVBufferRef *buf; + size_t size; + AV3DReferenceDisplaysInfo *tdrdi = av_tdrdi_alloc(&size); + + if (!tdrdi) + return AVERROR(ENOMEM); + + buf = av_buffer_create((uint8_t *)tdrdi, size, NULL, NULL, 0); + if (!buf) { + av_free(tdrdi); + return AVERROR(ENOMEM); + } + + tdrdi->prec_ref_display_width = sei->tdrdi.prec_ref_display_width; + tdrdi->ref_viewing_distance_flag = sei->tdrdi.ref_viewing_distance_flag; + tdrdi->prec_ref_viewing_dist = sei->tdrdi.prec_ref_viewing_dist; + tdrdi->num_ref_displays = sei->tdrdi.num_ref_displays; + memcpy(tdrdi->left_view_id, + sei->tdrdi.left_view_id, sizeof(tdrdi->left_view_id)); + memcpy(tdrdi->right_view_id, + sei->tdrdi.right_view_id, sizeof(tdrdi->right_view_id)); + memcpy(tdrdi->exponent_ref_display_width, + sei->tdrdi.exponent_ref_display_width, sizeof(tdrdi->exponent_ref_display_width)); + memcpy(tdrdi->mantissa_ref_display_width, + sei->tdrdi.mantissa_ref_display_width, sizeof(tdrdi->mantissa_ref_display_width)); + memcpy(tdrdi->exponent_ref_viewing_distance, + sei->tdrdi.exponent_ref_viewing_distance, sizeof(tdrdi->exponent_ref_viewing_distance)); + memcpy(tdrdi->mantissa_ref_viewing_distance, + sei->tdrdi.mantissa_ref_viewing_distance, sizeof(tdrdi->mantissa_ref_viewing_distance)); + memcpy(tdrdi->additional_shift_present_flag, + sei->tdrdi.additional_shift_present_flag, sizeof(tdrdi->additional_shift_present_flag)); + memcpy(tdrdi->num_sample_shift, + sei->tdrdi.num_sample_shift, sizeof(tdrdi->num_sample_shift)); + + ret = ff_frame_new_side_data_from_buf_ext(avctx, &avctx->decoded_side_data, &avctx->nb_decoded_side_data, + AV_FRAME_DATA_3D_REFERENCE_DISPLAYS, &buf); + if (ret < 0) { + av_buffer_unref(&buf); + return ret; + } + } + + ret = ff_h2645_sei_to_context(avctx, &sei->common); + if (ret < 0) + return ret; + + return 0; +} + static av_cold int hevc_decode_init(AVCodecContext *avctx) { HEVCContext *s = avctx->priv_data; @@ -4038,7 +4093,7 @@ static av_cold int hevc_decode_init(AVCodecContext *avctx) return ret; } - ret = ff_h2645_sei_to_context(avctx, &s->sei.common); + ret = hevc_sei_to_context(avctx, &s->sei); if (ret < 0) return ret; } -- 2.48.1 _______________________________________________ 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".