Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Niklas Haas <ffmpeg@haasn.xyz>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] SWS cleanup / SPI Funding Suggestion
Date: Sat, 14 Oct 2023 19:24:51 +0200
Message-ID: <20231014192451.GB62524@haasn.xyz> (raw)
In-Reply-To: <20231014170036.GV3543730@pb2>

On Sat, 14 Oct 2023 19:00:36 +0200 Michael Niedermayer <michael@niedermayer.cc> wrote:
> Well there are 2 further aspects with that.
> 
> The first one is bluntly put. If you dont understand the old code, then
> you probably are not qualified to write better code.
> People tend not to successfully improve things they dont understand.

I have a deep understanding of colorspaces and the necessary conversion
steps between them, and am also in a good position to integrate
libplacebo as a possible backend.

However, I do not have a good understanding of CPU/SIMD code, nor the
various swscale internals, beyond the cursory investigation I needed for
some recent swscale bugs I encountered. So I'll definitely need some
help along the way to fully understand those swscale internals.

> The 2nd issue is, ATM, i maintain swscale. If iam involved in the new
> effort and understand it either because of that or because it has some
> similarity then i can continue to maintain swscale. If its totally
> different and i was totally not involded then i also will not maintain
> it obviously.

I think it would be possible to join forces to the extent needed to
arrive at a satisfactory result. At the very least, I have very limited
experience working with "irregular" packed formats.

Obviously, my intent is not to blanket discard the swscale internals. It
has years and years of optimized kernels for various platforms just
lying around, wanting to be used. Hence my proposal of redesigning the
high-level logic, rather than the low-level details.

> This is something to be especially aware of in case the cleanup/new
> code would be done by someone who comes, does it and leaves. you
> could end up with nicer code thats then unmaintained.
> 
> PS: whats the real issue with sws ?
> it evolved out of a piece yuv->rgb converter from a video player.
> It evolved from that and stuff was added into it.
> This is a similar situation to why ffmpeg.c needed cleanup

Yes, it amounts to the usual disentangling of various special cases and
branches into one top-down control flow that knows about all of these
special cases and fast/slow paths to begin with.

My goal is to arrive at a place where we have one single code flow that
looks something like:

1. Settle the complete descriptions of the source and destination format/csp
2. Establish a list of operations to get from A to B, taking into
   account user settings
3. Determine and dispatch the best available functions for each operation

With the necessary code separation and/or layers of abstraction in place
to make this design manageable. In particular, steps 1 and 2 should be
expanded to include things like conversion between primaries, conversion
between HDR and SDR, conversion between YUV/RGB, and so on.

In particular, I also want to eventually add the ability to plug "Apply
a 3DLUT" in as a possible operation type for colorspace conversion,
probably by sharing the code that is already written for vf_lut3d.
_______________________________________________
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".

  reply	other threads:[~2023-10-14 17:24 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-13 19:19 Michael Niedermayer
2023-10-13 20:30 ` Vittorio Giovara
2023-10-13 21:23   ` Lynne
2023-10-13 22:02   ` Michael Niedermayer
2023-10-13 22:34 ` Niklas Haas
2023-10-13 22:42   ` James Almer
2023-10-13 22:54     ` Niklas Haas
2023-10-13 23:00       ` Vittorio Giovara
     [not found]         ` <8A960BE2-8364-4AF8-A9B5-E0551C19F9DF@cosmin.at>
2023-10-13 23:16           ` Cosmin Stejerean via ffmpeg-devel
2023-10-14 14:19             ` Kieran Kunhya
2023-10-14 17:00               ` Michael Niedermayer
2023-10-14 17:24                 ` Niklas Haas [this message]
2023-10-15 14:36                   ` Michael Niedermayer
2023-10-14 17:41                 ` Kieran Kunhya
2023-10-14 19:38                 ` Vittorio Giovara
2023-10-14 17:26               ` Anton Khirnov
2023-10-14 15:45             ` Michael Niedermayer
2023-10-14 17:53 ` Stefano Sabatini
2023-10-17 14:36   ` Michael Niedermayer
     [not found]     ` <430D0C5B-53A8-4920-B99A-D8BAD816D715@cosmin.at>
2023-10-17 16:58       ` Cosmin Stejerean via ffmpeg-devel
2023-10-18 21:53         ` Stefano Sabatini
2023-10-17 18:33   ` James Almer
2023-10-17 18:50 ` Rémi Denis-Courmont
2023-10-17 21:57   ` Michael Niedermayer
2023-10-17 22:10     ` Michael Niedermayer
2023-10-18 16:30     ` Rémi Denis-Courmont
2023-10-18 22:12       ` Stefano Sabatini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231014192451.GB62524@haasn.xyz \
    --to=ffmpeg@haasn.xyz \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git