From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 1261349142 for ; Tue, 5 Mar 2024 14:34:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 36D3868CFC8; Tue, 5 Mar 2024 16:34:12 +0200 (EET) Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0BAC468CA50 for ; Tue, 5 Mar 2024 16:34:06 +0200 (EET) Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a4515f8e13cso308796766b.3 for ; Tue, 05 Mar 2024 06:34:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709649245; x=1710254045; darn=ffmpeg.org; h=user-agent:in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:to:from:date:from:to:cc:subject :date:message-id:reply-to; bh=N//Ydh6A8rffwVc+nnLG/WA5VK3d8RzJ7oG21y+sw28=; b=brmXPFIQyJ+oBVwTXthhf052unB8z0CaSfkBBw2BHIgvy+Qr6WTPP/GTBdfznLTxsr ut+p58u3Fxw2r6z++e+6btqVB3JJ3GH6egt5DkBpoqZDSeyuAWAYWYO0b9r2AAWsQtel FrRsRpIfRPCJ+UftQhsGf93aIUHTf64xljrI+7CE76AVvyLQRFtZruzvXzC1zLBCdBQx UDJoJPp0kHwriR167J2nRHE+U+Wqu3IeaIGvY5PMrb8iPPQRXeUHk6AqrXr5Xch3cO2+ hade7ID0xfqAo/1H2r6f7Eyh5F4bKhevnJCOb7iVQC3rsCVx6uX66I4egDggd+cY3uO2 OrEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709649245; x=1710254045; h=user-agent:in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:to:from:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=N//Ydh6A8rffwVc+nnLG/WA5VK3d8RzJ7oG21y+sw28=; b=oahw0BV+QvCEOAj4nwS5Ryd1P+w5dlOBQBhullXxNEUrfR7fHasaPeJKw6eCIk3qSh 15/a5PgiFKv9eqgUftbByDLQG9w3v5fSAgDVFkOLz5BURO5BNWn2wHlWp862WH4kkYP0 qulfalAtS+A/q6SnYk+uz2L971u/S/sfWjjbH8SFD1N2mh/Js54KnubOHsnqxsrz+LGK nsmb3JTEmh/phd3MFA5xgz+PRxcFKkPfkImhFYDlqyIVD5PWf37t9Sc49d9pDz+SvK0Y qn2hmo84GVkaiZw6AOzVmCxCKCl/vkiLkxgkDx/S7SlO+YX27RTlgm7FH4xPQVSDEwNx d6eA== X-Gm-Message-State: AOJu0YwlTodyxVs96P8MsPbTsu2jRBeHX/OQC3eE2fwxMbr5i+Tye06p v0i/1Kd7KgngUFYI+vkevihCWhz04AZgPWXqFJ452pFkruphcevpATcL1Lxz X-Google-Smtp-Source: AGHT+IH8ImdE60BpfgqekI+/FtrTuEjOR4CgjnUHfTeKvoaC4wFDW92hNQmlmxKokpzdQLv5q5GGcw== X-Received: by 2002:a17:906:f8d6:b0:a45:2e21:c78c with SMTP id lh22-20020a170906f8d600b00a452e21c78cmr5083998ejb.13.1709649244664; Tue, 05 Mar 2024 06:34:04 -0800 (PST) Received: from mariano ([188.210.239.69]) by smtp.gmail.com with ESMTPSA id jw11-20020a170906e94b00b00a455d78be5bsm2133274ejb.9.2024.03.05.06.34.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Mar 2024 06:34:04 -0800 (PST) Received: by mariano (Postfix, from userid 1000) id 79115BFCDC; Tue, 5 Mar 2024 15:34:02 +0100 (CET) Date: Tue, 5 Mar 2024 15:34:02 +0100 From: Stefano Sabatini To: FFmpeg development discussions and patches Message-ID: Mail-Followup-To: FFmpeg development discussions and patches References: <20240304185646.9755-1-jamrial@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240304185646.9755-1-jamrial@gmail.com> User-Agent: Mutt/2.1.4 (2021-12-11) Subject: Re: [FFmpeg-devel] [PATCH] fftools/ffprobe: fix printing side data components and pieces X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On date Monday 2024-03-04 15:56:46 -0300, James Almer wrote: > Components and pieces are side data specific fields and there's a variable > amount of them. > They also need to be identified in some form, so print a type too. > > Signed-off-by: James Almer > --- > You can see the difference with > > ffprobe -show_frames -of compact $fate_samples/mov/dovi-p7.mp4 > ffprobe -show_frames -of xml $fate_samples/mov/dovi-p7.mp4 > > fftools/ffprobe.c | 33 +++++++++++++++++++++++++++------ > 1 file changed, 27 insertions(+), 6 deletions(-) > > diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c > index ac6b92f5d6..d3f27987a0 100644 > --- a/fftools/ffprobe.c > +++ b/fftools/ffprobe.c > @@ -244,6 +244,11 @@ static const char *get_frame_side_data_type(const void *data) > return av_x_if_null(av_frame_side_data_name(sd->type), "unknown"); > } > > +static const char *get_raw_string_type(const void *data) > +{ > + return data; > +} > + > static struct section sections[] = { > [SECTION_ID_CHAPTERS] = { SECTION_ID_CHAPTERS, "chapters", SECTION_FLAG_IS_ARRAY, { SECTION_ID_CHAPTER, -1 } }, > [SECTION_ID_CHAPTER] = { SECTION_ID_CHAPTER, "chapter", 0, { SECTION_ID_CHAPTER_TAGS, -1 } }, > @@ -258,10 +263,10 @@ static struct section sections[] = { > [SECTION_ID_FRAME_SIDE_DATA] = { SECTION_ID_FRAME_SIDE_DATA, "side_data", SECTION_FLAG_HAS_VARIABLE_FIELDS|SECTION_FLAG_HAS_TYPE, { SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST, SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST, -1 }, .unique_name = "frame_side_data", .element_name = "side_datum", .get_type = get_frame_side_data_type }, > [SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST] = { SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST, "timecodes", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA_TIMECODE, -1 } }, > [SECTION_ID_FRAME_SIDE_DATA_TIMECODE] = { SECTION_ID_FRAME_SIDE_DATA_TIMECODE, "timecode", 0, { -1 } }, > - [SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST] = { SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST, "components", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA_COMPONENT, -1 } }, > - [SECTION_ID_FRAME_SIDE_DATA_COMPONENT] = { SECTION_ID_FRAME_SIDE_DATA_COMPONENT, "component", 0, { SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST, -1 } }, > - [SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST] = { SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST, "pieces", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA_PIECE, -1 } }, > - [SECTION_ID_FRAME_SIDE_DATA_PIECE] = { SECTION_ID_FRAME_SIDE_DATA_PIECE, "piece", 0, { -1 } }, > + [SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST] = { SECTION_ID_FRAME_SIDE_DATA_COMPONENT_LIST, "components", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA_COMPONENT, -1 }, .unique_name = "frame_side_data_components" }, > + [SECTION_ID_FRAME_SIDE_DATA_COMPONENT] = { SECTION_ID_FRAME_SIDE_DATA_COMPONENT, "component", SECTION_FLAG_HAS_VARIABLE_FIELDS|SECTION_FLAG_HAS_TYPE, { SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST, -1 }, .unique_name = "frame_side_data_component", .element_name = "component_entry", .get_type = get_raw_string_type }, > + [SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST] = { SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST, "pieces", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA_PIECE, -1 }, .unique_name = "frame_side_data_component_pieces" }, > + [SECTION_ID_FRAME_SIDE_DATA_PIECE] = { SECTION_ID_FRAME_SIDE_DATA_PIECE, "piece", SECTION_FLAG_HAS_VARIABLE_FIELDS|SECTION_FLAG_HAS_TYPE, { -1 }, .unique_name = "frame_side_data_component_piece", .element_name = "piece_entry", .get_type = get_raw_string_type }, > [SECTION_ID_FRAME_LOGS] = { SECTION_ID_FRAME_LOGS, "logs", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_LOG, -1 } }, > [SECTION_ID_FRAME_LOG] = { SECTION_ID_FRAME_LOG, "log", 0, { -1 }, }, > [SECTION_ID_LIBRARY_VERSIONS] = { SECTION_ID_LIBRARY_VERSIONS, "library_versions", SECTION_FLAG_IS_ARRAY, { SECTION_ID_LIBRARY_VERSION, -1 } }, > @@ -2063,14 +2068,30 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi) > > for (int c = 0; c < 3; c++) { > const AVDOVIReshapingCurve *curve = &mapping->curves[c]; > - writer_print_section_header(w, NULL, SECTION_ID_FRAME_SIDE_DATA_COMPONENT); > + writer_print_section_header(w, "Reshaping curve", SECTION_ID_FRAME_SIDE_DATA_COMPONENT); > > print_list_fmt("pivots", "%"PRIu16, curve->num_pivots, 1, curve->pivots[idx]); > > writer_print_section_header(w, NULL, SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST); > for (int i = 0; i < curve->num_pivots - 1; i++) { > + AVBPrint piece_buf; > + > + av_bprint_init(&piece_buf, 1, AV_BPRINT_SIZE_UNLIMITED); > + switch (curve->mapping_idc[i]) { > + case AV_DOVI_MAPPING_POLYNOMIAL: > + av_bprintf(&piece_buf, "Polynomial"); > + break; > + case AV_DOVI_MAPPING_MMR: > + av_bprintf(&piece_buf, "MMR"); > + break; > + default: > + av_bprintf(&piece_buf, "Unknown"); > + break; > + } > + av_bprintf(&piece_buf, " mapping"); > > - writer_print_section_header(w, NULL, SECTION_ID_FRAME_SIDE_DATA_PIECE); > + writer_print_section_header(w, piece_buf.str, SECTION_ID_FRAME_SIDE_DATA_PIECE); > + av_bprint_finalize(&piece_buf, NULL); LGTM. Not clear if this is fixing a regression or if the format (at least for XML/compact) was always wrong. Thanks. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".