Über libvlc_log_set_file sagt die offizielle Dokumentation folgendes:
http://www.videolan.org/developers/vlc/ ... b357d71751
Ich habe Version 2.1.3. Die Funktion existiert also. Da ich dies vorerst nur zum debuggen benötige ist es auch nicht weiter tragisch, dass sie noch vergleichsweise neu ist.
Ich habe z.b. folgendes Beispiel (Python) gefunden:
Code: Alles auswählen
vlc.libvlc_log_set_file(instance, open("log.txt", mode="w"))
mode="w" bedeutet dort nur, dass der optionale Parameter den Wert "w" zugewiesen bekommt. Python Dokumentation:
http://www.tutorialspoint.com/python/py ... les_io.htm
Ich habe nun auch FileOpen() ausprobiert. Es kommt exakt die selbe Fehlermeldung, wie bei TFileStream.Handle ("77BF22D2 f00fba3000 lock btrl $0x0,(%eax)"). Es scheint also irrelevant, welche Variante ich verwende. Dagegen sieht die Fehlermeldung bei AssignFile() ander aus ("77C08E19 ff4014 incl 0x14(%eax)").
Es war aber noch ein Fehler drin: ich habe beim ersten Parameter die falsche Variable übergeben.
Code: Alles auswählen
LogStream:=FileOpen('xxxxxxxxxx\libvlc.log',fmOpenWrite);
LogStream2:=TFileStream.Create('xxxxxxxxxxx\libvlc2.log',fmCreate);
AssignFile(LogStream3,'xxxxxxxxxxxxxx\libvlc3.log');
Rewrite(LogStream3);
libvlc_set_log_verbosity(vlcInstance, 2);
//libvlc_log_set_file(vlcInstance,LogStream);
//libvlc_log_set_file(vlcInstance,LogStream2.handle);
libvlc_log_set_file2(vlcInstance,LogStream3);
alles was ich aus der c/python-Dokumentation weis deutet eher auf AssignFile hin. Aber
hier wird libvlc_log_set_file mit nem THandle deklariert:
Code: Alles auswählen
var
libvlc_log_set_file : procedure (
p_instance: libvlc_instance_t_ptr;
stream : THandle
); cdecl;
Dies würde auf FileOpen / TFileStream hindeuten.
Edit:
Ich habe nun auch mal versuch Pointer zu übergeben. Das Ergebnis ist exakt das selbe, wie mit AssignFile(). Schlussfolgerung: FileOpen() / TFileStream.Handle muss richtig sein.