Hello all,

I've got some experience in this particular area, so figured it might
be helpful to offer another voice.

Kieran makes a number of excellent points, and I largely agree with
his discussion of the problem space.  It's an intrinsically difficult
problem.  The data arrives on multiple sockets, leading to all sorts
of opportunities for timing behavior and reordering issues.  And, in
my experience, I certainly agree with Kieran's assertion that the
quality of implementations vary wildly across both open source and
commercial products (e.g. hardware encoders and transcoders) that
attempt to implement the standard.  Not to mention the
interoperability issues when receiving streams from all these
different products.

Building an implementation where you are confident that it does it
"right" generally means having a large corpus of test vectors that
exercise edge cases both in delivery timing and packet loss, assessing
the result to determine which packets should have been recoverable
versus what was actually recovered.  This is considerably beyond the
sorts of tests ffmpeg typically does in their FATE suite (which AFAIK
doesn't attempt to validate libavformat protocols at all).

That said, I don't necessarily think we should let "perfect be the
enemy of good" and outright reject a proposed implementation that has
been reported to work in many use cases.  The ffmpeg project has no
shortage of code that doesn't handle every possible edge case and that
I wouldn't trust for 24x7 usage, but that doesn't mean it shouldn't
exist.  It's a good starting point and can be improved over time.

I would encourage Romain to look at upipe's implementation, as it's
always good to look at a mature and well-exercised stack if such a
thing already exists and is publically available.

Marking it as experimental seems like a reasonable ask, given that
it's brand new code.  That would both allow it to be evaluated/tested
by those who care about it, and there's a base onto which to submit
fixes/improvements.  And, like with anything else, if it's determined
that the implementation works very poorly and/or it gets abandoned, it
can always be dropped from the tree.

Yes, I agree with Kieran that Prompeg FEC is annoying and it would be
great if everybody would just move to newer/better protocols.  But
there are still cases out there where FEC is useful and there is a ton
of legacy equipment out there that does FEC but not those newer
protocols.  For the most part this isn't really about designing new
workflows but rather interoperating with existing workflows/equipment.

Devin


On Fri, Jan 17, 2025 at 12:08 PM Michael Niedermayer
<mich...@niedermayer.cc> wrote:
>
> Hi Kieran
>
> On Fri, Jan 17, 2025 at 04:05:09PM +0000, Kieran Kunhya via ffmpeg-devel 
> wrote:
> > On Fri, Jan 17, 2025 at 2:48 PM James Almer <jamr...@gmail.com> wrote:
> > >
> > > On 1/17/2025 11:42 AM, Nicolas George wrote:
> > > > James Almer (12025-01-17):
> > > >> Don't assume he will not extend the implementation. Ask him instead 
> > > >> what he
> > > >> plans to do in the long term.
> > > >> And this could also be marked as experimental, in which case if 
> > > >> abandoned or
> > > >> proven unstable for several real world cases, it can be removed or 
> > > >> disabled.
> > > >
> > > > You were asking for proof that corporate-style mindset harms the
> > > > project, you have one right here: “we do not want this new feature
> > > > because it could mean bad PR” is one of the leitmotivs that have pushed
> > > > the project towards stagnation since the GA has had influence.
> > >
> > > I don't see how the GA has anything to do with this when we're talking
> > > about one person, but you're not wrong in that rejecting a feature for
> > > being incomplete is not ideal.
> > > The codebase is not lacking in partially implemented features and
> > > protocols, and as long as it's stable, is not invasive, and gracefully
> > > rejects unsupported scenarios, IMO it should be ok. But Kieran's
> > > requests should be addressed. And like i said, marking it as
> > > experimental is an option.
> >
> > Just to add here what I wrote on IRC. FEC *by definition* is meant to
> > be used on lossy and otherwise problematic networks.
> > Therefore it cannot crash, infinite loop etc. Nor can it be "elegant".
> > The reality is it has heuristics to deal with the real world like any
> > loss tolerant protocol. This is in addition to the other issues this
> > implementation has.
>
> If there are issues in a patch, the best is to point the patch author
> to these issues with sufficient detail so he can correct them.
>
> thx
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Freedom in capitalist society always remains about the same as it was in
> ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".



-- 
Devin Heitmueller, Senior Software Engineer
LTN Global Communications
o: +1 (301) 363-1001
w: https://ltnglobal.com  e: devin.heitmuel...@ltnglobal.com
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to