From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 0B0FE45F86
	for <ffmpegdev@gitmailbox.com>; Fri, 21 Mar 2025 20:27:40 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 17124687C17;
	Fri, 21 Mar 2025 22:27:37 +0200 (EET)
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11olkn2026.outbound.protection.outlook.com [40.92.18.26])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CC254687BAB
 for <ffmpeg-devel@ffmpeg.org>; Fri, 21 Mar 2025 22:27:30 +0200 (EET)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=P8kqzvqJDq+8VKO756fWI6+nYODj/NPy+2keUMsMK0pvYypSX4WH/I7+WnRDwUkmutxnW/tZ23e7DNidy3kWxWksJneW13nCx6oQuU9nhXjZyQbOURz7b2OMwXQHaaYa3xU4NzeKMHIbtOgEvYRz9+oIKb2RM7IZa6i3ptXVUl/wrfuMJls8DPgTh394D+cpcKbZ87DLJ74J6TeNCN0AlQx4VnC7Yy6THNAyX57SEDoBc6W4Fwko9eBT4B6Vae2Tw/BHmENEkxBErNk8wHODFL+hVQ7wUYZ55GULAnokVr5x9t2nC5T4PipD2gpnEe37kyOuSexNoqHwGAI9XkfbCw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=m/SJuTNa2bCPSE36iBdcAqTZ4iW1qHfeeLu12dtXV1M=;
 b=ERITG/uwuJ67CDmmqI/5FJRiVvfXELwhi8c0AmEnD10ea7TRr89eAJ6LXEtT6pzcZHQOCYZFSCOxaSz72bD6gAh9i3Gk83LiX+96kSGGzE49nVHSrP8kBf8GstB0k+QLAaSkQJc5c0swMeQ9YaIITbItjlOEeNvHOiUkpNQNzws+WyQX8+CB9urwWSkF/hAkVpvppqvQFU9OQCUIsYOHsDatIDUIrAks9EpUexzgOCO1f+7eqdgxVom11gTX0TgZ/dUY2di/GXhYvL8M6ssbOqVO0iT87iqhXC1KB8zttR8BYe5p+7v9xN4PBwladLL+Gw/LG+ecKN0K7HQZ9F0qiA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
 dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=m/SJuTNa2bCPSE36iBdcAqTZ4iW1qHfeeLu12dtXV1M=;
 b=lTlPYcRjaMR9C17LjQG9AIgdyf3hTAsMRuiHcIcmmsQi4KszlwJ1N6vNazZ7J2qrEa9r+MFRBhrrdZmCHzpXhlwQZxYVCKidovuUI5ay75VEOJq0RlRXlyK5nu1Mv3U639hg2gI59H+ttmY63Hu75YPc47eES7JgvSSnxx2S7jiixnVOkpehw21Asky+8wsXlwyAMDhgLal5lRMYnfXX42gviUwgsqIwaPDUou429e4qd6deB+qQAaYR/ZEgWYaEHmJU6t6E8zHzWKqlQchsD3hh91QBmtwtrO0UrnwW7zutoi5EaDjPuMp3OgT7H7fjXuSUzk06Q8utaZUdU4p0hg==
Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by
 SA1P223MB1030.NAMP223.PROD.OUTLOOK.COM (2603:10b6:806:3ad::8) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8534.36; Fri, 21 Mar 2025 20:11:30 +0000
Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
 ([fe80::bf09:8e9:b07f:98a7]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
 ([fe80::bf09:8e9:b07f:98a7%7]) with mapi id 15.20.8534.031; Fri, 21 Mar 2025
 20:11:30 +0000
From: Soft Works <softworkz-at-hotmail.com@ffmpeg.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Thread-Topic: [FFmpeg-devel] [RFC] FFmpeg Execution Graph Visualization
Thread-Index: AduXnlObQK5dsG0ZQZicU/lpURDPYQC8I6uAAADft+A=
Date: Fri, 21 Mar 2025 20:11:29 +0000
Message-ID: <DM8P223MB036550001F5BE5292F899C3FBADB2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
References: <DM8P223MB0365AB64AECCC838CF7CB41DBADE2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
 <Z92viSTlKU0La9Ua@mariano>
In-Reply-To: <Z92viSTlKU0La9Ua@mariano>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM8P223MB0365:EE_|SA1P223MB1030:EE_
x-ms-office365-filtering-correlation-id: dcc598ab-3f62-4ef7-89ed-08dd68b4916e
x-microsoft-antispam: BCL:0;
 ARA:14566002|8060799006|7092599003|15080799006|19110799003|461199028|8062599003|56899033|102099032|1602099012|440099028|10035399004|3412199025|4302099013;
x-microsoft-antispam-message-info: =?iso-8859-1?Q?e77EWjNyITE3cWp2RPI78gAa19wsD+ZqO6BWMEmLlSDqPZeGaQZT8hX2PC?=
 =?iso-8859-1?Q?fK32o6Tyqzp41cC814gtxoKtGCnfPSjP9iA2h/7kcHeEz09Z5Sg0740nFF?=
 =?iso-8859-1?Q?5ZNeV9bxsduZoaGuSfPHHhlbqPIiO1hxU3EJ6CLmoZhMH3Xv8/yptD1jQ1?=
 =?iso-8859-1?Q?h4PdRRdUm6DQ0cJkYfe/9m/WSGLFrDXOvdQB+cfWmmvSLd/mDNb29cso3E?=
 =?iso-8859-1?Q?0Vy8v6rdKwuEy1XEEmuEmn6WiycHjYeQA7hpaj8pFqtvjmXk6WdZYJfsyY?=
 =?iso-8859-1?Q?nztCylPI9/onSz7Y+qnm/bJU6EKdKD4eAjbMcMuuhDASBtP6Aty7fX9LY9?=
 =?iso-8859-1?Q?ywvNfUF385ibWMmxpiCS2u6e1uy5lpQFy/i6tml9X5pMNtlqnOzE9pSIDX?=
 =?iso-8859-1?Q?qDb+K4PEjr67PmuxpG/jTlBB8nt9oG3GDLjJLby1xXRPNmhIqGL2NnZ7sV?=
 =?iso-8859-1?Q?ACVdKTqYiDEH91/Bo1AlbW+duFD5SU8VGXDa8n9yGH1HwWSvoOa4+BERjx?=
 =?iso-8859-1?Q?LkCcLHU+mA6ypxo5EiHXckxpQTf4rNQimpV0OIIlP/pxkqcd7Y4yPEvzLJ?=
 =?iso-8859-1?Q?GmPu+Umz455uxanK3aKRxoPRVr6lfAn3aQKCQ0fTE2bbhGQtM6EiMdhlnC?=
 =?iso-8859-1?Q?wW6FELsKYXRTU82yEyQQZrQFvNlgIURZ6hkGeeYBeMAli00ru31DXgOCWd?=
 =?iso-8859-1?Q?8WiGNYP4FE3DTh54s1mScdQ0x3EwPbGS6IoSSiukeyopgxADHlgYKhuAxj?=
 =?iso-8859-1?Q?kDMEjjbtLVB8ZD5vPWOno963T0241lWv/ClFSed5VV0yHGxc6UJn+nNATa?=
 =?iso-8859-1?Q?2yWwAJ9rlMmarc7LhOHMb67kasrGMelN1rhv+uS9zcitQLKFfNkwOE6GBq?=
 =?iso-8859-1?Q?K5JeuSbaVoQuSRQC4MK4ej2j0e/HOD3QH2Yl3ECj93k86E63+ee3rU1f9E?=
 =?iso-8859-1?Q?4Vzr8QYqL43rimByfnsVrtxVG+KT8/syNlNsWdc3CaKjEliLXdLFh2VVFi?=
 =?iso-8859-1?Q?uQWK0Yyay/Pq5jMA/9pB9x9ve76mcwT4QITlymXtuqOXOcfjolnPqKMopA?=
 =?iso-8859-1?Q?dy2R6O8UVi/bXp2M2TgerUSflmcAn0J+gumKlfYc4zzJin3TSgJGWs04eC?=
 =?iso-8859-1?Q?I2mpuuynYSzpeUQVVsN11eqtnjsA1Y0/QVoKoEmiGWxUxPC60sAdXt8F7l?=
 =?iso-8859-1?Q?0uMrRDAs7TMD5vd3iZCU28VP/bAcIANmNGpnudSndohO6m7Rlmvl3hoiRp?=
 =?iso-8859-1?Q?tkwsgIlbuyWGSLwDpAiYz3Csf10V3X9bUP5b7zc04=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?sLYfLHL/mNSg0sMurR3GHKVHi9CS+45EGpE6ajf03kftUZ7A9Wj5nnSlXS?=
 =?iso-8859-1?Q?dbakn6lkHPqrwaE3bRjR7GznJfm+HUfGauE+91NyMSpJuDN9P6Goem0Wem?=
 =?iso-8859-1?Q?IGUsn3Yokj5lbhi3bdARDQrTPNLT7atGH565+L1QpMJyKxo81ltJ09slqV?=
 =?iso-8859-1?Q?/5/CwYDwH2R7nLm/7fbTsH5MSvEt/vrlFbeOKUYI7NplZ7OfeNnHSlIiu1?=
 =?iso-8859-1?Q?pmaAZUKGLnnJ3SnvCdlDMmWhUEakuiBv7K8qdwGe0NYZjf+uecPjhl5Sx0?=
 =?iso-8859-1?Q?eRKdWecpAX5vSpp/fE/MDcBX8VRqUER2csBuLmjpYjIn7CFnGIOJESqMb/?=
 =?iso-8859-1?Q?qymd4WLBbOd6reu2ThLCDMAlzTNFfzCKpjzgPwam15X5KZ2KkzaQmE27BU?=
 =?iso-8859-1?Q?R6pcu8J9uMwkeh125wuDOQzthXQbth6s/dbHehTIhL5QQIUvvPUW5FqPQq?=
 =?iso-8859-1?Q?PFP4UOsKIEIR8y2knb0WgmkmVt1YdO2Kh0hm4DCSuDl5u8uOvM2C++b8L9?=
 =?iso-8859-1?Q?jJg8/XHj1w+g/m/mT6syNBW5sUO/+eB2tmzOVhTcSgsRWhGOx3vqgrfjTP?=
 =?iso-8859-1?Q?JrjISgdBQ3EijPfPpCxfQD5XLzvGi43LRTbRS2+CT2nn1eTlu+UrmcnORX?=
 =?iso-8859-1?Q?7bpwDe89hEL3kT/MDVEuhAQPu3OmfNfHL1s5PyCtezUSB4OotFfbxKVvSd?=
 =?iso-8859-1?Q?3WbFjrWORU2CKt607p6JTnjQvWQazsls6yjjSjtoCw3T/CcYzsLgJjDkjN?=
 =?iso-8859-1?Q?oDs075lzpjEExH10DUaOhjgJCJw9pxO7yZBta2ZZJo/F1lNFjzyOh1RdYN?=
 =?iso-8859-1?Q?PtDrb32nfl4UJKLXCvuNSc/Ekerrx6VyKk4eaEcVvvNyPOaueKZ8vmLFuz?=
 =?iso-8859-1?Q?NBSJW9Ws7qufiHEOIDRPEOB44Y5ytYYLbS7rygJJIxXGIFyU5GY5RdJ1v6?=
 =?iso-8859-1?Q?W0qfYVyJYC7Jvuo7bi/RZ1kHchA7iE/sgGtpRUdVOrCpMoOrGf96YJseN5?=
 =?iso-8859-1?Q?AivZWJxO2YWcIWqzfWRg7krgL2CBk+bEqny18re2khbncm8Hnxb/yOp1lF?=
 =?iso-8859-1?Q?CqhOfxY7edmG6tkSEWusm4qI5qUyYwUzfFKqiRQTLdxp/QyBZU433yxTsR?=
 =?iso-8859-1?Q?5pd260ljK+mY0RyzaNQ7iFDcO3LCNHwdNe086FEDG7UYiotHHso+Cg6j9Z?=
 =?iso-8859-1?Q?Q+XcjfNv8F5OjfZGtCqrFmg9CeVrus7AcLA8QjSo9JUTcWqjztA6ahuyxb?=
 =?iso-8859-1?Q?kmu/EjvLnGzcHNHXDENv5CuCYhrbsiN/nZxuCw6Sc=3D?=
MIME-Version: 1.0
X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-1ff67.templateTenant
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: dcc598ab-3f62-4ef7-89ed-08dd68b4916e
X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Mar 2025 20:11:29.9241 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1P223MB1030
Subject: Re: [FFmpeg-devel] [RFC] FFmpeg Execution Graph Visualization
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/DM8P223MB036550001F5BE5292F899C3FBADB2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> Stefano Sabatini
> Sent: Freitag, 21. M=E4rz 2025 19:27
> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [RFC] FFmpeg Execution Graph Visualization
> =

> On date Tuesday 2025-03-18 02:32:13 +0000, Soft Works wrote:
> > Hello everybody,
> >
> > working on the subject of writing out filtergraph information
> > obviously implies the goal of being able to visualize that data in
> > some way. While I do have something for long, it's tailored for
> > specific workflows and is hardly useful for most.
> >
> > Anyway, it shouldn't be required to use once another software for
> > visualize the output. This decimates the usability for any such
> > feature by far.  Few days ago, I was thinking about ways for making
> > this feature really useful for everybody without needing to jump
> > through any extra hoops. We have that range of writers (now "text
> > formatters"), and so I wondered whether there isn't some text format
> > that is meant to directly represent a graph for visualization
> [...]
> > Examples
> >
> > I've created a Gist with some examples of the output here:
> >
> > https://gist.github.com/softworkz/a196b2d0e9e2df49f766abd92f508551
> >
> > (also includes a zip with html file examples)
> > Questions
> >
> > I'm curious what you think about it!
> >
> > - What's good, what's bad, what should be changed/improved?
> >
> > - What about the displayed information, should something be added?
> >
> > - I'm folding out the buffer source/sink filters to simplify the view,
> is that ok?
> >   Should the TRIM filters be excluded as well?
> >
> > - Since it's no longer just about filter graphs - what do you think
> about the term
> >   "Ffmpeg Execution Graph"?
> >   (other ideas welcome)
> >
> > - Does anybody have some complex command lines for me to test?
> >   (no need to include media files, I can try to replicate
> >   something similar)
> >
> =

> Thanks for working on this, from the examples it looks pretty amazing.
> =

> What it's not clear to me is how this builds up on top of text
> formatters, since they are meant to render a tree structure in a
> generic way. From this you can have a description of a graph, but then
> you need specialized ad-hoc logic to convert it to a graph format.
> =

> What am I missing?


Hehe, that's been a bit tricky indeed, but more in terms of figuring out th=
at (and how) it can fit into the writer/textformatter patterns, the result =
is rather simple and it requires only some moderate extensions to the write=
r/formatter APIs:


It is using a Mermaid Flowchart graph with only 3 kinds of elements:

- Shapes
  i.e. "boxes", can't be nested
- Subgraphs
  Container for shapes, can be nested
- Links
  connection from one shape to another


A simple graph with 2 shapes in a subgraph looks like this:

...
flowchart TD
 subgraph s1["Subgraph 1"]
        A("Shape A") --> B("Shape B")
  end
...

There's a link from A to B - but: it can also be written in a different way:

...
flowchart TD
 subgraph s1["Subgraph 1"]
        A("Shape A")
        B("Shape B")
  end

  A --> B
...

This does the same thing. The link definitions can be at a different place =
in the document - which is one of the key points to make it work.

Then there are three new section flags to denote subgraph, shapes and links=
 and two fields in the section struct (source_id_key, dest_id_key). For lin=
k-producing sections they indicate the names of the keys to use for buildin=
g a link. A section can also produce both - shapes and links when the flags=
 are set accordingly.
I also use another (existing) mechanism, which is the data object that can =
be provided on section start, only that it's a (publicly) defined "SectionC=
ontext" struct, which is a somewhat alternative direction. I kept it for th=
e moment as suggestion because I didn't know which ideas you have for the A=
PI to evolve, so that's just something for discussion.

Best,
sw

_______________________________________________
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".