After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 727946 - decklinksrc: failure to switch states: PLAYING<->NULL
decklinksrc: failure to switch states: PLAYING<->NULL
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
Other Linux
: Normal normal
: 1.5.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Reported: 2014-04-10 09:20 UTC by Krzysztof Borowczyk
Modified: 2015-01-13 12:58 UTC
See Also:
GNOME target: ---
GNOME version: ---

Sample application to show the problem (1.63 KB, text/plain)
2014-04-10 09:20 UTC, Krzysztof Borowczyk

Description Krzysztof Borowczyk 2014-04-10 09:20:52 UTC
Created attachment 273965 [details]
Sample application to show the problem

After setting up the pipeline to play from decklinksrc element (Blackmagic Intensity Pro capture card) and setting state to PLAYING, the output window (autovideosink) shows up and I see the grabbed video.

Problem 1:
When I switch the state to NULL and then back to PLAYING output window is closed, as expected - but it is not reopened upon switch to PLAYING state.

Problem 2:
Further switching of states causes coredump.
Sometimes there is also printed a complaint about double free.

The usual backtrace looks like this:

  • #0 malloc_consolidate
    at malloc.c line 4151
  • #1 _int_malloc
    at malloc.c line 3423
  • #2 _int_memalign
    at malloc.c line 4403
  • #3 _mid_memalign
  • #4 __posix_memalign
    at malloc.c line 5016
  • #5 CDeckLinkAudioInputPacket::CDeckLinkAudioInputPacket(unsigned int)
    from /usr/lib/
  • #6 CDeckLinkInput::readNextAudioInputPacket_MutexHeld(unsigned int*)
    from /usr/lib/
  • #7 CDeckLinkInput::inputFrameArrivalCallack()
    from /usr/lib/
  • #8 CDeckLink::DriverNotificationThreadFunction(void*)
    from /usr/lib/
  • #9 start_thread
    at pthread_create.c line 312

I attach a simple application to show the problem.
The (not attached) CGSTMainloopThread only initializes gstreamer, creates main loop object and enters the loop.
Comment 1 Sebastian Dröge (slomo) 2014-12-19 13:55:35 UTC
Please test if this is still a problem with latest GIT master. The decklink elements were rewritten.
Comment 2 Krzysztof Borowczyk 2015-01-13 11:07:05 UTC
I tried to recompile with the current master today, but I'm having problems with plugins-good:

Making all in sdp
make[4]: Entering directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base/gst-libs/gst/sdp'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base/gst-libs/gst/sdp'
Making all in rtsp
make[4]: Entering directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base/gst-libs/gst/rtsp'
make  all-am
make[5]: Entering directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base/gst-libs/gst/rtsp'
make[5]: *** No rule to make target `gstrtsp-marshal.list', needed by `gstrtsp-marshal.h'.  Stop.
make[5]: Leaving directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base/gst-libs/gst/rtsp'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base/gst-libs/gst/rtsp'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base/gst-libs/gst'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base/gst-libs'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/kborowczyk/src/GStreamerGIT/gst-plugins-base'
make: *** [all] Error 2
Comment 3 Tim-Philipp Müller 2015-01-13 11:16:42 UTC
Run git clean -x -d -f; ./ in gst-plugins-good (and if it still doesn't work, please post on the mailing list or pop into our irc channel, it doesn't really belong into this bug report)
Comment 4 Krzysztof Borowczyk 2015-01-13 12:54:02 UTC
(Thanks for the bit with git clean, it helped (and sorry for asking here))

As for the bug, seems that the rewrite fixed the problem. I can switch back and forth between NULL/PAUSED/PLAYING states without problems.