GNOME Bugzilla – Bug 491305
[playbin?] intro-leopard.mov sometimes EOSes immediately, sometimes not
Last modified: 2007-10-30 12:32:08 UTC
http://media.arstechnica.com/video/leopard-intro.mov
Works fine here. What do you get on the command-line when trying to play this stream ("firefox -debug" is necessary if you use firefox, otherwise it will eat the output)?
I'm using Epiphany but it doesn't work in Firefox either. Here's the output from running "firefox -debug" (didn't want to end my current Epiphany session): me@incendo:~$ firefox -debug http://media.arstechnica.com/video/leopard-intro.mov ** Message: NP_Initialize ** Message: NP_Initialize succeeded ** Message: totemPlugin ctor [0x8b7d978] ** Message: Init mimetype 'video/quicktime' mode 2 ** Message: Base URI is 'http://media.arstechnica.com/video/leopard-intro.mov' ** Message: Real mimetype for 'video/quicktime' is 'video/quicktime' argv[0] type video/quicktime argv[1] src http://media.arstechnica.com/video/leopard-intro.mov argv[2] name plugin argv[3] height 100% argv[4] width 100% ** Message: mSrc: http://media.arstechnica.com/video/leopard-intro.mov ** Message: mCache: 0 ** Message: mControllerHidden: 0 ** Message: mShowStatusbar: 0 ** Message: mHidden: 0 ** Message: mAudioOnly: 0 ** Message: mAutostart: 1, mRepeat: 0 ** Message: mHref: ** Message: mTarget: ** Message: Launching: /usr/lib/totem/totem-plugin-viewer --plugin-type narrowspace --user-agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 --mimetype video/quicktime ** Message: Viewer spawned, PID 11754 ** Message: GetValue variable 14 (e) ** Message: Initial window set, XID 3c005f7 size 994x618 ** Message: No viewer proxy yet, deferring SetWindow ** Message: NewStream mimetype 'video/quicktime' URL 'http://media.arstechnica.com/video/leopard-intro.mov' ** Message: Not expecting a new stream; aborting stream ** Message: Viewer DBus interface name is 'org.gnome.totem.PluginViewer_11754' ** Message: NameOwnerChanged old-owner '' new-owner ':1.64' ** Message: Viewer now connected to the bus ** Message: ViewerSetup ** Message: Calling SetWindow ** Message: NameOwnerChanged old-owner '' new-owner ':1.64' ** Message: Already have owner, why are we notified again? Viewer: SetWindow XID 62916087 size 994:618 sh: jackd: not found ** Message: Viewer state: STOPPED ** Message: SetWindow reply ** Message: ViewerReady ** Message: IsSchemeSupported scheme 'http': yes ** Message: totem_embedded_open_internal 'fd://0' is-browser-stream 1 start-play 1 ** Message: BEFORE _open ** Message: AFTER _open (ret: 1) ** Message: Viewer state: PLAYING ** Message: OpenStream reply ** Message: NewStream mimetype 'video/quicktime' URL 'http://media.arstechnica.com/video/leopard-intro.mov' ** Message: Should be dual type 'video/quicktime', making sure now ** Message: Is not dual type 'video/quicktime' sh: jackd: not found ** Message: DestroyStream reason 2 ** Message: URLNotify URL 'http://media.arstechnica.com/video/leopard-intro.mov' reason 2 ** Message: totemPlugin dtor [0x8b7d978] ** Message: NP_Shutdown me@incendo:~$
** Message: DestroyStream reason 2 means something returned NPERR_INVALID_INSTANCE_ERROR I have no idea why this would happen. You'll probably want to double-check with Ubuntu that the plugin was built against the version of firefox/epiphany you're running.
reason 2 is NPRES_USER_BREAK, not NPERR_INVALID_INSTANCE_ERROR.
And I guess that's an ok reason since I quit Firefox. :)
I don't see any reasons why it would fail then. Feel free to test whether it's a problem with Totem/backend using: wget -O - http://media.arstechnica.com/video/leopard-intro.mov | totem fd://0 Reopen if you're still seeing the same problem.
Downloading the file and playing the file in Totem works. > I don't see any reasons why it would fail then. Well... not all bugs are immediately obvious. ;) > Feel free to test whether it's > a problem with Totem/backend using: > wget -O - http://media.arstechnica.com/video/leopard-intro.mov | totem fd://0 > > Reopen if you're still seeing the same problem. Huh? If it doesn't work in the standalone player I should reopen? I don't follow... So... reopen?
Correction... Downloading the file and playing it in Totem works somewhat. The video is displayed correctly but the first ~2 seconds of the audio is repeated over and over again.
Perhaps I should mention that nothing happens when viewing it in the browser-plugin. Completely black.
Forgot to mention... > wget -O - http://media.arstechnica.com/video/leopard-intro.mov | totem fd://0 Also results in black and no sound. Sorry for the spam.
Are you using GStreamer or xine-lib as a backend? (see the totem about box)
GStreamer.
For me, with GStreamer CVS, and gst-launch playbin uri=file:///path/to/foo.mov it works sometimes and sometimes it just seems to EOS straight away (which also causes an alsasink warnings: 'snd_pcm_drop: alsalib error: PCM not set up' followed by 'alsa-reset: pcm drop error: Input/output error'). => GStreamer.
mp3parse thinks that when it receives a buffer out of segment that it should send an EOS. Bad!! This is an edited mov file with many editlists. It has 2 audio tracks, it's possible that playbin does not always select the same one for playback.
The real fix is in mpegaudioparse. It's not entirely correct because I think playbin selects the first active stream based on which one receives data first (which could be the short or the long audio stream). * gst/qtdemux/qtdemux.c: (gst_qtdemux_activate_segment), (gst_qtdemux_combine_flows), (gst_qtdemux_loop_state_movie): Smarter combine_flow code that also deals with downstream elements returning UNEXPECTED when they receive data out of the segment boundaries. Fixes #491305. * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_emit_frame): Remove some more broken code, it seems to clip even when it should not. See #491305. * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_emit_frame): When the element is not driving the streaming thread it is not supposed to emit EOS or post SEGMENT done. It is allowed to return UNEXPECTED upstream when it detects EOS. See #491305.