From patchwork Mon Mar 20 23:33:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40735 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2165830pzb; Mon, 20 Mar 2023 16:34:42 -0700 (PDT) X-Google-Smtp-Source: AK7set89kUIVzq4NR+wWV32zMPfEdLTwYsbtAvRNc4+96zpF4mdo3KXJct253o3aPKfbLYXIfffm X-Received: by 2002:aa7:c313:0:b0:501:d6c2:7439 with SMTP id l19-20020aa7c313000000b00501d6c27439mr1183030edq.37.1679355282589; Mon, 20 Mar 2023 16:34:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355282; cv=none; d=google.com; s=arc-20160816; b=t4n1mJiMHYwtlc/b9oQXV661vNyLq1Gv37wp082VOqRMAeRMDpjsSRZEwE2rTcJugt TITd6HV8DTsawoy5SCW8mNoHLO7oz/l3a5VqNCgWcT6Am0thy8LA0k7udfq1nckreoCG dIaAocXxM561rSLMoCi2l2lLFLpHaqosCYZbCzNu/Yk/ZprFaTEnLiGrbFw5B9yGK/tj wYIhpDubeIP4QRSHSiAL5YECfGJyWMnvTXE/wfW99GNUmxugomzfI5tlP+bbQb7sXVUS FMwhjqFFAo3F9/UO1EB64kLQpkRlMBf05N3zz8BezLZnqKKvyRHxJSbaTtbzEDOHCUgH JSOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=hVq8lxJODH8dga7OF2O7urDuJImxYn7ZJ3IzhWC4B10=; b=er7MJ4lx20tkxFwI39MT0rZV9k7aBXG51Vd6DDqx+x9eftE81WjIf3z2GPOby4DEfZ XyY1JKKwoVxNBAWz3S2Vh9zHMQ4IL6Ro3/BZgFmAvpLVwKk94O+ftsAKL6QfPhbMfdVe saY7GWw3T1lBgUc0chXpZuaylwWltl1tiYVyG/cfiVG+peeUlBw2gfW8q+Z+1tjcdkcK 8ERErm5RdwNjddK5Zq2Z6B0xTi7wag7kwv8zK1py/8U9UIsVkMS+ksm2wn/oC38esrOP kFxmchH1nTOLqDmIz5UDtX4f49/h8+OzsqxukP9xXT5n86s7iuQrBXiA+Fle18HDsX/y kSqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=MkLL4gE+; 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 u3-20020aa7d983000000b004fc69ce4d82si11359174eds.120.2023.03.20.16.34.36; Mon, 20 Mar 2023 16:34:42 -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=20210112 header.b=MkLL4gE+; 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 A8CAF68C5A8; Tue, 21 Mar 2023 01:34:23 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E88F468C4B6 for ; Tue, 21 Mar 2023 01:34:15 +0200 (EET) Received: by mail-lf1-f49.google.com with SMTP id t11so17024099lfr.1 for ; Mon, 20 Mar 2023 16:34:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355255; 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=XRySFUJkuGGbogroZRrn+JynADq9tBKlygqCCsOphew=; b=MkLL4gE+u19ZspQBZi0Y7Je8pZMytC/P5ZSqceJV2or4gtwbry7VLnCJQCpOc3l3Xs NZDLMgv8o2haKxTX0DKcfmogm8k5+E9sTUhMo51V6gkS0i29RryQq9jff9G0a1758aEk hEH1xwrTsjGjEZc+VZT7FNZUapQlgIKq8KfhLoqY3kResUdtTkecN09Gavwq7LWMqrow VnB2QcVCH+h27NATX0Qw/+ojJEuNh90UoAMxYDrGbTNFnKlfoqQijV2AZK0SyTl9v1h/ +YZrMxzzvBuXPcpkdZqApQkFlBD8dMoHv8y1+n2deXnAqJLsVlSWlLL9hkwU5wYdZ6bn KhwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355255; 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=XRySFUJkuGGbogroZRrn+JynADq9tBKlygqCCsOphew=; b=llxpST/pD68RfWDXT0nIFC7KmhIHU9khtY5/2K3BFobtqp5iOnA18n5WwMexs0g1/5 4LLRJ6gEZ3EnxjH4q5tjKL6Yk/zkv0n0cyyZVNEySzACuiVB+4ZMfxEq2mkg+voVRsW4 Ld4fezV8VvOERq+FtzXQSbaZ4VS4OlbsL0PvT4CrXJ9klj/2ea67Vmy4USOic7DsCNdD mE+cw+FUT4S98JpGuui7O6nEdMHinjW2F/0TlMhKLJKQAfr9p3DOiPJ12J+/xs+fa8LD eunjfgfOXvtBEH+Tb/2yeM6PiC4UFtfWBEddcZ04HrAIwlbr5Li+eOQJhmhJkReUc5Bz 5PaQ== X-Gm-Message-State: AO0yUKVGEzlUr2KATrduosOCmtJuab8VcVrkg6gYaEYgKEqFFFz9Fq/S y2hPKIoW4I/BZjK+E9xG0xrk7inWJRo= X-Received: by 2002:ac2:48b0:0:b0:4e9:5f1c:fda4 with SMTP id u16-20020ac248b0000000b004e95f1cfda4mr216970lfg.30.1679355255235; Mon, 20 Mar 2023 16:34:15 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:14 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:33:55 +0200 Message-Id: <20230320233408.134255-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 01/14] avutil/frame: move counters utilized in loops to their scope 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: 3Ab10mq5tsNV This way we can clean up separate definitions in functions with just a single loop, as well as have no reuse between different loops' counters in functions with multiple. --- libavutil/frame.c | 76 ++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 44 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index 5c9afb0d03..c905e8d611 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -78,9 +78,7 @@ static void free_side_data(AVFrameSideData **ptr_sd) static void wipe_side_data(AVFrame *frame) { - int i; - - for (i = 0; i < frame->nb_side_data; i++) { + for (int i = 0; i < frame->nb_side_data; i++) { free_side_data(&frame->side_data[i]); } frame->nb_side_data = 0; @@ -112,7 +110,7 @@ void av_frame_free(AVFrame **frame) static int get_video_buffer(AVFrame *frame, int align) { const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); - int ret, i, padded_height, total_size; + int ret, padded_height, total_size; int plane_padding = FFMAX(16 + 16/*STRIDE_ALIGN*/, align); ptrdiff_t linesizes[4]; size_t sizes[4]; @@ -127,7 +125,7 @@ static int get_video_buffer(AVFrame *frame, int align) if (align <= 0) align = 32; /* STRIDE_ALIGN. Should be av_cpu_max_align() */ - for(i=1; i<=align; i+=i) { + for (int i = 1; i <= align; i += i) { ret = av_image_fill_linesizes(frame->linesize, frame->format, FFALIGN(frame->width, i)); if (ret < 0) @@ -136,11 +134,11 @@ static int get_video_buffer(AVFrame *frame, int align) break; } - for (i = 0; i < 4 && frame->linesize[i]; i++) + for (int i = 0; i < 4 && frame->linesize[i]; i++) frame->linesize[i] = FFALIGN(frame->linesize[i], align); } - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) linesizes[i] = frame->linesize[i]; padded_height = FFALIGN(frame->height, 32); @@ -149,7 +147,7 @@ static int get_video_buffer(AVFrame *frame, int align) return ret; total_size = 4*plane_padding; - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { if (sizes[i] > INT_MAX - total_size) return AVERROR(EINVAL); total_size += sizes[i]; @@ -165,7 +163,7 @@ static int get_video_buffer(AVFrame *frame, int align) frame->buf[0]->data, frame->linesize)) < 0) goto fail; - for (i = 1; i < 4; i++) { + for (int i = 1; i < 4; i++) { if (frame->data[i]) frame->data[i] += i * plane_padding; } @@ -182,7 +180,7 @@ static int get_audio_buffer(AVFrame *frame, int align) { int planar = av_sample_fmt_is_planar(frame->format); int channels, planes; - int ret, i; + int ret; #if FF_API_OLD_CHANNEL_LAYOUT FF_DISABLE_DEPRECATION_WARNINGS @@ -223,7 +221,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } else frame->extended_data = frame->data; - for (i = 0; i < FFMIN(planes, AV_NUM_DATA_POINTERS); i++) { + for (int i = 0; i < FFMIN(planes, AV_NUM_DATA_POINTERS); i++) { frame->buf[i] = av_buffer_alloc(frame->linesize[0]); if (!frame->buf[i]) { av_frame_unref(frame); @@ -231,7 +229,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } frame->extended_data[i] = frame->data[i] = frame->buf[i]->data; } - for (i = 0; i < planes - AV_NUM_DATA_POINTERS; i++) { + for (int i = 0; i < planes - AV_NUM_DATA_POINTERS; i++) { frame->extended_buf[i] = av_buffer_alloc(frame->linesize[0]); if (!frame->extended_buf[i]) { av_frame_unref(frame); @@ -265,7 +263,7 @@ FF_ENABLE_DEPRECATION_WARNINGS static int frame_copy_props(AVFrame *dst, const AVFrame *src, int force_copy) { - int ret, i; + int ret; dst->key_frame = src->key_frame; dst->pict_type = src->pict_type; @@ -318,7 +316,7 @@ FF_ENABLE_DEPRECATION_WARNINGS av_dict_copy(&dst->metadata, src->metadata, 0); - for (i = 0; i < src->nb_side_data; i++) { + for (int i = 0; i < src->nb_side_data; i++) { const AVFrameSideData *sd_src = src->side_data[i]; AVFrameSideData *sd_dst; if ( sd_src->type == AV_FRAME_DATA_PANSCAN @@ -351,7 +349,7 @@ FF_ENABLE_DEPRECATION_WARNINGS int av_frame_ref(AVFrame *dst, const AVFrame *src) { - int i, ret = 0; + int ret = 0; av_assert1(dst->width == 0 && dst->height == 0); #if FF_API_OLD_CHANNEL_LAYOUT @@ -406,7 +404,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } /* ref the buffers */ - for (i = 0; i < FF_ARRAY_ELEMS(src->buf); i++) { + for (int i = 0; i < FF_ARRAY_ELEMS(src->buf); i++) { if (!src->buf[i]) continue; dst->buf[i] = av_buffer_ref(src->buf[i]); @@ -425,7 +423,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } dst->nb_extended_buf = src->nb_extended_buf; - for (i = 0; i < src->nb_extended_buf; i++) { + for (int i = 0; i < src->nb_extended_buf; i++) { dst->extended_buf[i] = av_buffer_ref(src->extended_buf[i]); if (!dst->extended_buf[i]) { ret = AVERROR(ENOMEM); @@ -485,16 +483,14 @@ AVFrame *av_frame_clone(const AVFrame *src) void av_frame_unref(AVFrame *frame) { - int i; - if (!frame) return; wipe_side_data(frame); - for (i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++) + for (int i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++) av_buffer_unref(&frame->buf[i]); - for (i = 0; i < frame->nb_extended_buf; i++) + for (int i = 0; i < frame->nb_extended_buf; i++) av_buffer_unref(&frame->extended_buf[i]); av_freep(&frame->extended_buf); av_dict_free(&frame->metadata); @@ -531,16 +527,16 @@ FF_ENABLE_DEPRECATION_WARNINGS int av_frame_is_writable(AVFrame *frame) { - int i, ret = 1; + int ret = 1; /* assume non-refcounted frames are not writable */ if (!frame->buf[0]) return 0; - for (i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++) + for (int i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++) if (frame->buf[i]) ret &= !!av_buffer_is_writable(frame->buf[i]); - for (i = 0; i < frame->nb_extended_buf; i++) + for (int i = 0; i < frame->nb_extended_buf; i++) ret &= !!av_buffer_is_writable(frame->extended_buf[i]); return ret; @@ -607,7 +603,7 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src) AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane) { uint8_t *data; - int planes, i; + int planes; if (frame->nb_samples) { int channels = frame->ch_layout.nb_channels; @@ -630,12 +626,12 @@ FF_ENABLE_DEPRECATION_WARNINGS return NULL; data = frame->extended_data[plane]; - for (i = 0; i < FF_ARRAY_ELEMS(frame->buf) && frame->buf[i]; i++) { + for (int i = 0; i < FF_ARRAY_ELEMS(frame->buf) && frame->buf[i]; i++) { AVBufferRef *buf = frame->buf[i]; if (data >= buf->data && data < buf->data + buf->size) return buf; } - for (i = 0; i < frame->nb_extended_buf; i++) { + for (int i = 0; i < frame->nb_extended_buf; i++) { AVBufferRef *buf = frame->extended_buf[i]; if (data >= buf->data && data < buf->data + buf->size) return buf; @@ -690,9 +686,7 @@ AVFrameSideData *av_frame_new_side_data(AVFrame *frame, AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, enum AVFrameSideDataType type) { - int i; - - for (i = 0; i < frame->nb_side_data; i++) { + for (int i = 0; i < frame->nb_side_data; i++) { if (frame->side_data[i]->type == type) return frame->side_data[i]; } @@ -702,7 +696,7 @@ AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, static int frame_copy_video(AVFrame *dst, const AVFrame *src) { const uint8_t *src_data[4]; - int i, planes; + int planes; if (dst->width < src->width || dst->height < src->height) @@ -712,7 +706,7 @@ static int frame_copy_video(AVFrame *dst, const AVFrame *src) return av_hwframe_transfer_data(dst, src, 0); planes = av_pix_fmt_count_planes(dst->format); - for (i = 0; i < planes; i++) + for (int i = 0; i < planes; i++) if (!dst->data[i] || !src->data[i]) return AVERROR(EINVAL); @@ -729,7 +723,6 @@ static int frame_copy_audio(AVFrame *dst, const AVFrame *src) int planar = av_sample_fmt_is_planar(dst->format); int channels = dst->ch_layout.nb_channels; int planes = planar ? channels : 1; - int i; #if FF_API_OLD_CHANNEL_LAYOUT FF_DISABLE_DEPRECATION_WARNINGS @@ -757,7 +750,7 @@ FF_ENABLE_DEPRECATION_WARNINGS #endif return AVERROR(EINVAL); - for (i = 0; i < planes; i++) + for (int i = 0; i < planes; i++) if (!dst->extended_data[i] || !src->extended_data[i]) return AVERROR(EINVAL); @@ -789,9 +782,7 @@ FF_ENABLE_DEPRECATION_WARNINGS void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type) { - int i; - - for (i = frame->nb_side_data - 1; i >= 0; i--) { + for (int i = frame->nb_side_data - 1; i >= 0; i--) { AVFrameSideData *sd = frame->side_data[i]; if (sd->type == type) { free_side_data(&frame->side_data[i]); @@ -838,9 +829,7 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type) static int calc_cropping_offsets(size_t offsets[4], const AVFrame *frame, const AVPixFmtDescriptor *desc) { - int i, j; - - for (i = 0; frame->data[i]; i++) { + for (int i = 0; frame->data[i]; i++) { const AVComponentDescriptor *comp = NULL; int shift_x = (i == 1 || i == 2) ? desc->log2_chroma_w : 0; int shift_y = (i == 1 || i == 2) ? desc->log2_chroma_h : 0; @@ -851,7 +840,7 @@ static int calc_cropping_offsets(size_t offsets[4], const AVFrame *frame, } /* find any component descriptor for this plane */ - for (j = 0; j < desc->nb_components; j++) { + for (int j = 0; j < desc->nb_components; j++) { if (desc->comp[j].plane == i) { comp = &desc->comp[j]; break; @@ -871,7 +860,6 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) { const AVPixFmtDescriptor *desc; size_t offsets[4]; - int i; if (!(frame->width > 0 && frame->height > 0)) return AVERROR(EINVAL); @@ -906,7 +894,7 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) int log2_crop_align = frame->crop_left ? ff_ctz(frame->crop_left) : INT_MAX; int min_log2_align = INT_MAX; - for (i = 0; frame->data[i]; i++) { + for (int i = 0; frame->data[i]; i++) { int log2_align = offsets[i] ? ff_ctz(offsets[i]) : INT_MAX; min_log2_align = FFMIN(log2_align, min_log2_align); } @@ -922,7 +910,7 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) } } - for (i = 0; frame->data[i]; i++) + for (int i = 0; frame->data[i]; i++) frame->data[i] += offsets[i]; frame->width -= (frame->crop_left + frame->crop_right); From patchwork Mon Mar 20 23:33:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40736 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2165853pzb; Mon, 20 Mar 2023 16:34:45 -0700 (PDT) X-Google-Smtp-Source: AK7set888M3Ydb6YYS27pMFyS0gGuDicDafukB39dnRJ87qI4JfcEPV59p5Dtthlc0aJooa59EbB X-Received: by 2002:aa7:d346:0:b0:4fd:2a29:ceac with SMTP id m6-20020aa7d346000000b004fd2a29ceacmr1550718edr.14.1679355284954; Mon, 20 Mar 2023 16:34:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355284; cv=none; d=google.com; s=arc-20160816; b=I3TPtJzk4WcZu2tTyP6ytpqAYzbzJI/LxuMctoaGGSb4E59BFRYILrrBJ7p0qwnUOQ Oll73YIeo0gqBUOV4IUltvQec5GNhmlYht2NK71mREKoYPhRYUGuR5wh/Sw162TwJkzo Rqikl4HsAgrUQLvIEGImGZ0TYi57HPnS5jYjndIeSApua1j5Taqu39zTlATIPDGcyRxO 0Y8YoV4JLEC0wU7a5QGnVrB4GOS6kI12hQ813BOojB7Rd4KMVIMBibn3GnZ+fGDMAair qV6RkEq9V3SGjaHBVFXeIA1G+6bI5fKhkCFDZKcKh3hbZKejAXu4Sfbm1urf74LB3Aeu WuCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=fb0j8jVCYB7/MpUHtROVCDl/fqOLLeJwyTA/tyegM0g=; b=0HpgLH/S2tK5WPIQxPQYNpuxhT1PMoV2G6iaIh89p2PRoXNJXI+L8MC7JLmXlIyoam Wux6FKgURQ86RdDsuFAZYTaueuKwsNBARitH3CaH9KnDBxTF0TQUrPDEVUNCwDIvIX8a 2oxSLSe8K3QqoQQFyQpZ9+Va0tSmB20odoH1XzHTJStK1Us9uWcPohM8gjEl7dh9BPbG P22TfT8m5l4UjdpZJO/RfYaGfJkxf2uJW7M1L1kwrHRzUw95eIogiGHGaWT1LeX77LcX bPbPZjSqxLzt/4u+Ham1H8J0mhI+lZKswgzWc327JW7s2AQHIBopIXnocLCxQ64dZ73p 6npg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=MhaQS2pU; 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 l6-20020aa7c3c6000000b00501cf6775dasi2632117edr.46.2023.03.20.16.34.44; Mon, 20 Mar 2023 16:34:44 -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=20210112 header.b=MhaQS2pU; 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 E789E68C5C2; Tue, 21 Mar 2023 01:34:24 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A2D8568C430 for ; Tue, 21 Mar 2023 01:34:16 +0200 (EET) Received: by mail-lf1-f47.google.com with SMTP id i13so1317563lfe.9 for ; Mon, 20 Mar 2023 16:34:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355256; 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=ERgwxiTcg5ihymMUP7IKpflpzkqEYrm8hdhvVy1HCcA=; b=MhaQS2pUcntCcA/X4rKmKpiJRO3DiwfOELJIPGqlIO3Edtj3BGNZt6dF3WqZZEuywo IGxeBb0EaHfhUatRNiUHVV6H5HRpGTRjV7BgN3xNc22Oj8azvm59CQ0wzDP2iMq65snI Hw5ntHgLvoxNZBo3BilS6ehaQRf3puQcOGD1fzegdn51JR01NsK83qIXRs6wj/e4LFez xaIjX401ARJL5BivR3Oy4xVH2dFbvcPwbVB5BqY6Gki6jSTu6hwWegdu5YNeYsIVzrWr ACW/sHvZpXZfuaXiYWPSoNUl6fCJ+oQL7nN4fwngzwITWSoUbRwNNcDWK9I1KXXkhQ2l r+YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355256; 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=ERgwxiTcg5ihymMUP7IKpflpzkqEYrm8hdhvVy1HCcA=; b=NZFFLvRkMzR7lzWE0hFTmyFaU/J34ttCnCG8FtSulCp+PDxgzHlatP37JVWrvxWEz5 N7iWtjX0CViDUEf9plSmNB26FWMI/9LHeIFc5A2MgeGcJlzTOkGuzbXa1ktDhqlH/uLy 9ay3ZhQMl0D+JqWn+0w3NVfRgE+MKwfn7NKCCBU/UkbZuCxamwYfb2YnuLXSIcUvr0tM UJZ+8U0hfehc7JiPkxIvNSYgFj+R7sAWKSl42UScr7exsG+6l0D9oL9DD9NSdcvVhYtU y+PYfqINaEBh6VCVHsYhF7uy/1x79WCSnQUC5Ws6Oh0gwsiHvOOdxjpgDodD5PTxEgNo h+Sw== X-Gm-Message-State: AO0yUKXR7B3sFXO/qvx0+h8aF8UjibFWelys1/FLdRPuALPlvLmlT+aC sx9AX3xjsOTrWuanfsbbwbM8Lh/aMBE= X-Received: by 2002:ac2:489a:0:b0:4dc:537c:9230 with SMTP id x26-20020ac2489a000000b004dc537c9230mr247971lfc.8.1679355255768; Mon, 20 Mar 2023 16:34:15 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:15 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:33:56 +0200 Message-Id: <20230320233408.134255-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 02/14] avcodec: move AVCodecInternal allocation to avcodec_alloc_context3 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: 1sKkUly6vRaG This allows for private values to be stored before the {de,en}coder has been opened and initialized. Add a new unsigned boolean entry to specifically note that a context has been opened instead of just depending on the internal pointer. --- libavcodec/avcodec.c | 18 +++++++++++------- libavcodec/frame_thread_encoder.c | 7 ++++--- libavcodec/internal.h | 5 +++++ libavcodec/options.c | 20 +++++++++++++++++++- 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index fb1362290f..c110b19e08 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -115,7 +115,7 @@ static int64_t get_bit_rate(AVCodecContext *ctx) int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options) { int ret = 0; - AVCodecInternal *avci; + AVCodecInternal *avci = NULL; const FFCodec *codec2; if (avcodec_is_open(avctx)) @@ -147,12 +147,13 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code if (avctx->extradata_size < 0 || avctx->extradata_size >= FF_MAX_EXTRADATA_SIZE) return AVERROR(EINVAL); - avci = av_mallocz(sizeof(*avci)); + avci = avctx->internal; if (!avci) { - ret = AVERROR(ENOMEM); - goto end; + av_log(avctx, AV_LOG_ERROR, + "This AVCodecContext was not properly allocated! Please utilize " + "avcodec_alloc_context3!\n"); + return AVERROR(EINVAL); } - avctx->internal = avci; avci->buffer_frame = av_frame_alloc(); avci->buffer_pkt = av_packet_alloc(); @@ -360,6 +361,9 @@ FF_ENABLE_DEPRECATION_WARNINGS end: + if (ret >= 0 && avci) + avci->ctx_opened = 1; + return ret; free_and_end: avcodec_close(avctx); @@ -470,7 +474,7 @@ av_cold int avcodec_close(AVCodecContext *avctx) ff_icc_context_uninit(&avci->icc); #endif - av_freep(&avctx->internal); + avci->ctx_opened = 0; } for (i = 0; i < avctx->nb_coded_side_data; i++) @@ -703,7 +707,7 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) int avcodec_is_open(AVCodecContext *s) { - return !!s->internal; + return s->internal && s->internal->ctx_opened; } int attribute_align_arg avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c index 62d9580ad4..683ba52608 100644 --- a/libavcodec/frame_thread_encoder.c +++ b/libavcodec/frame_thread_encoder.c @@ -110,8 +110,7 @@ static void * attribute_align_arg worker(void *v){ pthread_mutex_unlock(&c->finished_task_mutex); } end: - avcodec_close(avctx); - av_freep(&avctx); + avcodec_free_context(&avctx); return NULL; } @@ -195,15 +194,17 @@ av_cold int ff_frame_thread_encoder_init(AVCodecContext *avctx) for(i=0; ithread_count ; i++){ void *tmpv; + AVCodecInternal *avci; thread_avctx = avcodec_alloc_context3(avctx->codec); if (!thread_avctx) { ret = AVERROR(ENOMEM); goto fail; } tmpv = thread_avctx->priv_data; + avci = thread_avctx->internal; *thread_avctx = *avctx; thread_avctx->priv_data = tmpv; - thread_avctx->internal = NULL; + thread_avctx->internal = avci; thread_avctx->hw_frames_ctx = NULL; ret = av_opt_copy(thread_avctx, avctx); if (ret < 0) diff --git a/libavcodec/internal.h b/libavcodec/internal.h index a283c52e01..f21101752d 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -163,6 +163,11 @@ typedef struct AVCodecInternal { #if CONFIG_LCMS2 FFIccContext icc; /* used to read and write embedded ICC profiles */ #endif + + /** + * a boolean to describe whether context is opened or not. + */ + unsigned int ctx_opened; } AVCodecInternal; /** diff --git a/libavcodec/options.c b/libavcodec/options.c index a9b35ee1c3..f8fab164fb 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -28,6 +28,7 @@ #include "avcodec.h" #include "codec_internal.h" +#include "internal.h" #include "libavutil/avassert.h" #include "libavutil/internal.h" #include "libavutil/mem.h" @@ -89,6 +90,7 @@ static const AVClass av_codec_context_class = { static int init_context_defaults(AVCodecContext *s, const AVCodec *codec) { const FFCodec *const codec2 = ffcodec(codec); + AVCodecInternal *avci = NULL; int flags=0; memset(s, 0, sizeof(AVCodecContext)); @@ -132,7 +134,7 @@ FF_ENABLE_DEPRECATION_WARNINGS if(codec && codec2->priv_data_size){ s->priv_data = av_mallocz(codec2->priv_data_size); if (!s->priv_data) - return AVERROR(ENOMEM); + goto alloc_fail; if(codec->priv_class){ *(const AVClass**)s->priv_data = codec->priv_class; av_opt_set_defaults(s->priv_data); @@ -147,7 +149,21 @@ FF_ENABLE_DEPRECATION_WARNINGS d++; } } + + avci = av_mallocz(sizeof(*avci)); + if (!avci) + goto alloc_fail; + + s->internal = avci; + return 0; + +alloc_fail: + av_freep(&s->internal); + + av_freep(&s->priv_data); + + return AVERROR(ENOMEM); } AVCodecContext *avcodec_alloc_context3(const AVCodec *codec) @@ -174,6 +190,8 @@ void avcodec_free_context(AVCodecContext **pavctx) avcodec_close(avctx); + av_freep(&avctx->internal); + av_freep(&avctx->extradata); av_freep(&avctx->subtitle_header); av_freep(&avctx->intra_matrix); From patchwork Mon Mar 20 23:33:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40738 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166033pzb; Mon, 20 Mar 2023 16:35:10 -0700 (PDT) X-Google-Smtp-Source: AK7set+0cZ+g7lNtwr9uiEb0YLRv+8COCwo5n1PGa3FuwCWBfoxLUKrzrbAnY6Zr7pw7t1YICvSf X-Received: by 2002:a17:906:7cc8:b0:8b1:78bc:7508 with SMTP id h8-20020a1709067cc800b008b178bc7508mr771304ejp.20.1679355309991; Mon, 20 Mar 2023 16:35:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355309; cv=none; d=google.com; s=arc-20160816; b=Jr75b6ErHsd3gO8L5SSqTsbpSrWo+gbeSfeDuN0AniIiVIgPU/aECjyEdPYmqQ38MW F155mxEwFzWNxWUQ/Gh5n4sxJ7BTTCDKh4CM0VUEvz8xEgjBIpiMZ5e3JSE3PbRRlJIa v4kDbdslEvt/hUGmeiB424WawATlwugY6gAgvepW2ik93OsYdB9bj+0dLb/bCQcQfwJg RpWmRgpan495OBLcISi2fyoZi6/CpX5z9ZeKqo356xgjtsy/6gqTpC3g3d83bZApNzA4 05tNYfeff2bA4MjsYUoOuF4Q/y+Oowh2ZiiF8Das2agB4QW0ejBWfoRNXBcGU/+IVazO 84Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=6FLG2IiGAFRZo3b8fM6sOx6IXescEkC0oXV91n9aGBE=; b=nCJJIflXVUTr060i3FNsMK9DTMHdQC1foMSTVUZjx96kRI1g4hYHu6guimhRXw/9/j 7iJXcN4DuiaNjL5Vv5wlyU19VEXlH+tLDveGI67Gc1MjxLKURYRnGlKixsECDH4+TYoM rtR3NPtv4rz0LxBKp5/ofJcFIvRVCOOj4oHQ3U+7t6+UsovZz6hcAfracQ13gtsH6Sxw ODMpLxgb4khtw4mTPPYGNhY5eVEHF5YrEiRmxCo5hEirCIhH0vVCrwZRXAO7tb2UVovR dzXnORszyRmCGcpl30TWSPVpoq99JCZtQX2K7wE75ohNZAq1n+ABPs1T3tc8UBU9+xCY 0Lhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=K5Giiixa; 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 qh3-20020a170906eca300b0092744b8d1b8si6451700ejb.904.2023.03.20.16.34.52; Mon, 20 Mar 2023 16:35:09 -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=20210112 header.b=K5Giiixa; 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 016AB68C5BE; Tue, 21 Mar 2023 01:34:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED9F368C4B6 for ; Tue, 21 Mar 2023 01:34:16 +0200 (EET) Received: by mail-lf1-f48.google.com with SMTP id t11so17024186lfr.1 for ; Mon, 20 Mar 2023 16:34:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355256; 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=BN7enfIf0HCbAs2y7G/7eFy1943JJze0MzseIPYJsoc=; b=K5Giiixam8RIGalW+/c8U003Q7gXpj6SagyMIcpPiNZYZ7jisV48pz0cluzs+Nw90L G844N7oq8Rcp1K7iO3hgkOC4/x2YEmh1kZg42M/k1DaKjcywW3v6cdYp30MUzCnPGW4i wXt0XtOLTIbHAYXKt+pE8/BpG7ZkIb3ES6adwnuj/5oPfnC6Ig9yMfMgcWKaWI2947eF 2BdBaKP+b9gMqT095BcyImbv1BY/lju7dx3xIYR2XzzivTBxZ9nwX906mb/Qx8S+Z2DW kuV60+M/T4qmorfRcDkoRLkxpmlie5arESU3mhWQmytXkrPzaVJXJ6acHAEsC3Qn0IDW o+xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355256; 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=BN7enfIf0HCbAs2y7G/7eFy1943JJze0MzseIPYJsoc=; b=DIqKElhryvPL8h7muhPOVRr5gQhtm4F6s6lvnjSXFFTql0TYBb6JLFIHqn5HbY82WD 2+pA+mndPTpqCI9hbpbLZGZPEzKZ3htMbgojvDe9Pvbi3bBQgy3C3NMREKXFaM/9s6sG vk0AXhCwfm6dgXszBuYXIwNOqN3LXJZF73Hgb3p48mr/ltFu2+ibXon30sJN5v6Bg5so 7b9zI5Id/ZBmsaS1Xb9cVbMqFR5y4KR6ZLtLYvpCKZ8nS76eN6BYjtNvq0VAIIRD4O7b b6NublUOTQYzQRI3ormi8bvZeQkaHXraWGColjNSYpm7K8s1ZC2nCCLX7hiQ9kOlnrN8 Tjqw== X-Gm-Message-State: AO0yUKXXq08Q19kFweSoLYPUP4zDRpPugBkLEW6xV7/sq//ZCWyIGyTr qOGjoRCYgHb9qqShByZLSS61R/NDbSs= X-Received: by 2002:ac2:515b:0:b0:4dd:a7ab:b148 with SMTP id q27-20020ac2515b000000b004dda7abb148mr215939lfd.49.1679355256276; Mon, 20 Mar 2023 16:34:16 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:15 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:33:57 +0200 Message-Id: <20230320233408.134255-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 03/14] avutil/frame: add AVFrameSideDataSet for passing sets of 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: hxmLinrxqRy+ --- libavutil/frame.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavutil/frame.h b/libavutil/frame.h index 5b58c14ac3..45024c2a03 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -241,6 +241,14 @@ typedef struct AVFrameSideData { AVBufferRef *buf; } AVFrameSideData; +/** + * Structure to hold a set of AVFrameSideData + */ +typedef struct AVFrameSideDataSet { + AVFrameSideData **side_data; + int nb_side_data; +} AVFrameSideDataSet; + /** * Structure describing a single Region Of Interest. * From patchwork Mon Mar 20 23:33:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40737 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2165963pzb; Mon, 20 Mar 2023 16:35:01 -0700 (PDT) X-Google-Smtp-Source: AK7set9mBDABilO3IGL1/FvX4KZapbClxENH5j57wVQ65Cbcdc0LBXEQHckitmdEAumbtFGMwHqn X-Received: by 2002:a05:6402:44f:b0:500:4062:99f7 with SMTP id p15-20020a056402044f00b00500406299f7mr1269207edw.32.1679355301557; Mon, 20 Mar 2023 16:35:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355301; cv=none; d=google.com; s=arc-20160816; b=m71BfaOU6397w/wblPdhrZNPDYIk20gkCIdDaEYbaTD07QpXyMphEDqyO3muKvhG1I mUdQc6UZnZQ93ZKzWASYEJZdm7hjZ6MA5Ha/wYnypmkawAQ0NOS4a4H8ZnXJENRZVxYS qcqxfBOfzHmOxO7WU8fHER3T8a3zgMKh28qypidd3rQltdPKZZWlGVCg6NvtWAIHIhkG owwSxD8eEOu4QaGqpZCNIfnHlg5zT/nbVHw277j8L2qElmZ8cDvJT2qrQ3iV4xyCcdD1 F+pN7PBbZQk0Wyqvy5DHqRUS+EoXzJrZoEOq1QD6v6c9dne/pgDqPXYvjaivxqEYGfW8 FJDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=LS47aM0TguAWhKDF1I/i5kWVI1wnYsjWG1QAG2WVlE0=; b=paATjXZSMU8uF1CIhOzP/xGMigPUu9AG/o+OJMl7gInM8jUA4QDgqTq982LNXSuxub w2vTTlV4jTckZdiL+qyzF4JdNQ+SVnVIEYp7Fyepd0wS7AG0rpEXanxUgINoMiE7/x7l Ux5QKaTQdWRhClRqtnznNvqr5qHJCG8pEvqdJRRB1BNrZVl9z/DNp7X0Nbgc1WK/CqYa yDpHkKVd/lxtHfFjMcNSzSTtHW/rI8MEfu8tM9w1PlHr8BeKLXvFnM1Ek+pT6f4loxBb 3zUwcvx3wty73vM0bw/yDTgA4CzUNt5e8m1wTqLtkO96ma0PkIeRSKg5tuK8pmz6IbF6 I61A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=KMoAtxS7; 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 d4-20020a50fb04000000b004fef30e1027si11051463edq.621.2023.03.20.16.35.01; Mon, 20 Mar 2023 16:35:01 -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=20210112 header.b=KMoAtxS7; 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 DBE9A68C5BA; Tue, 21 Mar 2023 01:34:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9C9F468C59F for ; Tue, 21 Mar 2023 01:34:17 +0200 (EET) Received: by mail-lf1-f46.google.com with SMTP id y15so16988298lfa.7 for ; Mon, 20 Mar 2023 16:34:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355257; 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=JWrL5L2Awwi8EyK5S5G0YfWizUrCXnEw0SdKnzbf4xA=; b=KMoAtxS71/0np/5kJ9z6206N52qNv0Ee0s0Zee5gmukGiIMuiaLoGhPEWlaXmNmZC8 vsji4Nu/BEEZU28HvumvwZSJhhmDEEnfD4xCDasenjGnSPNSsFK9fmPccMyme8407r2W l4p+Pbec7xF50EXXBFJwjwfQoo3wBJAIh34pfKmMLYEkEI1BN4fPjl+SFKDpevwzMP61 9Tdfn290g8+IVzPczzLOwZCtBGUwxEfwLBKkhKrVfUX1ZQCUNPIAj1akzxZe20Cov6Du 1ewhSCy/fcLmf0HAd4WL4GaI6IeFT+Mi/eL/q4udbryMCokg9sUStnEMBci0ZHdcK26O La+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355257; 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=JWrL5L2Awwi8EyK5S5G0YfWizUrCXnEw0SdKnzbf4xA=; b=sB0h/MDPDuaFTkKOkuMVfYZEoED3jwRJHUXDxtdaJAoLYge2U5iUCudvsza5RynNzm iYdZARcLZCRbc6W7cnnfAd3Ud9td4aAe5DAqw9i1t/joyJeAFOGwhcI33vLz2Xkd/2BR p9/xOUxeP3Lcoykb6I34uIF7t9QM1XABDJgD8lSWAiuQ1DW2qd8K8hes/WT3hK1tZsVd nBf2B01d6ISN8qeLcC39VkK8giB2hl1vxGa0O5UfKaXOsIAwEdpW/vNZMWQRAPw6GVCM rYF0JT8Xtaf9DcwRAI3xq9W0k8gWiFfvWoYkHrFPcHWitxb4A0ffojHvJHKF9UP4T53G GuqQ== X-Gm-Message-State: AO0yUKWr7mL+m0BHj4a9Apz04ENMsLdvJQUVjwMFAkrDjq2ZCgbOVMJ5 cZjVkjVMxT3ggDEVT4e9jyJ56RITkiY= X-Received: by 2002:a05:6512:41b:b0:4e0:ce21:b92 with SMTP id u27-20020a056512041b00b004e0ce210b92mr200999lfk.16.1679355256740; Mon, 20 Mar 2023 16:34:16 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:16 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:33:58 +0200 Message-Id: <20230320233408.134255-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 04/14] avutil/frame: split side data list wiping out to non-AVFrame function 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: 5NXT06WTiM59 --- libavutil/frame.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index c905e8d611..019613e4d2 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -76,14 +76,18 @@ static void free_side_data(AVFrameSideData **ptr_sd) av_freep(ptr_sd); } -static void wipe_side_data(AVFrame *frame) +static void wipe_side_data(AVFrameSideData ***sd, int *nb_side_data) { - for (int i = 0; i < frame->nb_side_data; i++) { - free_side_data(&frame->side_data[i]); + for (int i = 0; i < *nb_side_data; i++) { + free_side_data(&((*sd)[i])); } - frame->nb_side_data = 0; + *nb_side_data = 0; + + av_freep(sd); +} - av_freep(&frame->side_data); +static void wipe_side_data_from_frame(AVFrame *frame) { + wipe_side_data(&frame->side_data, &frame->nb_side_data); } AVFrame *av_frame_alloc(void) @@ -326,7 +330,7 @@ FF_ENABLE_DEPRECATION_WARNINGS sd_dst = av_frame_new_side_data(dst, sd_src->type, sd_src->size); if (!sd_dst) { - wipe_side_data(dst); + wipe_side_data_from_frame(dst); return AVERROR(ENOMEM); } memcpy(sd_dst->data, sd_src->data, sd_src->size); @@ -335,7 +339,7 @@ FF_ENABLE_DEPRECATION_WARNINGS sd_dst = av_frame_new_side_data_from_buf(dst, sd_src->type, ref); if (!sd_dst) { av_buffer_unref(&ref); - wipe_side_data(dst); + wipe_side_data_from_frame(dst); return AVERROR(ENOMEM); } } @@ -486,7 +490,7 @@ void av_frame_unref(AVFrame *frame) if (!frame) return; - wipe_side_data(frame); + wipe_side_data_from_frame(frame); for (int i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++) av_buffer_unref(&frame->buf[i]); From patchwork Mon Mar 20 23:33:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40739 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166048pzb; Mon, 20 Mar 2023 16:35:12 -0700 (PDT) X-Google-Smtp-Source: AK7set97Akj1slxpsqL2gRnIpJ69fF9Lb/4AdMnUplINfWKnKqOy/8psrR6VcYEF02XRf+63CCq3 X-Received: by 2002:a17:906:7e14:b0:928:c92e:d112 with SMTP id e20-20020a1709067e1400b00928c92ed112mr847486ejr.50.1679355312246; Mon, 20 Mar 2023 16:35:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355312; cv=none; d=google.com; s=arc-20160816; b=MbQhjBMJyGLrswNEXyneiTRcbmQudJ5UWbrfoq7fD9eXyfto8ffn9ikQQLtm38qKh1 bWLf/vghK9Zq/I2d+irpARGh9eDMw89U9g5jialrslYqD3R+J0/b6XLGrIW/6BQ/Iivv 7Vr8SsDi1/CxrdDuD3j3cqcJGbXUDOwaW8W9OiztykLAXfaSmuVSGkx3p5bk+NfODYC9 bBFemJiMs+Hui7UcMgAKXCvQH++A2FvrX4COgcXgNF18ex0gOiodmjlFaaMXKBjOHsw0 Tbf89PCGjOtFLVTolN4+457TGpuCMTj9MPCKyDtxD+na3DY9Ibr8k4yLv0jUsG2Lemp6 cN0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=wX3rr1iWFEUwJ3NItpCW6XDtTFMvnlLs4l5exZ57ND0=; b=ZQEVI7o9uGrU8i20uL4jrqJs3x6D6W1cZPPDP2SFFXFunhpd+Nk0bfw+a3iBFOZtBY pGQcRIvgA35fIGQLCuvsus8IHY8Tno5wTKgA/XEq+8M+0Njf63q89haJBG0YhVOqwtdS fKI6LsSEvdX50buAqcFdCL8yXNxhU7P/B4qHUYRR5zkgvrC3Rf8O4tL9OH5gmB5ODClM Hh8X/jpRMBHLLrOCvCYZxCpUIrbXuciDsdN0QuvyJmgYkupr9uNs98G/UzpY0FQvF5Pe CxV3Ly4e6zjx/V6TKkIZR2+Rtho3ta5A+ZK3GRiiB1/M2l+zoURLKPLF+A0sFkLeHsB0 NJiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=CRKd6i9M; 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 lc15-20020a170906dfef00b00929b501af1asi10797515ejc.1008.2023.03.20.16.35.09; Mon, 20 Mar 2023 16:35:12 -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=20210112 header.b=CRKd6i9M; 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 D302A68C5E6; Tue, 21 Mar 2023 01:34:27 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C2C3A68C59F for ; Tue, 21 Mar 2023 01:34:17 +0200 (EET) Received: by mail-lf1-f44.google.com with SMTP id t11so17024209lfr.1 for ; Mon, 20 Mar 2023 16:34:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355257; 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=0vWrCyv5hu+6hIf6tp1WEqHZn8YLv75Q99828DGTiIs=; b=CRKd6i9MqaI6YOFATp3nXpaVQrWhCGBVorOHIYSFGyj8DX06N+CZPp3iHH5qLS7atG Qar+oDLbcOq+/lTQTCrHnD9efYsnqGip6HBtM8c0FbXoUYAeJxhrC2TfTf+7Ckue8fSu 9PPzHYkN3uqOVpNifp0h9Dag+FfkL6p6FRkEhK2lgl3yNo87/WBf7uBzukQK6gN1r2Sm rzGz6dA01gHTp+4+8b8Cseb22L2ibKk/gLLsqpydeKoU9rpgqD5Y+QJvCbrlIDrCTSPf sJojCVC5nnWw7xUimXbYszQDreK1Tovq0rffCXCIY8PPP3KM1bphASSIy9bxvJlay0lQ Av/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355257; 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=0vWrCyv5hu+6hIf6tp1WEqHZn8YLv75Q99828DGTiIs=; b=1WZPQjf6m374N6s+HoEAvUrzNUTLBhTBKjSuKRODVpZ3y4l21j3X5M5Aos3Dl9H9Ue DYmHIED4z3XdzcVLZpr9Htn3n72qzSSaOpuH0PBo2pblWIIiW50vpvf5MIy5Jff0QlSe vdDmAo3U1DDz6U7jVj1tXcfaL4k229DZGU3CkchFt4yZ41ySmXadfyPyUulhOcOg/b5E mY1H6bD7fTNC1ksG9fwvaJJz2CRQzU0mYwbkXtk/oPiuopYev3CIs2jaOpwI5/2ZeVv4 I/hXlGgfvaVWPixWjJCt0lV+Lf6l/wPFTfifQ0pkCdeqA3h7x3TQl2Rkn+0uJ6exstlk FPsg== X-Gm-Message-State: AO0yUKUGi59jzZFv9ScX/TOmvypki+rknWMcgpR+OqaxS2TqfmejQioK 2ldi/IQPcCxnibJOXiUh0Lo+42+PZt0= X-Received: by 2002:ac2:5a45:0:b0:4b5:83b8:2c49 with SMTP id r5-20020ac25a45000000b004b583b82c49mr243277lfn.1.1679355257134; Mon, 20 Mar 2023 16:34:17 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:16 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:33:59 +0200 Message-Id: <20230320233408.134255-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 05/14] avutil/frame: add helper for clearing out side data sets 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: xcEDF4TE7MUm --- libavutil/frame.c | 5 +++++ libavutil/frame.h | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/libavutil/frame.c b/libavutil/frame.c index 019613e4d2..24038cc0fa 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -90,6 +90,11 @@ static void wipe_side_data_from_frame(AVFrame *frame) { wipe_side_data(&frame->side_data, &frame->nb_side_data); } +void av_side_data_set_wipe(AVFrameSideDataSet *set) +{ + wipe_side_data(&set->side_data, &set->nb_side_data); +} + AVFrame *av_frame_alloc(void) { AVFrame *frame = av_malloc(sizeof(*frame)); diff --git a/libavutil/frame.h b/libavutil/frame.h index 45024c2a03..734ac3fe75 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -991,6 +991,13 @@ int av_frame_apply_cropping(AVFrame *frame, int flags); */ const char *av_frame_side_data_name(enum AVFrameSideDataType type); +/** + * Clear all side data from a side data set + * + * @param set the set which should be cleared + */ +void av_side_data_set_wipe(AVFrameSideDataSet *set); + /** * @} */ From patchwork Mon Mar 20 23:34:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40740 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166095pzb; Mon, 20 Mar 2023 16:35:19 -0700 (PDT) X-Google-Smtp-Source: AK7set+liz8WshEuWEoxTillMr0EVTaw0C7XxYjXeWEqrnvCPA2881Xxeft+HE8X4ktXf2M5Yr4S X-Received: by 2002:a17:906:2a19:b0:92e:efa:b9be with SMTP id j25-20020a1709062a1900b0092e0efab9bemr892197eje.18.1679355319345; Mon, 20 Mar 2023 16:35:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355319; cv=none; d=google.com; s=arc-20160816; b=CrtU7/ZqZ32zss9snyFkQGlw0Wlq45hINmvUllJLKPZQ+tOOvTitX98ov1mxVwga2B vRI0qGLkspm7Z75onU/T9HRt3yqW3kZUFKjJm2c0wCM+nsJRI43zV2xNWf4PdYb6hM2C qp9HDhd5MEmL2xZkKXNG1hZQ7Apdn9tyoVyuvwEzerWqGssDojC0urtwMAIVCBTzxweB 26dMVpyFLXEoYVZ9DSe0J+zX6Z1GteA6ZmZyFCzoEzZN5EJ12cLJIooL7oiz9GkxVHu0 9CXtzqtWEJhWNOg0Dc/agtsc63XNE6NFnwFV/t3NAegjHejEfGPVIKolt0vnXAfYqNaL 6bOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=+Cjch5dmkBnNtSbGU2z1a5ZdKOvv+AjeiEfSe9FIpEg=; b=B7ez6NDyC/lpX7rUwo4SLfymgBnzEmOO+KOjlf6j8t/3r9pDSWjLi/J+8fxFG+A0cL zp05oxCYPsL7Paoa2dh2UKS68gV89Lgs2HGX/u3eFTMwVL+dPWgAYmh9coe3lvsYbYyD n4px4X67+FtL0psjx035v1FG8oMvw9BmZOaCHWaNJGT5ZvF01i5/HdsZuzCDAmofYrkS KaKICtkUiJbuzxPfzcY0rkB+qVjC/bdARxrOsedCkZ7IuP0Gb+JauN9Sh9mZVutebtgz k0lOzpyNs61h988gA0KX3hdMg1KCjIVBfEzuqL9aUxyV4qpfbRY0gsw6pqjLZ6fYJn+U 5QPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="aZLZO/r/"; 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 x1-20020a170906296100b008b1fc5c8366si9444603ejd.243.2023.03.20.16.35.18; Mon, 20 Mar 2023 16:35:19 -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=20210112 header.b="aZLZO/r/"; 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 191E568C5E8; Tue, 21 Mar 2023 01:34:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2FFC468C5AD for ; Tue, 21 Mar 2023 01:34:18 +0200 (EET) Received: by mail-lf1-f48.google.com with SMTP id i13so1317635lfe.9 for ; Mon, 20 Mar 2023 16:34:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355257; 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=oGm3z9HAZvdROOvpvc/CCFyByzV9Mm1Tc8AJQSIbiRc=; b=aZLZO/r/QD3QpWHDqj968BTCPj9KfL0ZMKjNBCHecgQL/jAgNHodsaLsQeTMiuBkxF fkbhOOM3KySjE9d6jyOHmAhT874tfwXcXMWkbkEBXqJGR55iivuXLs73UmRdgY42wp/B bcwVwZ3iIkQY3CCAyu8hUjl8JuXIr4spZVJp0yciiTVNYLXukHRypqfkejlCKUnxadt8 +X+KZLoZRsV2MYbQ+hY10L13BlYTQc/GISMjQkM4COIqzNmS9BQgeubloEZ2a+/SN9w0 YIgw6WTrQ5hfOnTIBsm6MK8YjYqJ62ZAdrqlZC4cm9l0E3OYQjH72vaVNIuOlDhlv/Uc kjww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355257; 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=oGm3z9HAZvdROOvpvc/CCFyByzV9Mm1Tc8AJQSIbiRc=; b=sqHLMVub20tywIT+tVU3hY2BoKZb04p1mg20UlFf+AHwGz/YHGybvB+mDYDMlowzNd wgHUtZTlD/TPUVmlKhk7qsyclDijtDQZTIymW3x6L1JX8SFlYwZ1YPgavr1Igwi6IYlu XKeDd1kxw/+oBVuM42fIk7kBvUA8AY2EOhtyNkeRiOLp+U3LweNnzKs42DGObmQkQ8Lj WSERPIrMF1ag2NRX21uc0LQqfGKlTeQhsCCbPX+K0mU8zSjxmDbCRMwdeeoCwhcH9cGS yQbWIlAQPfa/KyabQaMk/V8AL+MvjDoo2ot5xcYqii047Fu5lRuLooOnfZBCQMBG8UcS h+hg== X-Gm-Message-State: AO0yUKVI3IcCENO4RWanXZWC7jkfcF9Ww89iNGpMZ+aXV+kga2GXwLds wN4StkdiLinzYEgCumBbToN/qiu/4uI= X-Received: by 2002:a05:6512:21ca:b0:4e7:dd1e:e521 with SMTP id d10-20020a05651221ca00b004e7dd1ee521mr206597lft.9.1679355257575; Mon, 20 Mar 2023 16:34:17 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:17 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:00 +0200 Message-Id: <20230320233408.134255-7-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 06/14] avutil/frame: split side_data_from_buf to base and AVFrame func 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: /GU7OvmJrdU3 --- libavutil/frame.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index 24038cc0fa..ab1a4e7f6a 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -648,23 +648,23 @@ FF_ENABLE_DEPRECATION_WARNINGS return NULL; } -AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, - enum AVFrameSideDataType type, - AVBufferRef *buf) +static AVFrameSideData *add_side_data_to_set_from_buf(AVFrameSideDataSet *set, + enum AVFrameSideDataType type, + AVBufferRef *buf) { AVFrameSideData *ret, **tmp; if (!buf) return NULL; - if (frame->nb_side_data > INT_MAX / sizeof(*frame->side_data) - 1) + if (set->nb_side_data > INT_MAX / sizeof(*set->side_data) - 1) return NULL; - tmp = av_realloc(frame->side_data, - (frame->nb_side_data + 1) * sizeof(*frame->side_data)); + tmp = av_realloc(set->side_data, + (set->nb_side_data + 1) * sizeof(*set->side_data)); if (!tmp) return NULL; - frame->side_data = tmp; + set->side_data = tmp; ret = av_mallocz(sizeof(*ret)); if (!ret) @@ -675,7 +675,23 @@ AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, ret->size = buf->size; ret->type = type; - frame->side_data[frame->nb_side_data++] = ret; + set->side_data[set->nb_side_data++] = ret; + + return ret; +} + +AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, + enum AVFrameSideDataType type, + AVBufferRef *buf) +{ + AVFrameSideDataSet set = { + .side_data = frame->side_data, + .nb_side_data = frame->nb_side_data, + }; + AVFrameSideData *ret = add_side_data_to_set_from_buf(&set, type, buf); + + frame->side_data = set.side_data; + frame->nb_side_data = set.nb_side_data; return ret; } From patchwork Mon Mar 20 23:34:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40741 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166156pzb; Mon, 20 Mar 2023 16:35:27 -0700 (PDT) X-Google-Smtp-Source: AK7set92q0PZ6ae/Mzr91NqAsC/t/9fyfV+iFZsqbg7kK5SB//++9V24qCrXz9Z5i1I4WW1rLLKq X-Received: by 2002:a17:906:f201:b0:91e:37ec:3c90 with SMTP id gt1-20020a170906f20100b0091e37ec3c90mr927581ejb.31.1679355327360; Mon, 20 Mar 2023 16:35:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355327; cv=none; d=google.com; s=arc-20160816; b=exijYY5+YwKtP/3xenykanbwYuGi6oAlcON7HScJjE8hUnzpxPStjSR32mKYJzkMAS lpwBfBq/FvcbiWnweuPjmXddaEyeTCMl7EyKqwIRkltax2Sqw5i00frWu1fqGfetnPCz 9yhgejK6E3++1XAOLFLJPALKVhpaYk/mKnr+0Bf+zu6GYzaza+71YMJNZnyLhGZcKDyu bN89CchZtd2jGHc9Ues54JhtzhyhQe4wvgQalv0FGqxgHBM6Kc2XytBMf+TWdNVJBymz l8puJwBDRPeA+GlcQ3N4qlS15UbVmuHAYjAhnr13OIRihKPyKqkpXnWn7zArIT/dFFZU 98mQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=z6b0VUjnM8eAW6/Uehm1b7sO2rJK60TCQh47zcnchhs=; b=pxqLP5csRebE71Hf5+Rni61xPdhOyo+SeeEOyAlJ+TQdF976+M+ibnZNc8HTnMSMRs eSsmgGa9TfAFgkolbryR+VQzE/jbT2+HlT4zBL7T3BcqdNey3VOFxUafyZI/mqlxuF4e bZcTUPdg0ErzSga8gLz1Ug+0SNzgFyXqenj0IKNJ51cabbYfQpgXSz1pdf1x5TfxwYFS qdWtZ7A3igttM7aFgGCQw6qFInyhTcMC7xy7qyPwZRoWb36IniOw8UHP/7oQMUyY6Osi s+F9VZ7AWAIch3RdcgyERZZGQdzGMZrm6RA9S+4Q69p9NeqhZursO0v1JwlyH4xOhR2j K3fQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=WAs5T2qv; 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 q21-20020a170906771500b0092b782b37f1si10513948ejm.776.2023.03.20.16.35.26; Mon, 20 Mar 2023 16:35:27 -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=20210112 header.b=WAs5T2qv; 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 E4D3668C5D1; Tue, 21 Mar 2023 01:34:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A7A5368C5B4 for ; Tue, 21 Mar 2023 01:34:18 +0200 (EET) Received: by mail-lf1-f41.google.com with SMTP id x17so17015393lfu.5 for ; Mon, 20 Mar 2023 16:34:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355258; 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=8rEEYYVIS3CMaaYCT1jYvirXrRc+Efmzaab7J0siwFQ=; b=WAs5T2qvfziBPx4YhvXcfgJBV41/NFrNqdRtSIpy77wAQMuCwxGkY47OQDFFQ0uzOI 9lUKyasgCAgNq+1VeOuIX2yDN4CSVnQCV+1/trJkJxVOFIRP9LZiDQ8QQRkGLvxHZRlt /ZiM+MnrhpQyweatDAmA2uooyg4jD7tmsXCdSk+RU6sAMS3rUmY/0BBIOBfYAXcnomXz WsyydNmpa9slcOqJz9sEJKHAwhgU7zhC2iZppMG7xFZE9yGyeax7FXHVXZ4m4c1PM1j+ qguMpcI5HeeBRoerUOsIk2NJB689eHdaMmp3wvu+L3QE+Y9ZgMJdsyzgtpEhuZI/TjFv QQ4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355258; 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=8rEEYYVIS3CMaaYCT1jYvirXrRc+Efmzaab7J0siwFQ=; b=g5mu/k8QTHnm+LSrj9PPPv8Y7u90dQe3nb8OW6w21enicmB+J0JeijH0hJFx8s9TlS FiWtcZb/grUtpMsVs3y/KsrvPo+BH4DC8u80YsQsv28bZz2QVJqcHyBsnFLySCSe2MJa mpZhOQGHM5Nsh0zTot6mRrGrbnN6JRvtiMl7kNJj8+1+AAO9s+TSM+JyKrx+UKoYoZLh RwPaLY/maUzfcAsMY5ItmRY7nccqAdsTL5H+IoOr2Oko/4Kpn1vXkgdRvo0TUhZkTwac pLTgJZvp2kHxK0nQQ8yuh9SXLKi+97LhL0nL8Zjid8PszMljTElVWzinA4X1nB6FGXJo qKPg== X-Gm-Message-State: AO0yUKWSeYV0RdbynCMrBTZTXZVI1LvK2RTQ8J8FPq5bla4orXX2ZrXx FmweEOaOrbyFPqLYwcimW60MPL+vbGA= X-Received: by 2002:ac2:5fef:0:b0:4e8:595c:60f9 with SMTP id s15-20020ac25fef000000b004e8595c60f9mr187130lfg.32.1679355257979; Mon, 20 Mar 2023 16:34:17 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:17 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:01 +0200 Message-Id: <20230320233408.134255-8-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 07/14] avutil/frame: add helper for adding side data to set 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: ZPKSHZnh8uCI --- libavutil/frame.c | 12 ++++++++++++ libavutil/frame.h | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/libavutil/frame.c b/libavutil/frame.c index ab1a4e7f6a..29e9b631f8 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -708,6 +708,18 @@ AVFrameSideData *av_frame_new_side_data(AVFrame *frame, return ret; } + +AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, + enum AVFrameSideDataType type, + size_t size) +{ + AVBufferRef *buf = av_buffer_alloc(size); + AVFrameSideData *ret = add_side_data_to_set_from_buf(set, type, buf); + if (!ret) + av_buffer_unref(&buf); + return ret; +} + AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, enum AVFrameSideDataType type) { diff --git a/libavutil/frame.h b/libavutil/frame.h index 734ac3fe75..167a8f0ff6 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -998,6 +998,19 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type); */ void av_side_data_set_wipe(AVFrameSideDataSet *set); +/** + * Add a new side data entry to a set. + * + * @param set a set to which the side data should be added + * @param type type of the added side data + * @param size size of the side data + * + * @return newly added side data on success, NULL on error + */ +AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, + enum AVFrameSideDataType type, + size_t size); + /** * @} */ From patchwork Mon Mar 20 23:34:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40742 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166213pzb; Mon, 20 Mar 2023 16:35:35 -0700 (PDT) X-Google-Smtp-Source: AK7set+xz62K7NWdoJumPban/9pbWb6H71iIxXLORrzdXN+QHvaQ0lB9oAu1waP24Bt59YtjCWA5 X-Received: by 2002:aa7:d887:0:b0:500:4e0c:2b09 with SMTP id u7-20020aa7d887000000b005004e0c2b09mr1127076edq.7.1679355335244; Mon, 20 Mar 2023 16:35:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355335; cv=none; d=google.com; s=arc-20160816; b=fdr1sY0oXZFz/IIcDN4nMQXrnAu6vbjTmws0TxvtREi9afqq6yM+3PyPhrBlztWZJ0 /6oFZgh2EyAPpcr91NVI1s25GkkVjqZ07rb5wUPo68e4KcO6K6NQuWjBXhuonnKVn/A/ rPSaNoIkyj+WFWHNRa1cGl6psh29hiCu8FzvuwEGZeUzHoFM7POby6P5rfn+BKLfcUC2 MXZWM7rJHtLYlt0lJYan4kiDGZEYWpBadaHeOYwR4vu+TLgRtHPfyEz5SWjb2Z01KmSG zkp2iDQ+gXsTXYxwKlYu4/F9WqV9LHcH1lvQ6F9ZCakwjUxqNl0/zzWQ8WnYyau1faxu E+/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=nl0a9ujcefWUPm4wrYvtPk31fAYjPa93tT/cn33ruBM=; b=O9Zxz87bemuZT05qLFrGwSQDsAHFtMjt+mtoAIs7b39YptxqEm7Y2vp1zAevMZLFIZ HRb8I4LuNOt7XS+/m3AYr1xI1fcFxqocYGUmdMuIlgx7DAVxvJmJO7Rq9SP6ftJRPzTa BZa2LcyBEfA4FjcVCur6N3OXs0T6XTg0bZJBp3L9g/+1RdIBy7EV3dpwaQqB+s6a9C6o Q6E4ciLjjeO6WBsC6b/+do9umFZLijjyPc392J7O6Vzk/pgFemqd2CAev6hEBTgtZSuD lxP2Wik3cLKrUzctln/VKbXBz984gfLAlTjX2n0Do/awE8cxcaLGAmc5kSauKWtZMM7Z 3n9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=R4Zi5LHS; 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 g12-20020a056402180c00b004ab4beec181si12565522edy.476.2023.03.20.16.35.34; Mon, 20 Mar 2023 16:35:35 -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=20210112 header.b=R4Zi5LHS; 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 EF96268C600; Tue, 21 Mar 2023 01:34:30 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E24768C430 for ; Tue, 21 Mar 2023 01:34:19 +0200 (EET) Received: by mail-lf1-f50.google.com with SMTP id f18so17016063lfa.3 for ; Mon, 20 Mar 2023 16:34:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355258; 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=WmBGtDR4WahWX/AOvlMBMBpbmnm77KLt53cdeFx+uKE=; b=R4Zi5LHSXkDn3Qk5OpxfK2lwljQVz87ayMWwS5i+dS0Itg6xPHD9TFhHxvBvkysVcS OBVK1FC/1Xoxs9CCf5cM6By7VG+nourKACDguNfSXvCHfKlog7lRpJdeiV68Ox1imsKC 2hBA0z6fPP4n35efuNfoceJtZs9tHh6gldRR1v5+kq3Sx392yR3fu5vcwbfyHrmzpd6o YChUHHpVI/HBDXyALMP7JW7cfGYN5H7iCcFKhN7KVIjS4fvh2yHlGQGv5fangBU+oned i04CaOxOAmP9w7zbTP3z/uWp7B5CSI1MDufJwyOegXnKZtUFzROsS35UGYw47uq6AGXl 93Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355258; 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=WmBGtDR4WahWX/AOvlMBMBpbmnm77KLt53cdeFx+uKE=; b=kwAL6Qhud5Rry0bXlOt2wj/UFVLEtm+VxMlC7/6HOizAda69T14CeCLHeDr+TJRhwz V4h7Zvo8UOfjOTNTBcYeLdQ7JzZcrDNavxGpiXBzOKFwR1m5D200LVXWuhOui8EOsRJL 0B/MMJsAyiJZyyIABU8bF9xYWq9F/YdJGQLU3ddEsl4BSPcf3tbR4rNXX88UVc7xaItH O3izYxsCt80PdALRiMiNSuWuZqNXB+cgYF2G+sIPmbzcby2pmp+G9mAtxlsQ8YvKUWjc s4H+naxMBJOhUZ5t4SYPNIpbzl7RE0Zo8zpaga2SzW7SLjl2IzRlPBeLFuJPlk8OcOiS PMfw== X-Gm-Message-State: AO0yUKXOEs7J9TruZSiOXDGViyzanish/iWdycM2D0iXEaDrGNt/5B20 ioYmWDHnLKYt44IPYpTjn6A5z7oTKIY= X-Received: by 2002:ac2:5474:0:b0:4e8:57b1:9498 with SMTP id e20-20020ac25474000000b004e857b19498mr221218lfn.5.1679355258444; Mon, 20 Mar 2023 16:34:18 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:18 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:02 +0200 Message-Id: <20230320233408.134255-9-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 08/14] avutil/frame: add helper for getting side data from set 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: H2uR8effJNJT --- libavutil/frame.c | 22 +++++++++++++++++----- libavutil/frame.h | 10 ++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index 29e9b631f8..3386cda627 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -720,16 +720,28 @@ AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, return ret; } -AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, - enum AVFrameSideDataType type) +AVFrameSideData *av_get_side_data_from_set(const AVFrameSideDataSet set, + enum AVFrameSideDataType type) { - for (int i = 0; i < frame->nb_side_data; i++) { - if (frame->side_data[i]->type == type) - return frame->side_data[i]; + for (int i = 0; i < set.nb_side_data; i++) { + if (set.side_data[i]->type == type) + return set.side_data[i]; } return NULL; } +AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, + enum AVFrameSideDataType type) +{ + return av_get_side_data_from_set( + (const AVFrameSideDataSet){ + .side_data = frame->side_data, + .nb_side_data = frame->nb_side_data + }, + type + ); +} + static int frame_copy_video(AVFrame *dst, const AVFrame *src) { const uint8_t *src_data[4]; diff --git a/libavutil/frame.h b/libavutil/frame.h index 167a8f0ff6..8aa50e3ad8 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -1011,6 +1011,16 @@ AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, enum AVFrameSideDataType type, size_t size); +/** + * @param set a set to which the side data should be added + * @param type type of the added side data + * + * @return a pointer to the side data of a given type on success, NULL if there + * is no side data with such type in this set. + */ +AVFrameSideData *av_get_side_data_from_set(const AVFrameSideDataSet set, + enum AVFrameSideDataType type); + /** * @} */ From patchwork Mon Mar 20 23:34:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40743 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166274pzb; Mon, 20 Mar 2023 16:35:43 -0700 (PDT) X-Google-Smtp-Source: AK7set8cgVxWVhogFjCylIOnl7OXYmkOd33OQ4k3OVR5YTJAtOnMmsVJ+/ITTqVu2RmOcbupgO+N X-Received: by 2002:a17:906:ce53:b0:888:456a:cb76 with SMTP id se19-20020a170906ce5300b00888456acb76mr760804ejb.70.1679355343738; Mon, 20 Mar 2023 16:35:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355343; cv=none; d=google.com; s=arc-20160816; b=h309AQHBq684y3bFCIe4a3YNQ68nhl9NJ131obMRT5XSFhqWHs6g0/LqytiDm8nxwM BmgIRB4ed/fGBKuTa+0Jr3CW2gRxnOaib4pBpuPE1BLUwzhPWKUaaViCZtD7BRu3t0LB T+Ehs5EJLMJA+6zHbnxZob4e+nKW5VKnJAy+zQaVmAUumRitJjqy+UqhWyhfPei8aK6E IImy1loTTpN6+eyfgPQeB4VuvWUjfBBRk7DZadyrHHnhWJCi0pYEbivDSxrMJ26gyl28 zs9LaU8g4VZe2Ewib9oqjG0rQWwXnb5dG1Tk6vTc/+f2t5P8T4KssrnOxEXqHyGqc/hi jRXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=jAnZDvWq0V2Szsq2pcWkdy1Wjdev/01mrAFoLrIIT/U=; b=Mb61VKliDDGfkV6d1UbSREjZFB/VAs18Ys4rAFuwefWFVz5JKWwbjxlfn4YFQv9eFF 1S1qgWtD3WFSUOsk6tNVgdrZguFqxejivNySNBOBZ2d8C7Z87JbQqsxhnr9B6H94Oo9q 8kkxmNixr08RztqZdjKSM41S6ZEndgoUlMQPrcVxFunMwqrQU9lJBwQM38gl5eXphZe0 VsuT5xCPa2stlXkehMK5q9KUb18vv77A+i5Jwd3nVWUfARldq8tcBOkvS3aM4JNp49RI RCXB6NYO74tEIp8vyoSZaunrFSkkEkRpbjKix+LH+hYTl1AUYVjVaX6+YykJAt/kOmu/ bZiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=BbnNDxHQ; 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 kj7-20020a170907764700b0092d01b8d3aasi11354994ejc.808.2023.03.20.16.35.43; Mon, 20 Mar 2023 16:35:43 -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=20210112 header.b=BbnNDxHQ; 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 0B81F68C607; Tue, 21 Mar 2023 01:34:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B07BD68C5C2 for ; Tue, 21 Mar 2023 01:34:19 +0200 (EET) Received: by mail-lf1-f52.google.com with SMTP id bi9so16971225lfb.12 for ; Mon, 20 Mar 2023 16:34:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355259; 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=KXaft0q7HTLTnqLTqKKWcumjEw7waIyWWZ/AAC1m16M=; b=BbnNDxHQxkfstX6kVjS+ywVv+5sjBJi7q2Wyk05lBC0C/lFZTbSaoPkzryByAWiVNV Thph3Lt6Z2/fouP/DKD0NOGvPTWvNr/x6Xh+ZFdy6t3X7JKpeES/Nm5f7T6L/rNgauLe 1FJAzOTrVnHbZCW6ScmJ1irUKr+cMYnV4UTi52v5QNVcAByGy4hOB36ExyWxgzc49OWR EwcjdLAEtrt5YGYq82OyAPWVeCt3VlQ9jtrT9L4rv1LSs575OZ0D470AO0yjEmA2z3c6 qYsHYzXhhRnk59Y1ptTuo6Y73ApaGDR9acqERzRbh2DzQdCubqk0rGDhWnCqT5eEnNqy yApw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355259; 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=KXaft0q7HTLTnqLTqKKWcumjEw7waIyWWZ/AAC1m16M=; b=e+bHHIqLHXJzJH/78UCFVIFCtPVIACnm+b/DwAuOLC51Ab/FcjPx1JKQWiKksxkF4w HjoL93iHMW+AL5nqE/RWZ3q3VIF0Mx4T8mD6hz0cilIEJFKyauWJKmPUQADdopWi3YAu XEjQFbJOaPfP5NrXxWED/HonTT31Qdese6WaT8dN4pEgBiW63+psUSRMfV7qFFVDHjQU o8OkHbO0cvGZaT7qR8qJ8MKRxyO939CqQrNBDxhFlUhTap1MqexSO5HEKNp2TGY22IU3 l/x/4Fwd3cpA5ienfIL5CqgT3oCjWsNhji0uzwBKCPPBKwblLeCABbFJTDqXPRrzlVg6 og4w== X-Gm-Message-State: AO0yUKXa71LNyJ+/Q7vGCuqhUMmoIeOKsFAWm6fWTgpJHSbnv1uSpIpY 3u2auXpzfGv7wZvX93RYU0G5tKMXSZU= X-Received: by 2002:ac2:446e:0:b0:4dd:abb9:dae4 with SMTP id y14-20020ac2446e000000b004ddabb9dae4mr174422lfl.25.1679355258925; Mon, 20 Mar 2023 16:34:18 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:18 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:03 +0200 Message-Id: <20230320233408.134255-10-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 09/14] avcodec: add private side data set to AVCodecInternal 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: Gy9+FOJH0r9T This allows configuring an encoder by using AVFrameSideData. --- libavcodec/avcodec.c | 1 + libavcodec/internal.h | 7 +++++++ libavcodec/options.c | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index c110b19e08..3faabe77d1 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -403,6 +403,7 @@ void avcodec_flush_buffers(AVCodecContext *avctx) avci->nb_draining_errors = 0; av_frame_unref(avci->buffer_frame); av_packet_unref(avci->buffer_pkt); + av_side_data_set_wipe(&avci->side_data_set); if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME) ff_thread_flush(avctx); diff --git a/libavcodec/internal.h b/libavcodec/internal.h index f21101752d..c658e97313 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -168,6 +168,13 @@ typedef struct AVCodecInternal { * a boolean to describe whether context is opened or not. */ unsigned int ctx_opened; + + /** + * Set holding static side data, such as HDR10 CLL / MDCV structures. + * - encoding: set by user + * - decoding: unused + */ + AVFrameSideDataSet side_data_set; } AVCodecInternal; /** diff --git a/libavcodec/options.c b/libavcodec/options.c index f8fab164fb..acd3472fde 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -184,12 +184,17 @@ AVCodecContext *avcodec_alloc_context3(const AVCodec *codec) void avcodec_free_context(AVCodecContext **pavctx) { AVCodecContext *avctx = *pavctx; + AVCodecInternal *avci = NULL; if (!avctx) return; avcodec_close(avctx); + avci = avctx->internal; + if (avci) + av_side_data_set_wipe(&avci->side_data_set); + av_freep(&avctx->internal); av_freep(&avctx->extradata); From patchwork Mon Mar 20 23:34:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40744 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166328pzb; Mon, 20 Mar 2023 16:35:52 -0700 (PDT) X-Google-Smtp-Source: AK7set/myPmtBk3IM9UEew8059sqF1i+NnVsWydf0LIZYCxaEqG571LVwhrnxsNja12dwf8OBztk X-Received: by 2002:aa7:ce14:0:b0:4fb:4f1a:d4e1 with SMTP id d20-20020aa7ce14000000b004fb4f1ad4e1mr1130386edv.37.1679355351947; Mon, 20 Mar 2023 16:35:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355351; cv=none; d=google.com; s=arc-20160816; b=0xF3b9WKV+89ntqtSntHMTMpM6Jqki536Twg+nDIxdP6f8OaqK67U+tEQO4bmQgWhb Nf1+bzm4pb1nz+oI74GazZi+3o963Pt9txjF+r/umLyzUnnyL6p4etvulf7QCX5bNEI9 YdhL+z1lDURIWNkBvl0Pa9HTatazKaddjaiznAHvd5x71a59X23HpPEiZJmIBrtAVNrr mp8WR8+9+qgqQXPQA/hTDBxIaUjJo+y/HNVJtZoSq9cCrosR/r7Ci/Psxo9goyClDI77 LFKTx7H/vWnnNBFHD+YV4lBmHBlUp861kQoA5WcBbqzI3gtZZlAnmzJQn/hJgp1+E4jR pMqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=wF8OWb22NJ2Il+JlF4ytgbKNNgDPUjooEnxYQBLWdBA=; b=NOPaJ6UK++4fbDD3l6xcAifPmI2oii5i5lD126pUEM6ZTk6E2sD3W4JwGkhbWVOpGG 0sAfAmGfzM+kLyb3azCOyZ+fGqCxSKnlC1hhDZPjDy3GlfEnNt52gvfN1t3nXxkoffPh TPMNRj6wvVHj+LPFJQz4sPy++wwlAv5f5mn/oHGRjjx7riaeMEk8vHKzeQYg0sXn9sEb uCTwrHTWx7AE1zURdOtrUYU7PGoVYX0BmfknXjtyA8RQg8FdcDgqHKw78g4ilhjlmx81 UJq2t8NPhD23+Z/RS8T1mZ6sWxqtFS+4uXmA/numayyU7Jut6ZLV2OGo//cTOwYso8IL uWDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="EtAKX/qo"; 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 b21-20020aa7d495000000b0050039ffffd3si10728854edr.651.2023.03.20.16.35.51; Mon, 20 Mar 2023 16:35:51 -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=20210112 header.b="EtAKX/qo"; 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 EB1AC68C610; Tue, 21 Mar 2023 01:34:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3AEEB68C5C5 for ; Tue, 21 Mar 2023 01:34:20 +0200 (EET) Received: by mail-lf1-f53.google.com with SMTP id k37so4058353lfv.0 for ; Mon, 20 Mar 2023 16:34:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355259; 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=wqEiHWAPy1p0l6YclL/pipsyDtoQXMAEc9PWHorDbbU=; b=EtAKX/qoGpvvqQJmmyNREX8d2nTzN1dYkqSzwh/u2NCAMixi6eVBXDvka5Ha7vkFdX KpmF81HV6o6b601ED9r4zSEcV8oFXp+I6/VI7+KV+uc5KbNnVdocNEpuf/R+lxlMJ0AT PQsMtB+7iJy9fdK1Cr4mbgPPa4dmwJPDZfm1nzM9ZFk5hL4dajUt3XSkC9f3u7q7dZL1 keqO3S7qrbzXd2JB+V3dOFjK2IVEhBZ/anxJyC4zDVeI0UUhA44TnKKUgPLaIwbAPVC0 HN2W0v65x+piS8MIwk+wFymK2XvooyTb0T9+fTQ3J2IQGvq+7KVe7rt9/BuIjpAg1qfA atEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355259; 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=wqEiHWAPy1p0l6YclL/pipsyDtoQXMAEc9PWHorDbbU=; b=YjajNDgCS2nCDWvUENfjBWZq6GHQXsY/eg3DFHl0IZAfn2lm9/UYGk95huHlPxsbl1 sjrLbVGcatvw84OCroJBj+wlcQobbOwl+nh+ALVaXePcVxQO14D699rLbi3reARhlrej 3byGAWo2WfrJ9FDUXNFrFAxz6SCRW9eOqKhmPYW1S8m6iOgkx0G/IRVe9d3j+xndjWlw mCpy870+q8FWrJOhC47Rt9/G811dFsXLywa01+XkkCCqQTA4EBYvjcidVai6ZvK40aXk RIlMiSn6Bdd/+1wgj97WFUGwUYPcdUk6lz2ZyDbKUL56WFEhZgQL5Fp/U4BwuzHPdVc0 TVPA== X-Gm-Message-State: AO0yUKUsG3mmC3N3wjEUf3lU4OnHBDTB73BQxRKQALxSjTQDC0bpYcT3 A+Zq6QkQQfRvbDn41ZDwf3PI1SzeLX8= X-Received: by 2002:ac2:5e88:0:b0:4dd:d687:4ea7 with SMTP id b8-20020ac25e88000000b004ddd6874ea7mr217353lfq.36.1679355259369; Mon, 20 Mar 2023 16:34:19 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:19 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:04 +0200 Message-Id: <20230320233408.134255-11-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 10/14] avcodec: add function for setting avctx 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: 7OKFd7v3ITjY --- libavcodec/avcodec.c | 30 ++++++++++++++++++++++++++++++ libavcodec/avcodec.h | 12 ++++++++++++ 2 files changed, 42 insertions(+) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index 3faabe77d1..9ffff28d70 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -29,6 +29,7 @@ #include "libavutil/bprint.h" #include "libavutil/channel_layout.h" #include "libavutil/fifo.h" +#include "libavutil/frame.h" #include "libavutil/imgutils.h" #include "libavutil/mem.h" #include "libavutil/opt.h" @@ -719,3 +720,32 @@ int attribute_align_arg avcodec_receive_frame(AVCodecContext *avctx, AVFrame *fr return ff_decode_receive_frame(avctx, frame); return ff_encode_receive_frame(avctx, frame); } + +int avcodec_configure_side_data(AVCodecContext *avctx, + const AVFrameSideDataSet set) +{ + if (!avctx || !avctx->internal || !av_codec_is_encoder(avctx->codec)) + return AVERROR(EINVAL); + + { + AVCodecInternal *avci = avctx->internal; + AVFrameSideDataSet *dst = &avci->side_data_set; + + for (int i = 0; i < set.nb_side_data; i++) { + const AVFrameSideData *sd_src = set.side_data[i]; + AVFrameSideData *sd_dst = + av_new_side_data_to_set(dst, sd_src->type, + sd_src->size); + if (!sd_dst) { + av_side_data_set_wipe(dst); + return AVERROR(ENOMEM); + } + + memcpy(sd_dst->data, sd_src->data, sd_src->size); + + av_dict_copy(&sd_dst->metadata, sd_src->metadata, 0); + } + + return 0; + } +} diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 30f1d312f4..8f535a0cc8 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3223,6 +3223,18 @@ void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size); */ int avcodec_is_open(AVCodecContext *s); +/** + * Configure a side data set to an encoder AVCodecContext. With multiple + * calls new side data gets added in addition to the existing set of side data. + * + * @param avctx codec context to which to add side data + * @param set set of side data to add + * +* @return negative error code on failure, >=0 on success. + */ +int avcodec_configure_side_data(AVCodecContext *avctx, + const AVFrameSideDataSet set); + /** * @} */ From patchwork Mon Mar 20 23:34:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40745 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166397pzb; Mon, 20 Mar 2023 16:36:00 -0700 (PDT) X-Google-Smtp-Source: AK7set9Ecg4QBYG0fAbTura4VP75hNiaF8GHmtxrK4+aATMljezaJiCgflrq31mfznNyRTKraArh X-Received: by 2002:a50:fe88:0:b0:501:d190:b362 with SMTP id d8-20020a50fe88000000b00501d190b362mr1227046edt.27.1679355360112; Mon, 20 Mar 2023 16:36:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355360; cv=none; d=google.com; s=arc-20160816; b=HqwhHZNsXIPCn/VpD+UlJghMgMKV80t723nuFM7S0alyyThQvUpMi+dd4djLKsm7Bv BT8xEXKRzrkThAkL6L2pN2fkhPfNbF2VSvxQwLQEiJSVp7h4bgxig+YWsiazEBf7UA4F 7TuMZiDo3xt70h7e38zy07NfCoQtw+kzVQ/kHAho9d5EGzuMVssH9ktA+IPL0ltb5Kmp 0oWQwZV9OCtTyXM5DdFi638uHHtkYt4k4Sk95Fr/T4l+YEHuutpztbUWEH0ip1nCnAoY jrHZBH95b+19MkEyCWemxCS1J5BWZ+tvuKhHl7S+EOSV+bJEhNUcuW38ovubvRB/ie63 PZMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=By/hDab7I86am28jQJ7+0JjRlWqEoQqoaxLMAj8mlyQ=; b=OuGI84flrY8OblhrroDyksM4QF6k5+QYuXnrHw8Bu15EQ7B1u6cpxuUSgyGIdyhzj+ 2tqQQKdv9xhPl6v4ZC7aBxOggfHI99WI3hBJqBObRQ5ilQ/YQ6MUNCmJ7RtEwKFwcdI+ CzFmtNhgPgpapDFeaSUrGL4fIBX7Q0XTSId1U3mBYPV+QxlT7qrUFWh12wRWpfTRQkmR bXABGXNomTzeOej/GS9h4oWJR/odHiTpOaIWI08Wx9UDRziMyFEsI1BKn/+AiIaGmx/9 V6MgsxjpAInPQVbYJfR2dybNSioEy4YPCSCDZqWagi6YKR2FSFsRV/Qi/NCVv+3MQNIb KgvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=XQiTRpqn; 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 u19-20020aa7db93000000b004fd1ef9b95csi10761060edt.598.2023.03.20.16.35.59; Mon, 20 Mar 2023 16:36:00 -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=20210112 header.b=XQiTRpqn; 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 D942F68C61A; Tue, 21 Mar 2023 01:34:33 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9AF1F68C5BC for ; Tue, 21 Mar 2023 01:34:20 +0200 (EET) Received: by mail-lf1-f46.google.com with SMTP id j11so16966346lfg.13 for ; Mon, 20 Mar 2023 16:34:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355260; 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=HIHhhcLoeuwGYmA3Ul3mJDCl/dwdWo0cUdYFWFvN7fc=; b=XQiTRpqnDgR0kHuutB8OM4KnpENwTvWpCmQGKiXGoUl/NUDfvfp434JnhV0PsFQp8V NYcVy4zxqEveuKDEPOJkjzlNTbMLO2MMPjAKUZP6P6Ok/Ci4DfDtOPgtG0Dh5YlnEwUZ kmTqT00Kd4ar3kFe9qDeXuZqOEKhzwHr/OV2w+DitRqpZ1RBi+GPqyCu0XZ4AKIsshXi 2M+dKzBS1Y5yMIEtOttYjY61CvXSjgSLPDSqyHePt5EnAsHH8u7NnEwoi0BbV2pyQSQv CXA4pNIjNllWo2kfUzp5WW8vrmcS4H65jvPbWWD8nROiG3jfv/DuYtUg5JdzPiIz6c5t K0ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355260; 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=HIHhhcLoeuwGYmA3Ul3mJDCl/dwdWo0cUdYFWFvN7fc=; b=sKLerruuGTPwhL9wBaYgp+hsmJfVQ5bH7phbHnhboBycixWhsOHYqjKui6RvvXEipz kQJwEjgZyjDvqCjdgy/L+kTJTOkazCXmsDGRcBIPCGzJJMEilNpwaHp7emzdS1s8SD11 N1mDrfeKdQunYtfQLNhWrGEHVKYsyv5+tBcKhcev1cae24v/fhXpdETbLggWZRMlBBQL kBhAKEqACi73y/6Uwq0wacggNTs/qn8ZHqJuPIqQgS6PAGFu/Y6kMsws9YgAuezaZYEl ImdFYMvrcYEdzt2GjM+Vdz3ETJ8AdtTPckC25o33C2brTmKjlc4gQJM0xz/YfT7k5q+j cZsw== X-Gm-Message-State: AO0yUKUpxrCxosMHmes2qdVMiDvzBajMi49vna9iT8mpqBQN6XO6naCD /S2w43oGEhn4Nqft/5W89+Dhp6Z8dJQ= X-Received: by 2002:ac2:5639:0:b0:4e9:67ee:6383 with SMTP id b25-20020ac25639000000b004e967ee6383mr205889lff.2.1679355259811; Mon, 20 Mar 2023 16:34:19 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:19 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:05 +0200 Message-Id: <20230320233408.134255-12-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 11/14] ffmpeg: pass first video AVFrame's side data to encoder 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: ABcb0F0fQtLF This enables further configuration of output based on the results of input decoding and filtering in a similar manner as the color information. --- fftools/ffmpeg.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index d721a5e721..e12d6ce25d 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -3113,11 +3113,23 @@ static int init_output_stream_encode(OutputStream *ost, AVFrame *frame) av_pix_fmt_desc_get(enc_ctx->pix_fmt)->comp[0].depth); if (frame) { + int ret = AVERROR_BUG; + enc_ctx->color_range = frame->color_range; enc_ctx->color_primaries = frame->color_primaries; enc_ctx->color_trc = frame->color_trc; enc_ctx->colorspace = frame->colorspace; enc_ctx->chroma_sample_location = frame->chroma_location; + + if ((ret = avcodec_configure_side_data(enc_ctx, + (const AVFrameSideDataSet){ + .side_data = frame->side_data, + .nb_side_data = frame->nb_side_data + })) < 0) { + av_log(NULL, AV_LOG_ERROR, "failed to configure video encoder: %s!\n", + av_err2str(ret)); + return ret; + } } enc_ctx->framerate = ost->frame_rate; From patchwork Mon Mar 20 23:34:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40746 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166463pzb; Mon, 20 Mar 2023 16:36:08 -0700 (PDT) X-Google-Smtp-Source: AK7set87M7meMDV37XDdg43lTi+09it6CUFkXOTUIy4StTc/Tye1Ml7i7+zx2iPodUPAYMvlt7WB X-Received: by 2002:a17:906:9392:b0:932:66ca:faf4 with SMTP id l18-20020a170906939200b0093266cafaf4mr865772ejx.54.1679355368368; Mon, 20 Mar 2023 16:36:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355368; cv=none; d=google.com; s=arc-20160816; b=Kcj8cBjEj7oY78FTYTju1arMbYleSevRnbhjdXkhw1vaNjop9K3UXqEzVeH1S9ie1R lfrDIP2oq/A/W6QMHSocA7XrJEGwRCo9Is15nltyBMdoVdv9itu54BWD1BWcT6OtabmI Eg6kW4UF1CaInWDRs9IkPvaewa1sr5jvtyOy8frhX7iNMaPnz1CrWofMedWrGznNcZlR 7J3Wj9Eytn9RVW+SbqINuCBL5qZHWZlgva10AlL/LMwUl29duWybrJGYXBSRkAEy5Zlf VNCcr/uVSIDbFL2myiOmZCE/sMCDaJcyl+SmlO1aHw3dx/lrFXLpCOpAssNCblyAEg6q PFng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=Yd1L2E9iXzx6YYPEs9SwNdTRyk5SsD3BQCi/39xBjUU=; b=c5O2JTci5WQnBiGV14hZkIgvuIguYGEhcRK2zfHl3nvwqwHZmvoF7a9bE/1cbKLN8L u5Bb5d27hF9rQxtwHqpyH0juRL7qXOv2pwboko39Tr+AG5qy6mrLWRo0LB5fRmkBPqrm fSsJnBEpAxHVwVlE3WW02AeqFpsNaRrX3WGVQgxPLiMQepumCkJSVIW/+DrK2Tp6I0DO SRViofjHoPnzJhKk1RAzHt4tvP8Vl+S2l4ODUm356VWs3/Ug5UVx/JOZgorT1pCn1DHY wQ1CYPwhp7Y17bag1Z2djZo+9IYnbJseqaGapM01r1sMrEryIqmX4JWUIRm+Z0spePXe vWyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=nVLCeTXl; 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 hx24-20020a170906847800b0092b71bc8201si7509913ejc.921.2023.03.20.16.36.08; Mon, 20 Mar 2023 16:36:08 -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=20210112 header.b=nVLCeTXl; 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 D1A4668C623; Tue, 21 Mar 2023 01:34:34 +0200 (EET) 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 D16AE68C5BE for ; Tue, 21 Mar 2023 01:34:20 +0200 (EET) Received: by mail-lf1-f51.google.com with SMTP id s8so16728827lfr.8 for ; Mon, 20 Mar 2023 16:34:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355260; 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=0oLGlggx2gtbNiSzEYc1eoZ77ZKUCFpPuctE2y7NQJE=; b=nVLCeTXlJ8hgbIZsg6ZWKQWwiZvC+Sm3RAZsGnQGm1YBD7VazGO8EkhUa1IJT7bNEr 7e3gYe5iIA6uuEU0nG85QfEtUsPFq/zGeaF8Bs1Tmdodo9eUNqKsrWeitiCkrkANP+q8 +sB+Bf6JLmdvHw2SVhcmZ3ewoFMARY1Jevj8PfJtnBKstZVDhB8lYfoG6Sv6eAFMbxia XeeTghHuwKBUVEEreRBy902XDKqOOKimnnzsMH5DO8p9DW+1oamue67usd7inTHF8650 LkL+lNJmR5JPqRrJdEflPi/zoGLduf/F661gzbWzcyKK3evJSxJ8QyecQkxjt/uqUPqK VP6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355260; 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=0oLGlggx2gtbNiSzEYc1eoZ77ZKUCFpPuctE2y7NQJE=; b=GrFavu/F2dUX+Gu/RNVtpCGdD+Yg1aqo5RwwtptqhXQEe6QPyhQS+a3LX17ERZvdT/ 1/sP2neO44MfLjrGGQSPQkpCXF0WHazJxewc93fUOT1ZW6m5+waoD8kvDeYLo5puAggO sd7LzqvgAGX/nRKKcJLChYYgGixRt+gNb8GLkH0h8yZiKI5hnD6Ak0/wOGYHIfVAqEFE qdD1XgP+KfqLFBT2Y0z/YXY8rDWQI6gW6tRqJPfI7Ev+ZEU7kLnzm20HEnOsCXboB8ow ud8UN6uIZRu4c9ftNIq9SjkzxfE6YpYigdz3T/Eifm+Q1jG3AUhnBDhSqOnOleWmZ6cp 2yQg== X-Gm-Message-State: AO0yUKWy9rqk05GwV16Zq1WyJrnX/gZqDrZFP5EPuB2LwFSuswVt1/GX Krl27kw6oG/jy/6scLcEuuhRl9qEtGo= X-Received: by 2002:ac2:51a6:0:b0:4ea:c730:aabe with SMTP id f6-20020ac251a6000000b004eac730aabemr219707lfk.20.1679355260240; Mon, 20 Mar 2023 16:34:20 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:19 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:06 +0200 Message-Id: <20230320233408.134255-13-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 12/14] avcodec/libsvtav1: add support for writing out CLL and MDCV 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: Kcg343XKcP2K These two were added in 28e23d7f348c78d49a726c7469f9d4e38edec341 and 3558c1f2e97455e0b89edef31b9a72ab7fa30550 for version 0.9.0 of SVT-AV1, which is also our minimum requirement right now. In other words, no additional version limiting conditions seem to be required. --- libavcodec/libsvtav1.c | 70 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c index 9174e2753c..a3fb3535c9 100644 --- a/libavcodec/libsvtav1.c +++ b/libavcodec/libsvtav1.c @@ -24,9 +24,11 @@ #include #include +#include "libavutil/bswap.h" #include "libavutil/common.h" #include "libavutil/frame.h" #include "libavutil/imgutils.h" +#include "libavutil/mastering_display_metadata.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/avassert.h" @@ -146,6 +148,72 @@ static int alloc_buffer(EbSvtAv1EncConfiguration *config, SvtContext *svt_enc) } +static void handle_mdcv(struct EbSvtAv1MasteringDisplayInfo *dst, + const AVMasteringDisplayMetadata *mdcv) +{ + struct EbSvtAv1ChromaPoints *points[] = { + &dst->r, + &dst->g, + &dst->b, + }; + + if (!mdcv->has_primaries) + goto skip_primaries; + + for (int i = 0; i < 3; i++) { + struct EbSvtAv1ChromaPoints *dst = points[i]; + const AVRational *src = mdcv->display_primaries[i]; + + dst->x = + AV_BSWAP16C(av_rescale_q(1, src[0], + (AVRational){ 1, (1 << 16) })); + dst->y = + AV_BSWAP16C(av_rescale_q(1, src[1], + (AVRational){ 1, (1 << 16) })); + } + + dst->white_point.x = + AV_BSWAP16C(av_rescale_q(1, mdcv->white_point[0], + (AVRational){ 1, (1 << 16) })); + dst->white_point.y = + AV_BSWAP16C(av_rescale_q(1, mdcv->white_point[1], + (AVRational){ 1, (1 << 16) })); + +skip_primaries: + if (!mdcv->has_luminance) + return; + + dst->max_luma = + AV_BSWAP32C(av_rescale_q(1, mdcv->max_luminance, + (AVRational){ 1, (1 << 8) })); + dst->min_luma = + AV_BSWAP32C(av_rescale_q(1, mdcv->min_luminance, + (AVRational){ 1, (1 << 14) })); +} + +static void handle_side_data(AVCodecContext *avctx, + EbSvtAv1EncConfiguration *param) +{ + const AVFrameSideDataSet set = avctx->internal->side_data_set; + const AVFrameSideData *cll_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); + const AVFrameSideData *mdcv_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); + + if (cll_sd) { + const AVContentLightMetadata *cll = + (AVContentLightMetadata *)cll_sd->data; + + param->content_light_level.max_cll = AV_BSWAP16C(cll->MaxCLL); + param->content_light_level.max_fall = AV_BSWAP16C(cll->MaxFALL); + } + + if (mdcv_sd) { + handle_mdcv(¶m->mastering_display, + (AVMasteringDisplayMetadata *)mdcv_sd->data); + } +} + static int config_enc_params(EbSvtAv1EncConfiguration *param, AVCodecContext *avctx) { @@ -256,6 +324,8 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param, /* 2 = IDR, closed GOP, 1 = CRA, open GOP */ param->intra_refresh_type = avctx->flags & AV_CODEC_FLAG_CLOSED_GOP ? 2 : 1; + handle_side_data(avctx, param); + #if SVT_AV1_CHECK_VERSION(0, 9, 1) while ((en = av_dict_get(svt_enc->svtav1_opts, "", en, AV_DICT_IGNORE_SUFFIX))) { EbErrorType ret = svt_av1_enc_parse_parameter(param, en->key, en->value); From patchwork Mon Mar 20 23:34:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40747 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166532pzb; Mon, 20 Mar 2023 16:36:17 -0700 (PDT) X-Google-Smtp-Source: AK7set9UgAKmR36rtjbUxpv+NA2U9bC2mWFs2Lzk49L9VmZBaAXUX+FkUOntrxoFAvvesXGPfWkt X-Received: by 2002:a17:906:c04c:b0:92b:5c67:c660 with SMTP id bm12-20020a170906c04c00b0092b5c67c660mr809558ejb.69.1679355377148; Mon, 20 Mar 2023 16:36:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355377; cv=none; d=google.com; s=arc-20160816; b=MYSKViIyfSL2Bp1uSz0Y3UF2HxutS89dmGo17DfgFpW5gGHqhdzzk/jvbDH/UeowmE lCQUQiYJlvzHMlJqcOqs+sxzthruaAVoJ8aUEq6tBHWEnUZfaVV0Swax4KBMFrRPp/YJ I+jtQNivGkZaH6EgD1tTaiPZFCfu+bcyNSnKA76jNPT9cxRSNkm0HPbUD2qhBwzvwYss uFiqra7FBzEltJXj/QPGfv6HvpCKT3/ols4zacKKs5y6/HqjmDbVpmZSsE/xzsRJ4IS6 f7uhvmCdUWYobBRmoxbd3PTkO0XcHFTkoPxIpd+l8bDU/l2Cl3LaQV+ng9meyeoVUqUV 7kzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=8rV2zRcVWcWGldjSRLYHMULQ1KsX/nVbYZfddbFYYuQ=; b=URoFc3wLgCqnspchg6FgQqO85/QmKPTtq4S9c9EaXagmRuK36I0bPinG4D5L3GzCAL gG1h74io3uFpkrdnhe1uwczCJ/9vnRze5AU1VlmzDqSS9VPmakSV1IDUTayNEruIbuPU csNegobtnD8/midmaHWjqk+ZiXQas7iohm2knbcYWRHY+gfQrga9srqBp6gm8UCY6ena vbYEfAIdRGI5x44yGN9ZMdcaA2tIba/vyv3Z4Da4lDLWRus1gbEZEJFPCoqvXpMkdQqF cjk2UqiIWpK5AwROF7R9Km/cDF1tjjWrOifRda38xHCrS3viAwrXHTQP9teH5QAWbLiS dJNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=Y46ozT5m; 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 u11-20020a170906950b00b009332d9b2a96si3574135ejx.955.2023.03.20.16.36.16; Mon, 20 Mar 2023 16:36:17 -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=20210112 header.b=Y46ozT5m; 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 BA27C68C62E; Tue, 21 Mar 2023 01:34:35 +0200 (EET) 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 3C82A68C5AC for ; Tue, 21 Mar 2023 01:34:21 +0200 (EET) Received: by mail-lf1-f51.google.com with SMTP id q16so6159726lfe.10 for ; Mon, 20 Mar 2023 16:34:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355260; 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=SpAa/pjolt/eUYqhGtTYzdpdGq6gC/sLMVOV/jRTrsg=; b=Y46ozT5mdt/Y4ajZiJW6sOQSLXwGaDA+HU74HT+40Vt28sFnkHkpEVRLzVB84ah5k9 QuN18wHjNsckxA7WuaHjq6A+z6nd+MVVslc9wdsHvydo2f5akzuFhg2+33A95iTxYzBw Y2XFNbDr88MaSEY9GkaE/RUIpDbsj1W0J0hrEVHUZM+MOD8jkBH2Wmfwqm6MhgQvLr4G yxm2xZIhSd5H5ALpevEbtgcJXfsvEckesahhm72AL91VZJfwidNRouuxF2YrKMmeN766 nrCIwOse0S1yI+g9WkbPAQrMOmOnQ6SeuRFnlVIUxzJsf/Vhqw8KPbm//HTDMjr0vGUX oq3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355260; 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=SpAa/pjolt/eUYqhGtTYzdpdGq6gC/sLMVOV/jRTrsg=; b=UIO7TqoNWKdIqi5v+CVvArtcdptw/ou/0vReLwXTEMAxediFGEccldC2cJrqMuZYY0 738jw/BBh3UnVCMcA8gi/rYFTrGYo6rVOoDxzXjbLL0mvJKOJ53heIhg9ro8TnqNsDvI c1Xm3maGKW0Ol9Z2YklMRjspTlpLXWgVFWZk6P2xqhxyhyAUtKvFlAB+d8bWe7tv3VHx tuE0ebNAkvoiYhEXBWn5wnCNVqBm/NJtPXu0/8X1lshui/hxIayy3lQOTuzZv2vEB8G/ WcL5Z7uDkld25SHujZiP5+bAb3Z5hDGNr6zTbVgWwsmTUQISo0Vnp63Pmraslob/VZr9 sWEg== X-Gm-Message-State: AO0yUKWR/zU28wudnISfTaRLT2LSrMGf5LWvTrpF/pkgcmDooZUCQd88 Hk5xD8+YYnUPEO4+pQzKJvVgAXj14rY= X-Received: by 2002:a19:740e:0:b0:4e8:49ff:8df8 with SMTP id v14-20020a19740e000000b004e849ff8df8mr202347lfe.61.1679355260657; Mon, 20 Mar 2023 16:34:20 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:20 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:07 +0200 Message-Id: <20230320233408.134255-14-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 13/14] avcodec/libx264: add support for writing out CLL and MDCV 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: OmGU7oWWNenu Both of these two structures were first available with X264_BUILD 163, so make relevant functionality conditional on the version being at least such. Keep handle_side_data available in all cases as this way X264_init does not require additional version based conditions within it. --- libavcodec/libx264.c | 79 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 92828fabc3..83c870609a 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -25,6 +25,7 @@ #include "libavutil/eval.h" #include "libavutil/internal.h" #include "libavutil/opt.h" +#include "libavutil/mastering_display_metadata.h" #include "libavutil/mem.h" #include "libavutil/pixdesc.h" #include "libavutil/stereo3d.h" @@ -737,6 +738,82 @@ static int convert_pix_fmt(enum AVPixelFormat pix_fmt) return AVERROR(EINVAL);\ } +#if X264_BUILD >= 163 +static void handle_mdcv(x264_param_t *params, + const AVMasteringDisplayMetadata *mdcv) +{ + int *points[][2] = { + { + ¶ms->mastering_display.i_red_x, + ¶ms->mastering_display.i_red_y + }, + { + ¶ms->mastering_display.i_green_x, + ¶ms->mastering_display.i_green_y + }, + { + ¶ms->mastering_display.i_blue_x, + ¶ms->mastering_display.i_blue_y + }, + }; + + if (!mdcv->has_primaries && !mdcv->has_luminance) + return; + + params->mastering_display.b_mastering_display = 1; + + if (!mdcv->has_primaries) + goto skip_primaries; + + for (int i = 0; i < 3; i++) { + const AVRational *src = mdcv->display_primaries[i]; + int *dst[2] = { points[i][0], points[i][1] }; + + *dst[0] = av_rescale_q(1, src[0], (AVRational){ 1, 50000 }); + *dst[1] = av_rescale_q(1, src[1], (AVRational){ 1, 50000 }); + } + + params->mastering_display.i_white_x = + av_rescale_q(1, mdcv->white_point[0], (AVRational){ 1, 50000 }); + params->mastering_display.i_white_y = + av_rescale_q(1, mdcv->white_point[1], (AVRational){ 1, 50000 }); + +skip_primaries: + if (!mdcv->has_luminance) + return; + + params->mastering_display.i_display_max = + av_rescale_q(1, mdcv->max_luminance, (AVRational){ 1, 10000 }); + params->mastering_display.i_display_min = + av_rescale_q(1, mdcv->min_luminance, (AVRational){ 1, 10000 }); +} +#endif // X264_BUILD >= 163 + +static void handle_side_data(AVCodecContext *avctx, x264_param_t *params) +{ +#if X264_BUILD >= 163 + const AVFrameSideDataSet set = avctx->internal->side_data_set; + const AVFrameSideData *cll_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); + const AVFrameSideData *mdcv_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); + + if (cll_sd) { + const AVContentLightMetadata *cll = + (AVContentLightMetadata *)cll_sd->data; + + params->content_light_level.i_max_cll = cll->MaxCLL; + params->content_light_level.i_max_fall = cll->MaxFALL; + + params->content_light_level.b_cll = 1; + } + + if (mdcv_sd) { + handle_mdcv(params, (AVMasteringDisplayMetadata *)mdcv_sd->data); + } +#endif // X264_BUILD >= 163 +} + static av_cold int X264_init(AVCodecContext *avctx) { X264Context *x4 = avctx->priv_data; @@ -1031,6 +1108,8 @@ static av_cold int X264_init(AVCodecContext *avctx) if (avctx->chroma_sample_location != AVCHROMA_LOC_UNSPECIFIED) x4->params.vui.i_chroma_loc = avctx->chroma_sample_location - 1; + handle_side_data(avctx, &x4->params); + if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) x4->params.b_repeat_headers = 0; From patchwork Mon Mar 20 23:34:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 40748 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166589pzb; Mon, 20 Mar 2023 16:36:25 -0700 (PDT) X-Google-Smtp-Source: AK7set8pI8LdXRInj8WmyjkElBIAVtUW73Gr64ttAiKN/i/kuz6FsWWfeB+y48usHb84SdzTj7i8 X-Received: by 2002:aa7:d384:0:b0:4fc:d837:2c44 with SMTP id x4-20020aa7d384000000b004fcd8372c44mr1253766edq.35.1679355385741; Mon, 20 Mar 2023 16:36:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355385; cv=none; d=google.com; s=arc-20160816; b=jvnGaOJNyGKprJFQoUExvHu5n2IJzgSg2ADzOejeTZAC++u98P9HNq6sLxZgL7Y3EZ 5bvhWPD+efZCCznBhdMRmB2oLjACkxV9lBKo1A71uv3VyyPfyn96LFemrz/svumvCR1V RZL5agAXCcRbW+vpNkP9NC+6hsWZiRNtuTJFBFfHli0R3OJ2QFh0WmrOkCZgiyBp5Aqc eOkKO4b3qwgHWatcm5iwJKMjtxMU8IUPOa5P4x3Kpfjn5BGEr8jN+PvvxljDwTfJV+gd MFrT4/mIFrTIzYzDumVSq5qKJA50newL9Jo0/twpsuBBhS7lEMsyXjeYdZkryg+M+BnT CQ5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=KbIsKbp+SSy8BZy9y/NqNq/TSY1slC9v2AEDKbf1nxY=; b=rdMN6Gkw0MUuDx2kBnej77XIwAyEYwSrMDmsP8p10f36EX/vEGUDYMVfd2Gcv1q4ca riKECXOvwvm2WmkTmgm4BK/tCwAUgPB+YsJobZhzoX6kAeSNYEftk4xEeUgOK129AHwS wMZ5T3Lkg25QI7QLWLhSC/JTCfYSzSi9m5C1loDSiJnDi0Ip7hDzGcZWho506saQCQQT 62gWQHdgq2DgQjssxBt31gd+qIyrOEcxj/nknF/6pPNh6azIuPZmm6FT2jXyiiDMSUsQ 1/QO2n6bxcZd2/WCpKuaDRRyev8mpkYu0Y2nqZA/cKQHzEHBjmaQywQ2XL7BlvZnUX6v JtRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=fCFqiwje; 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 z5-20020aa7c645000000b004fc19199fd6si10687608edr.143.2023.03.20.16.36.25; Mon, 20 Mar 2023 16:36:25 -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=20210112 header.b=fCFqiwje; 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 A55BC68C631; Tue, 21 Mar 2023 01:34:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B99D568C5BA for ; Tue, 21 Mar 2023 01:34:21 +0200 (EET) Received: by mail-lf1-f49.google.com with SMTP id q16so6159751lfe.10 for ; Mon, 20 Mar 2023 16:34:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355261; 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=xq+da7dRC2sJCed1wnXK7YVe6AjhrLp3Y1p9FB4hC5A=; b=fCFqiwjeW70C4yyHwo7n+4UX3AB7Pu4yYK9tcKqoi0xo+qAK68L8AHIAnDdycuJAgj zfuEyglE4FhI83UTOzQt2uarpDWhVGj7N7gtG5TbdPYfsNv7MlYcvflyguuqTZUtQ6Dr 9y5iNm3vyjeeXyWswSK3kKKugyLYcGWYdNnsFE77IouVeHQJ5a2euVWCPeps7bgpw386 xtoSaiFGJJYkCpyM6HMVEQ0R5G9ZcpMlwKeM3xixqaxc8c4hAuSICdpPaQWhQvSwIRHH PJoegI+br2EYJxlU9X+nGYrcCMNu0QuLFv8mlxFGi83Jmp+wg59rtiq2K79GmUrqHM4p SQ/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355261; 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=xq+da7dRC2sJCed1wnXK7YVe6AjhrLp3Y1p9FB4hC5A=; b=xL+Lq8PDDyj9164zEVWjkci9LB588/VQcu20Jlc3ZB/8oYPm9NrLktmO7hpzZXL/lB gjF/t6+1reSgl/ibciWHzijxcvp7Z9tzx/RytTNLH3R7HEEbK+q3sqxNSwo7ma85lOim gO5LFp6br53Q9IcPt/9bODAP/NbWxasxhD2Lqt2fVhFsAUY5oChDw90A01eW+TSoqXjZ 5Y2anKCPSqawt/HWZl3gWx5T1TbGzyMp7gR3FcQUm1uI11mqVku0doDLrZAaEjRv80IM M7VTQe4MGOEjFU+QfPfF6cIKKKD853qawcOp4//bG3xVYb7Pfl5ye3Km/Jjwk62NcJHv nNNQ== X-Gm-Message-State: AO0yUKVARAHdn6UY6ygdvpBsUfVdV9OqI8CZSTZuO7OwZzTBC0W2Avoh D6CzscYY6rGOBSf82hkeA/rAaxga2xg= X-Received: by 2002:ac2:5598:0:b0:4e9:d5e5:3ff2 with SMTP id v24-20020ac25598000000b004e9d5e53ff2mr195273lfg.40.1679355261097; Mon, 20 Mar 2023 16:34:21 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:20 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:08 +0200 Message-Id: <20230320233408.134255-15-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 14/14] avcodec/libx265: add support for writing out CLL and MDCV 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: gUuTtcE5kzhf The newer of these two are the separate integers for content light level, introduced in 3952bf3e98c76c31594529a3fe34e056d3e3e2ea , with X265_BUILD 75. As we already require X265_BUILD of at least 89, no further conditions are required. --- libavcodec/libx265.c | 82 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index 420d0953af..497f31aa34 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -28,9 +28,11 @@ #include #include "libavutil/avassert.h" +#include "libavutil/bprint.h" #include "libavutil/buffer.h" #include "libavutil/internal.h" #include "libavutil/common.h" +#include "libavutil/mastering_display_metadata.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "avcodec.h" @@ -179,6 +181,79 @@ static av_cold int libx265_param_parse_int(AVCodecContext *avctx, return 0; } +static int handle_mdcv(AVCodecContext *avctx, const x265_api *api, + x265_param *params, + const AVMasteringDisplayMetadata *mdcv) +{ + int ret = AVERROR_BUG; + static const char *option = "master-display"; + AVBPrint buf; + av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC); + + // G(%hu,%hu)B(%hu,%hu)R(%hu,%hu)WP(%hu,%hu)L(%u,%u) + av_bprintf( + &buf, + "G(%"PRId64",%"PRId64")B(%"PRId64",%"PRId64")R(%"PRId64",%"PRId64")" + "WP(%"PRId64",%"PRId64")L(%"PRId64",%"PRId64")", + av_rescale_q(1, mdcv->display_primaries[1][0], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[1][1], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[2][0], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[2][1], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[0][0], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[0][1], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->white_point[0], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->white_point[1], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->max_luminance, (AVRational){ 1, 10000 }), + av_rescale_q(1, mdcv->min_luminance, (AVRational){ 1, 10000 })); + + if (!av_bprint_is_complete(&buf)) { + ret = AVERROR(ENOMEM); + goto end; + } + + if (api->param_parse(params, option, buf.str) == + X265_PARAM_BAD_VALUE) { + av_log(avctx, AV_LOG_ERROR, + "Invalid value \"%s\" for param \"%s\".\n", + buf.str, option); + ret = AVERROR(EINVAL); + goto end; + } + + ret = 0; + +end: + av_bprint_finalize(&buf, NULL); + + return ret; +} + +static int handle_side_data(AVCodecContext *avctx, const x265_api *api, + x265_param *params) +{ + const AVFrameSideDataSet set = avctx->internal->side_data_set; + const AVFrameSideData *cll_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); + const AVFrameSideData *mdcv_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); + + if (cll_sd) { + const AVContentLightMetadata *cll = + (AVContentLightMetadata *)cll_sd->data; + + params->maxCLL = cll->MaxCLL; + params->maxFALL = cll->MaxFALL; + } + + if (mdcv_sd) { + int ret = handle_mdcv(avctx, api, params, (AVMasteringDisplayMetadata *)mdcv_sd->data); + if (ret < 0) + return ret; + } + + return 0; +} + static av_cold int libx265_encode_init(AVCodecContext *avctx) { libx265Context *ctx = avctx->priv_data; @@ -333,6 +408,13 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx) return AVERROR_BUG; } + ret = handle_side_data(avctx, ctx->api, ctx->params); + if (ret < 0) { + av_log(avctx, AV_LOG_ERROR, "Failed handling side data! (%s)\n", + av_err2str(ret)); + return ret; + } + if (ctx->crf >= 0) { char crf[6];