Und dies ist der Fall, weil bei GTK2-LCL irgendwo intern ein g_main_loop_new() oder was ähnliches vorhanden ist.
Code: Alles auswählen
procedure message_cb(bus: PGstBus; msg: PGstMessage; user_data: Pointer);
var
s: string;
form: TForm1 absolute user_data;
begin
WriteLn(form.Name);
WriteLn(GST_MESSAGE_TYPE(msg));
WriteStr(s, GST_MESSAGE_TYPE(msg));
form.Memo1.Lines.Add(s);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
pipeline: PGstElement;
bus: PGstBus;
begin
gst_init(@argc, @argv);
pipeline := gst_parse_launch(PChar('filesrc location="/home/tux/Schreibtisch/sound/test.mp3" ! decodebin3 ! audioconvert ! audioresample ! autoaudiosink'), nil);
bus := gst_element_get_bus(pipeline);
gst_bus_add_signal_watch(bus);
gst_element_set_state(pipeline, GST_STATE_PLAYING);
g_signal_connect(G_OBJECT(bus), 'message', TGCallback(@message_cb), Self);
gst_object_unref(bus);
end;
Dies ist natürlich auch der Fall wen man man die WinApi verwendet.
Gibt es eine Möglichkeit, das dies auch geht.
Einzig was mir in den Sinn kommt, auf Window für GTK2 kompilieren.