[MPlayer-G2-dev] Re: G2 CLI/GUI and config API again - a little request.

Andriy N. Gritsenko andrej at lucky.net
Tue May 13 02:30:30 CEST 2003


    Hi, Arpi!

Sometime (on Tuesday, May 13 at  2:16) I've received something...
>>     Why I want that API? I want to add play_stream* to pl_instance_t so
>> we could have another config context for each stream and any parsing
>> function will know it's context - I mean vf_create_chain() from my
>> previous letter to add new filter in the filter chain. So config belongs
>> to play context and play stream has only one play context.

>no, forget this mess
>it's getting the same cross-dependency everywhere as it was with playtree
>code

    Where did you see cross-dependency? Tell me, please.

>don't mix player contexts (don't even define them yet, it's UI thing for
>sure) with underlaying layers and config api, please!

    Ok. How do you propose to pass what of streams do you want to
configure from UI to vf,etc. ? Using statics for it isn't acceptable -
you are one who wants to avoid statics. You may have many streams (for
example, 3 mixed videos and 2 audios from different files) and you have
to configure each of it. If you want to dislike all I've proposed there
then, please, tell me the other way. But we __have__ to pass some stream
pointer from UI/parser to vf_open_filter(). Or you want to give up the
multistreaming idea, eh?

>>     So with that API we will get what you want and UI will create chain
>> by itself. Each time any UI/parser can parse input in only one stream
>> context, isn't it? Initiating new filter will work in order:
>> 1) parse input in current stream context (directly from Gui or for
>>     current input file/sid from config parser);

    UI/config parser have to parse it's input, isn't it? What's wrong?

>> 2) load loadable plugin if need and get it's config structure;

    If we have that plugin loadable then how we can call open() if we
don't dlopen() it? What's wrong?

>> 3) call vf_create_chain() - it is vf_open_filter() but for plugin API;
>> 3a) vf_open_filter() calling vf->open();
>> 3b) open() creating new params instance with defaults or previous
>>     settings (in depending of config variable alike "persistent_filters",
>>     some people will like one way, some other);
>> 3c) open() calling cfg_parse_config() for that play_stream and own params
>>     instance;
>> 3d) cfg_parse_config() setting parameters for instance;
>> 4) continue parsing... :)

>what a mess

It's what _you_ said before. Cite with comments at right:

----
vf_foobar_open(vf_instance_t* vf, void* args){          <-- 3a)
    vf->priv=calloc(sizeof(priv_st),1);                 <-- 3b)
    if(!cfg_parse_args(vf->priv,config)) return 0;      <-- 3c) 3d)
    ...
    return 1;
}
----

What's wrong when I've written it in words?

>> Runtime change of parameters:
>> some UI calls vf->control(vf,VFCTRL_SET_PARAMS,NULL); that control() call
>> will do:
>> 1) create new copy of vf->priv;

>PLEASE!
>it's called priv (_P_ _R_ _I_ _V_) as it's from _PRIVATE_.
>It means it's not your business, you don't even know what is it. ok???
>forget priv, please.
>priv may contain pluginspecific data types, big arrayes, whatever.
>don't mess it with configure, ok?

OK, OK, I don't mind if we create new type of structure and add it in
vf_instance_t. I've wrote vf->priv since vf->priv _already_ have the
configuration variables _everywere_. So don't blame me for that, please.

>keep config layer separated, as we defined as one of teh main goals.

    Without any API at all? :)))))))  May be we have to forbid any UI or
parsers for G2 at all? :)))))))  Gui is the worst! Commandline deprecated
too! Nothing is the best! :)))))))

>ie. pass a clean, config-variables-only structure to the open() functions,
>and let them decide what and how they will use from it.
>forget messing with priv, forever.

>>     I hope it's the best way that can get rid of statics at all. Arpi,
>i doubt

    I don't doubt, sorry.

>> please, correct all what you don't like in these structs and that scheme
>== rewrite it

    But how? You seem to dislike everything now. ;)

>> (but I hope that scheme is already what you wanted :) and I will apply it
>not really...

>sorry.
>it seems we should (re-)discuss the goals and possible implementation ways
>first. probably all goals cannot be reached at the same time, so we have to
>decide which ones are less important, and remove them.
>then define how and what to implement to reach the rest.
>this ad-hoc coding doesm't seem to perform well...

    Tell all goals you see. I already don't know what you want to see
from config API at all, sorry. I wrote what I read from you - you calling
it a mess, I proposed to have strict API - you say all API is parser
specific. I don't know what you want. Sorry. :(
    I'm afraid we will never get good API that way... :(

    With best regards.
    Andriy.



More information about the MPlayer-G2-dev mailing list