Support Request #2747
closedRetrieve name of dat file
Description
Supportanfrage:
Hallo,
habe Probleme bei der Verwendung der cMacroResolver Klasse. Ich möchte den DAT-Dateinamen aus dem Macro $HD_PLAYER_FILE$ innerhalb eines Filters auslesen, bekomme aber immer nur einen leeren String zurück. Habe auch die Variante mit $(HD_PLAYER_FILE) versucht ohne Erfolg. Verwendet wird der cMacroResolver innerhalb der Run(...) Methode des Filters, im speziellen dann wenn der Harddiskplayer das EC_PlayPreFileOpen Event feuert. Auch die Registrierung eines eigenen Macros funktioniert nicht. Hierfür habe ich die Beispiel Implementation cMacroResolverImpl aus den ADTF Examples verwendet.
Init Funktion des Filters
if (eStage == StageFirst) { RETURN_IF_FAILED(_kernel->SignalRegister(static_cast<IRunnable*>(this))); pResolver = new cMacroResolverImpl; RETURN_IF_FAILED(_runtime->RegisterObject(pResolver, OID_MACRORESOLVER, IRuntime::RL_Kernel)); }
Run Funktion des Filters
if (code == IEvent::EC_PlayPreFileOpen) { const tChar* MACRO_HD_PLAYER_FILE_NAME = "$HD_PLAYER_FILE_NAME$"; const tChar* MACRO_USS_HD_PLAYER_FILE_NAME = "$USS_HD_PLAYER_FILE_NAME$"; tChar filename[265]; tChar ussFilename[256]; RETURN_IF_FAILED(pResolver->ResolveMacros(MACRO_HD_PLAYER_FILE_NAME, filename, 256)); RETURN_IF_FAILED(pResolver->RegisterMacro(MACRO_USS_HD_PLAYER_FILE_NAME, "abcd", IMacroResolver::MRF_Overwrite)); }
Ziel: Ich möchte den Namen der Aufnahme-DAT-Datei vom Playback-DAT-Dateinamen abhängig machen, aber nicht exakt verwenden z.B. abcd_split_000.dat -> abcd.dat
Vielen Dank für eure Hilfe.
Mit freundlichen Grüßen,
Rick Vogel
Lösung:
Möglicherweise wird es im falschen runlevel aufgerufen, wodurch es dann leer ist.
Weitere Informationen zu Macros:
https://support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/page_adtf_macros.html
Related issues