Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   LibVLC Header Übersetzung (https://www.delphipraxis.net/204133-libvlc-header-uebersetzung.html)

Peter666 27. Apr 2020 14:39

LibVLC Header Übersetzung
 
Hi,

hat jemand eine Idee wie ich dieses Makro nach Delphi übersetzen kann?

Code:
typedef int (*vlc_set_cb) (void *, void *, int, ...);

#define vlc_plugin_set(...) vlc_set (opaque,  NULL, __VA_ARGS__)
#define vlc_module_set(...) vlc_set (opaque, module, __VA_ARGS__)
#define vlc_config_set(...) vlc_set (opaque, config, __VA_ARGS__)

/*
 * InitModule: this function is called once and only once, when the module
 * is looked at for the first time. We get the useful data from it, for
 * instance the module name, its shortcuts, its capabilities... we also create
 * a copy of its config because the module can be unloaded at any time.
 */
#define vlc_module_begin() \
EXTERN_SYMBOL DLL_SYMBOL \
int CDECL_SYMBOL __VLC_SYMBOL(vlc_entry) (vlc_set_cb, void *); \
EXTERN_SYMBOL DLL_SYMBOL \
int CDECL_SYMBOL __VLC_SYMBOL(vlc_entry) (vlc_set_cb vlc_set, void *opaque) \
{ \
    module_t *module; \
    module_config_t *config = NULL; \
    if (vlc_plugin_set (VLC_MODULE_CREATE, &module)) \
        goto error; \
    if (vlc_module_set (VLC_MODULE_NAME, (MODULE_STRING))) \
        goto error;

#define vlc_module_end() \
    (void) config; \
    return 0; \
error: \
    return -1; \
} \
Peter

Rollo62 27. Apr 2020 15:10

AW: LibVLC Header Übersetzung
 
Habe jetzt nicht reingeschaut, die PasLibVlc kennst Du aber.
ODer fehlt Dir darin eine Übersetzung ?

Peter666 28. Apr 2020 09:54

AW: LibVLC Header Übersetzung
 
Danke für die Rückmeldung. Das ist da nicht drin. Mit den beiden Makros definierst du den Einsprungpunkt für Plugins in VLC. Ich wollte gerne ein eigenes Plugin zu Testzwecken schreiben. Wenn es nicht geht ist es auch nicht so schlimm.

Peter

himitsu 28. Apr 2020 15:13

AW: LibVLC Header Übersetzung
 
Das GOTO ist schon geil.

Das "EXTERN_SYMBOL vlc_entry" hab ich als DLL-Import verstanden, aber es wird doch nirgendwo verwendet, also nutzlos?

Delphi-Quellcode:
var
  module: Pmodule_t;
  config: Pmodule_config_t;


function vlc_plugin_set(Param1, Param2, Param3: irgendwas): nochwas; // nochwas = Result-Typ von vlc_set
begin
  Result := vlc_set(opaque, nil, Param1, Param2, Param3);
end;

...


function vlc_module_begin: Integer; // aber für mich sieht es mehr nach einem Boolean aus
{var
  module: Pmodule_t;
  config: Pmodule_config_t;}
begin
  config := nil;
  if vlc_plugin_set(VLC_MODULE_CREATE, @module) then // vom Gefühl her würde ich denken da fehlt ein NOT
    Exit(-1);
  if vlc_module_set(VLC_MODULE_NAME, MODULE_STRING) then
    Exit(-1);
  //Result := ; // vermutlich 0, aber da nirgendwo initialisiert/gesetzt, kannst auch Random benutzen  [EDIT] siehe nächste Zeilen

  {Result :=} vlc_module_end; // gut, da vlc_module_end IM vlc_module_begin definiert wurde, wird es wohl auch gleich mit aufgerufen
  Result := 0; // weil ich vlc_module_end als Prozedur hab, da es eh immer das Selbe liefert
end;

procedure vlc_module_end;
begin
  config;
  //Result := 0;
end;
Die Variablen module/config sollen wohl globale Variablen sein.
Sieht für mich zwar lokal aus, aber macht so keinen Sinn.

Außerdem knallt es in vlc_module_end wenn vlc_config_set nicht aufgerufen wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf