Re: gstreamermm, Gst::AudioSink
- From: Ankur Deep Jaiswal <ankur techgentsia com>
- To: gtkmm-list <gtkmm-list gnome org>
- Subject: Re: gstreamermm, Gst::AudioSink
- Date: Mon, 18 Jun 2018 20:56:45 +0530
Hi,
the audiosink/audiosrc is now working,
but there is an unexpected bug while stopping the pipeline.
** (test_audio_plugin:11726): [1;35mCRITICAL [0m **: [34m20:48:28.984 [0m: Resources for ring buffer 0x555555a40040 still acquired
Thread #1 [test_audio_plug] 11726 [core: 1] (Suspended : Signal : SIGTRAP:Trace/breakpoint trap)
0x7ffff7582c41
g_logv() at 0x7ffff7583f2b
g_log() at 0x7ffff758407f
gst_audio_ring_buffer_close_device() at 0x7ffff4adcc9b
0x7ffff4affc8e
Gst::Element_Class::change_state_vfunc_callback() at 0x7ffff7258281
gst_element_change_state() at gstelement.c:2,952 0x7ffff7af8bce
gst_element_set_state_func() at gstelement.c:2,906 0x7ffff7af9309
Gst::Element_Class::set_state_vfunc_callback() at 0x7ffff72581e1
gst_bin_element_set_state() at gstbin.c:2,602 0x7ffff7ad6942
gst_bin_change_state_func() at gstbin.c:2,944 0x7ffff7ad6942
gst_element_change_state() at gstelement.c:2,952 0x7ffff7af8bce
gst_element_set_state_func() at gstelement.c:2,906 0x7ffff7af9309
gst_bin_element_set_state() at gstbin.c:2,602 0x7ffff7ad6942
gst_bin_change_state_func() at gstbin.c:2,944 0x7ffff7ad6942
gst_pipeline_change_state() at gstpipeline.c:508 0x7ffff7b1eac2
gst_element_change_state() at gstelement.c:2,952 0x7ffff7af8bce
gst_element_continue_state() at gstelement.c:2,660 0x7ffff7af95ef
gst_element_change_state() at gstelement.c:2,991 0x7ffff7af8eb5
gst_element_continue_state() at gstelement.c:2,660 0x7ffff7af95ef
gst_element_change_state() at gstelement.c:2,998 0x7ffff7af8c26
gst_element_set_state_func() at gstelement.c:2,906 0x7ffff7af9309
main() at test_audio_plugin.cpp:51 0x55555555d1e2
i had to override create_ring_buffer_vfunc
Glib::RefPtr<Gst::AudioRingBuffer> create_ring_buffer_vfunc() override
{
const auto base = static_cast<BaseClassType*>(g_type_class_peek_parent(
G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class (The original underlying C class).
);
const auto newbase = (_GstAudioBaseSrcClass *) base;
if (newbase && newbase->create_ringbuffer) {
auto retval = Glib::wrap(
(*newbase->create_ringbuffer)(
(_GstAudioBaseSrc *) gobj()),true);
return retval;
}
using RType = Glib::RefPtr<Gst::AudioRingBuffer>;
return RType();
}
the default behavior was causing (test_audio_plugin:11956): GStreamer-CRITICAL **: 20:55:06.510: gst_object_set_parent: assertion 'GST_IS_OBJECT (object)' failed
Thread #1 [test_audio_plug] 11987 [core: 4] (Suspended : Signal : SIGTRAP:Trace/breakpoint trap)
0x7ffff7582c41
g_logv() at 0x7ffff7583f2b
g_log() at 0x7ffff758407f
gst_object_set_parent() at gstobject.c:670 0x7ffff7acbeaa
gst_audio_base_src_create_ringbuffer() at 0x7ffff4aff82d
0x7ffff4aff94c
Gst::Element_Class::change_state_vfunc_callback() at 0x7ffff7258281
gst_element_change_state() at gstelement.c:2,952 0x7ffff7af8bce
gst_element_set_state_func() at gstelement.c:2,906 0x7ffff7af9309
Gst::Element_Class::set_state_vfunc_callback() at 0x7ffff72581e1
gst_bin_element_set_state() at gstbin.c:2,602 0x7ffff7ad6942
gst_bin_change_state_func() at gstbin.c:2,944 0x7ffff7ad6942
gst_element_change_state() at gstelement.c:2,952 0x7ffff7af8bce
gst_element_set_state_func() at gstelement.c:2,906 0x7ffff7af9309
gst_bin_element_set_state() at gstbin.c:2,602 0x7ffff7ad6942
gst_bin_change_state_func() at gstbin.c:2,944 0x7ffff7ad6942
gst_element_change_state() at gstelement.c:2,952 0x7ffff7af8bce
gst_element_set_state_func() at gstelement.c:2,906 0x7ffff7af9309
main() at test_audio_plugin.cpp:49 0x55555555cf7a
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]