[MPlayer-G2-dev] Re: Limitations in vo2 api :(

Andriy N. Gritsenko andrej at lucky.net
Sun Dec 21 14:52:49 CET 2003

    Hi, D Richard Felker III!

Sometime (on Saturday, December 20 at 21:53) I've received something...
>> As I said before chains must be supported by application only so it's not
>> layer's care to keep all subchains in mind. :)

>Actually the layer needs to know about the whole thing to make
>rendering work. It has to walk the whole chain to get source frames as
>filters need them.

    Each filter has all it's own previous nodes so it'll just pull out
frames from those and it's all. It even don't need to know if previous
nodes are filters or decoders. So layer has no needs to know all chain
structure. :)

> Also you forgot to consider the most fun example:

>-------> vf_subfilter ------>
>          |      /|\
>         \|/      |
>   your_favorite_filters_here

>Where vf_subfilter is a filter that processes a subsection of the
>image with whatever filters you hook up to its auxiliary output/input.
>This example shows why it's not good to think in subchains/subtrees:
>the filter pipeline can have loops!

    Filter vf_subfilter may have loops only if it may mix main input with
looped input so we free to call link_video_chain(vf_instance,vf_instance)
i.e. prev node == next node. It will work anyway since all I said doesn't
deny it. :)

>>     But what I said before is just simple structure for application's
>> developers so we prevent all level-specific data from touching by
>> application and application's developers will learn only common API. :)

>They have to be aware of the nodes anyway, since they're loading them,
>providing gui panels to configure them, etc....

    Exactly what I said - application must be aware about common part of
nodes, not about layer-specific part. It will know nodes pointers itself
and keep all link structure in some own form (it may be some tree and so
on in GUI or anything), independently from nodes structure. Why it must
be so - tree of chains may contain not only nodes pointers but some GUI
info and may be much of other. And layer-specific part (that including
node-to-node pointers) must not be touched by application. But on other
hand, full structure (parallel chains, crossed chains, mixed or splitted
chains, sources and destinations) has no need to be known to layers. So
it's all I think. I hope I wrote it understandable. :)

    With best wishes.

More information about the MPlayer-G2-dev mailing list