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 677AE4B8A3
	for <ffmpegdev@gitmailbox.com>; Wed, 26 Mar 2025 23:26:28 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8E5F7687BD6;
	Thu, 27 Mar 2025 01:26:24 +0200 (EET)
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10olkn2036.outbound.protection.outlook.com [40.92.42.36])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 43F49687B95
 for <ffmpeg-devel@ffmpeg.org>; Thu, 27 Mar 2025 01:26:17 +0200 (EET)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=rk/oDnD/PPVfCbU7xy4FdHEY000vCkDGnz600z4q/XAMFCnM8K1ZP1+siU/mHqh4JRedygjVydARuR9yVyCUM8nhXXRWSwT7SbisVklaQhN2fJWFjWpj5JkaCTt1gtW1OdPZ92xx3XBYZ+IL3io/8ZWLc/k86sqi4lRo2rDJmodqur1cU7Fs4E960oXraMUgDBRVpZT34prPHVViMofWl9c3J1Ustu1YR3O70Qa02hfZckz/ZlRHD58WhZFw+OIWb1YWwwDiB0kkudVpZiHREOkUKik2TVT/jvRs6RdOfwTYxb8Q5z3EHH2hYKEG+zgDcCHcxNKa2M9WeFofiv8TbA==
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=CEhXKzs+i1sOdbp+kfhDSls8MhjlK4cIus1DPXQS1zs=;
 b=L+BJMJcXS2eq+WBntJdVBTz4wCD/Z9KGxN0zewHam8PjYf2VmgCSfxJEmC56EEItN6RGyIreo7xTpgpmWQ0uSonNeZ7LdObyZ7cmHLg3A8bNmq0f8yVb+NzJ3ohquqRTQztKr9DHop08HRDvMzFdQCdgQSMhZYKQ4PUKIJMStG0ZjFgcNNvVFvr55/ElQDjbX8R/B6ADPB53quDsr8BKQWZccLBI5zlKMPCX9XmRJhMJFXr/bXyxuCYLYc2qquZeSHv1x6UkXCy1idWN4wxW5XfRDVrLW3ITFpY0gLnftFFRwjW+OGqIXsoPliez+QQTSyLNWvex9FhX8o0OClI24w==
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=CEhXKzs+i1sOdbp+kfhDSls8MhjlK4cIus1DPXQS1zs=;
 b=ambqJkPt568Pt6e4xqb2cIOT7YdM90/4sDeCVzt93AEwV16B2WMYWDldAl/iVm0Ii59vKlJgTAhT6F5hAZePwr7FwG72duUcDYYsawAEMcEaq7XtL9GhF7a92kNe1l8qH10sIz/ymwRe+dCXK2HwI/MM/HOZRj2RaswUYKX+g7xgzdoTZF3ly3d4gvMu0vd9N2Bh0Q+YIs8VOuRiObnwLKhrQ1n2oYH/l1RsOUJlb4EbHzW3kWh+v4WiMVeCTzoErLcqHHVzGQURq1AJIljZ/FTNA1+WGJgvsCG5T+yaVDe8IIWiUqGuMGwTsFrcBOngFSCcB+uax858Rv9g9/IrBg==
Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by
 LV1P223MB1304.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:2b4::16) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8534.44; Wed, 26 Mar 2025 23:26:13 +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.043; Wed, 26 Mar 2025
 23:26:13 +0000
From: "softworkz ." <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+ABA9ftAAAAxWIw
Date: Wed, 26 Mar 2025 23:26:13 +0000
Message-ID: <DM8P223MB03652B84BC0DFD2216E4A35EBAA62@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
References: <DM8P223MB0365AB64AECCC838CF7CB41DBADE2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
 <Z92viSTlKU0La9Ua@mariano>
 <DM8P223MB036550001F5BE5292F899C3FBADB2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
 <Z+SFLmfGERrM6a70@mariano>
In-Reply-To: <Z+SFLmfGERrM6a70@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_|LV1P223MB1304:EE_
x-ms-office365-filtering-correlation-id: 0dc01278-17af-4f37-e466-08dd6cbd9936
x-microsoft-antispam: BCL:0;
 ARA:14566002|461199028|8062599003|19110799003|8060799006|15080799006|7092599003|10035399004|3412199025|4302099013|440099028|102099032|1602099012;
x-microsoft-antispam-message-info: =?iso-8859-1?Q?cbRsqdHcT7qhGKzxBxK21HgtSKrSNsLvSOqXojT8qTM+vrW4QvhqNhygdE?=
 =?iso-8859-1?Q?ikJCcZPy/PGByZf46HFWLWRTcucmbb5+I7vjMXJ+G4fYbdHWwFgELDyoN1?=
 =?iso-8859-1?Q?tWo8V6J9hHCgt2Jdmx2tvdL5TFF6IALscCZ0l6xe2ezH3oehPu8CAY6otX?=
 =?iso-8859-1?Q?PJDLuJkFxkmI50PJE69DL30Ha5K3g1mgeuWX0KD9fIp+8UMh0GQa8P7JEB?=
 =?iso-8859-1?Q?B+WRRFgZiIU60NHGw3m5uco7oy+0nQ+UU2xYgDbBkQAtAMGwhkM71kQmV8?=
 =?iso-8859-1?Q?W6Gw+iUDyvh8+oXYzXTIw1mvekR4c/yXweiaWa0lrNawq/DEfDub78uTu/?=
 =?iso-8859-1?Q?1KIhPUEkntTL+7YKCzhci0CcDoJyGFmZu3jL1zW/a16fjt2oSIphdyPXGK?=
 =?iso-8859-1?Q?+75apR+xqBt8BeK8G3pGFGTJ1q3CDWbZgLxzCZA/u6BmZbm4sTFCF47BDJ?=
 =?iso-8859-1?Q?Uql6PXAz+j5qiSKH/Bli5PfWSAXlCK2pDmvlvoP1sSW0UzdIk+1vo7ivac?=
 =?iso-8859-1?Q?LQBOpqJLmCJkgMmT63WGb2agk4dU0vvLPgthyFte2S1To/v79DUKdwIZjq?=
 =?iso-8859-1?Q?jT37GJSoNHfDYDQ/F4HNuwWYMRfnCw9hOndvm591lcDposdoReCjTKFSIJ?=
 =?iso-8859-1?Q?+Nqv0DcJBtZcsmskaSdT8t6Jf5XnO16H3sWySJ6OhmzirqbA7jjC0Q0iaM?=
 =?iso-8859-1?Q?59fuWz53Mc5HFtJNIeedcw3xWBIadjngKC18AR3FyS/PF4o/0SV0PqlvZU?=
 =?iso-8859-1?Q?0L6ZnqsodSfZO0smaXGTrCnATe64g+qbcJ0MC17Lj68L9Iq4k3Y3QViIBa?=
 =?iso-8859-1?Q?CMrdrm8WxooqOA4iS4mQJKGOli9FiDXkSO0wD319mwuEX67WM6JPdX0hbL?=
 =?iso-8859-1?Q?iObfWIOO0V4Be/7ErgTlOvJt/SI1CI428JmB9/OiBH9Jh4sjIDKOflVy/G?=
 =?iso-8859-1?Q?zJRJ8DRX+a2nSd65TohN6cJyfxhFt7trVyoYMu2a22hvFcQQWhWT2M/6jH?=
 =?iso-8859-1?Q?O8gix7ISkt7u4iX5czvLEwJQJJ+WVLKNUgQ6QVsUd1rIn5XN6fA0TbEj8j?=
 =?iso-8859-1?Q?+xs9Bh8xEJeUMObgRASKNOwfVfPX8y2ibDJT3JuoxKhbCY1dT11J4VNrT0?=
 =?iso-8859-1?Q?uGgXrcabDwnknf5XhFNBtB7hZUp7LNwWPp3a6r7fQdnyiwRc+YTQMXjLy6?=
 =?iso-8859-1?Q?/7itdVRjc353BHZJWb+FUo/GUvaeGEQ62iLtnx5ee3ZBmyA4vXewJixf4j?=
 =?iso-8859-1?Q?O/ig/kBYrOcE5u5PBAcHyTH6nHbYUjngnhYMUwMB0=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?mPmfKxNj7Li/krIUhHX1Co+sPrArdtdwp1q8ppjVMQjXoat+sTMIHcMMqR?=
 =?iso-8859-1?Q?j7ADBQ8TMqLLRiyTpp+tW614SCl/QNdwyxNYVRaRZXKv3CrXdV3ri69WDn?=
 =?iso-8859-1?Q?QwwCGwP/WVSr6mRnaIdGWpaYbo0pjhCEOA8W0QhBcWhHU0yIlmE0xifTHr?=
 =?iso-8859-1?Q?mP6vXtk83TI2J8JS2x3lBlAR+E/aglNOFI1tjPeaB9co0fzHy2d6Ox0SyK?=
 =?iso-8859-1?Q?ZmQfrHECBEBUzLqAmcdzeZbikz829dQER0er466rZhrdWA/Ga/lxjEZHTG?=
 =?iso-8859-1?Q?+o3f9vqnBFVWagP4fftFFuzVyxcImU6N6RWsks+lt14qgQbN7Nnvc4Qz8J?=
 =?iso-8859-1?Q?vDg+OY/voqRlAjzvpxddzToAjl1f+Rjebw+59z6EDHBs5Qi5I2aA5DLF7X?=
 =?iso-8859-1?Q?YtXTM3uwwZyVyCBN/FwyNMzXSW0/r/0vva4kXHb6f71qzIm+xwljUkJ7ID?=
 =?iso-8859-1?Q?ZB0N2tiMFCmH3hCTMsePICxtowVlgmTkbuKoCiyYZI8VrDCdxVsFOU55zP?=
 =?iso-8859-1?Q?dt4/GjNwo7zFipu58BU+Q8+xVXJFzEv3ACXe9JE3Ep9UBPk27O14S0fHLb?=
 =?iso-8859-1?Q?6Y5vtAGSiCWYYGaI5B4YsWRnhdbqG6UsXr8DYncH69Yu2uK2D7C7ecp9SE?=
 =?iso-8859-1?Q?akAffgwOU4AsJPaWQN7kfgM/A+Vx7iUeZxsfLKQT9zqUcTD+Djwzl7JTLf?=
 =?iso-8859-1?Q?beaGKQa+pBteU6x8kTEuqiAWAgdmi18Y0TmEI5xfPIY5OqYNlSFnRqFNYa?=
 =?iso-8859-1?Q?8rtefZ+pNcAkItZGh5Lx8vranXqVXhVLKwa1fUuty5e0gnr8gUakP/0Nyr?=
 =?iso-8859-1?Q?wk0RbHrFRW+Zq4guPMlp+yAQQVZ+jsKsb/jwZqSkFMVcCT7nOWV7o40slP?=
 =?iso-8859-1?Q?qh/cMc+CzDUV8ETIieG4h9DyNo4royuXnAF9iT+FZ2jrlYpu6e4x5emRGi?=
 =?iso-8859-1?Q?BcVzUSkAj56TqJtYOSyUEy8AeSQA7xbOIm/IQqOXGxJJUbNklzlFGpjwiA?=
 =?iso-8859-1?Q?Qpha1YdBCQHAJoN5qo1wBKIZh5+j8UdSV5OT+zRCHqyZWwqb1d6DOHy6nK?=
 =?iso-8859-1?Q?6tXX5r5JadlyiAsIIULyyhC0OTQfzdyMmUO8CTHNmkbttcZFHtnMBbjRMA?=
 =?iso-8859-1?Q?+/g0Ybqhdpv5an0iiyxsoF8sudRNJsGtNRYONbDLiGeYiUPXyWJepIiozN?=
 =?iso-8859-1?Q?3GbYl4pZ6Lc7mN99n8xj3rtbuohtQb8hscrwHatiqfRJJh6v47Qlz5D98k?=
 =?iso-8859-1?Q?jU8zGmYsDJcqWVDYjEdbq8G5WGOAmt6YoYN8oRx00=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: 0dc01278-17af-4f37-e466-08dd6cbd9936
X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Mar 2025 23:26:13.1499 (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: LV1P223MB1304
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/DM8P223MB03652B84BC0DFD2216E4A35EBAA62@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: Mittwoch, 26. M=E4rz 2025 23:53
> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [RFC] FFmpeg Execution Graph Visualization
> =

> On date Friday 2025-03-21 20:11:29 +0000, Soft Works wrote:
> [...]
> > > 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 that (and how) it can fit into the writer/textformatter
> > patterns, the result is rather simple and it requires only some
> > moderate extensions to the writer/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 link-producing sections they indicate the names of
> > the keys to use for building 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
> > "SectionContext" struct, which is a somewhat alternative
> > direction.
> =

> So basically a graph can be represented as a collection of subraphs,
> each subgraphs containing shapes, and links.

Yes, and link can exist at the top level (of nesting) and otherwise at any =
position in the document.


> > I kept it for the moment as suggestion because I didn't
> > know which ideas you have for the API to evolve, so that's just
> > something for discussion.
> =

> One of the possible uses is to expose the data printed by
> filters. E.g. detection filters are printing the information either in
> the stderr using custom formats, this should really be converted to
> something easier to consume (whatever formats for which you don't
> need a custom parser).
> =

> The metadata muxer also might benefit from using a text writer, to
> avoid again the need for a custom parser, and probably there are more
> use cases easy to spot.
> =

> So at some point we want to make this API accessbile from the
> libraries, that is to move them into libavutil. Again, it's fine to
> expose this at the tools level first so we can experiment and refine
> the interface before moving to a stable one.
> _______________________________________________

Yes, I see quite a number use cases as well.
It's still a work in progress, but I've set up a GitHub repo for documentat=
ion and as a place of interaction. It's not for ffmpeg code, but there are =
tests, examples and a documentation Wiki:

https://github.com/softworkz/ffmpeg_output_apis/wiki

(a number of things are still incomplete)


I'm also exploring a way for self-printing the data schema for each use cas=
e. On the repo Wiki there are Entity-Relationship diagrams for the FFprobe =
and the Graphs schema. I'll follow up with more details..

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