GNOME Bugzilla – Bug 598610
[matroskademux] Support push mode operation
Last modified: 2009-12-16 11:51:16 UTC
I report this bug too to the Ubuntu Team, because i use Ubuntu...But is a problem in Gnome, so..here i am! The BUG in Ubuntu https://bugs.launchpad.net/ubuntu/+source/totem/+bug/451788 Binary package hint: totem i have a Strange issue with Totem. I Have a UPNP server in my WRT610N...its have musics and Movies files. Well, when i play a mkv video from the Upnp, The totem don't Play it...including using the totem plugin for Firefox... If i got the movie, save locally, and play it from my computer, the videos play OK. So, i enter in Totem homepage from gnome and get some tricks to debug this and send to here. The First thing is the HTTP request: http://192.168.254.1:9000/disk/video/O0$3$24I7459/%27Transformers_Revenge_of_the_Fallen%27%5BSUPB00000050%5D.mkv GET /disk/video/O0$3$24I7459/%27Transformers_Revenge_of_the_Fallen%27%5BSUPB00000050%5D.mkv HTTP/1.1 Host: 192.168.254.1:9000 User-Agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.1.3) Gecko/20091007 Ubuntu/9.10 (karmic) Firefox/3.5.3 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://192.168.254.1:9000/webbrowse/O0$3$31$10244 If-Modified-Since: Mon, 28 Sep 2009 01:01:05 GMT HTTP/1.x 200 OK Content-Type: video/x-matroska Content-Length: 11153414 Date: Wed, 14 Oct 2009 21:17:52 GMT Pragma: no-cache Cache-Control: no-cache Last-Modified: Mon, 28 Sep 2009 01:01:05 GMT Accept-Ranges: bytes Connection: keep-alive Server: Linux/2.x.x, UPnP/1.0, pvConnect UPnP SDK/1.0 ---------------------------------------------------------- We can see the content-type, is a video/x-matroska.... See the attached files.... http://launchpadlibrarian.net/33691746/LOG This is the FAIL play.... by HTTP connection. This is the output from command, and the attachment is the debug from error output. alex@pczao:~$ gst-launch-0.10 --gst-debug-level=5 -v playbin uri="http://192.168.254.1:9000/disk/NON-DLNA/video/O0$3$24I7459/%27Transformers_Revenge_of_the_Fallen%27%5BSUPB00000050%5D.mkv" 2> LOG Deixando a conexão como PAUSADA ... A conexão está fazendo PREROLL ... /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-matroska ERRO: do elemento /GstPlayBin:playbin0/GstDecodeBin:decodebin0: Um plugin Demultiplexador Matroska é necessário para tocar esse stream, mas não está instalado. Informação de depuração adicional: gstdecodebin.c(986): close_pad_link (): /GstPlayBin:playbin0/GstDecodeBin:decodebin0: No decoder to handle media type 'video/x-matroska' Deixando a conexão em NULL ... /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL Liberando a fila de processamento... =============================================================================== http://launchpadlibrarian.net/33698499/LOGOK This is when PLAYS OK the file locally.... This is the output from command, and the error output is the Attachment. alex@pczao:~$ gst-launch-0.10 --gst-debug-level=5 -v playbin uri="file:///home/alex/Transformers.mkv" 2> LOGOK Deixando a conexão como PAUSADA ... /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-matroska /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstMatroskaDemux:matroskademux0.GstPad:sink: caps = video/x-matroska A conexão está fazendo PREROLL ... /GstPlayBin:playbin0/GstStreamSelector:selector_audio_src1: active-pad = NULL /GstPlayBin:playbin0/GstStreamSelector:selector_video_src0: active-pad = (GstPlaybinSelectorPad) sink0 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = video/x-h264, codec_data=(buffer)014d4033ffe10017674d40339a73009e08742000007d2000177011e306334001000468ee3c80, width=(int)1264, height=(int)528, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)1000000000/41708333 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = video/x-h264, codec_data=(buffer)014d4033ffe10017674d40339a73009e08742000007d2000177011e306334001000468ee3c80, width=(int)1264, height=(int)528, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)1000000000/41708333 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue2.GstPad:sink: caps = audio/x-vorbis, channels=(int)2, rate=(int)48000 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue2.GstPad:src: caps = audio/x-vorbis, channels=(int)2, rate=(int)48000 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstVorbisDec:vorbisdec0.GstPad:sink: caps = audio/x-vorbis, channels=(int)2, rate=(int)48000 /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src1: caps = audio/x-raw-float, rate=(int)48000, channels=(int)2, endianness=(int)1234, width=(int)32 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstVorbisDec:vorbisdec0.GstPad:src: caps = audio/x-raw-float, rate=(int)48000, channels=(int)2, endianness=(int)1234, width=(int)32 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/ffdec_h264:ffdec_h2640.GstPad:sink: caps = video/x-h264, codec_data=(buffer)014d4033ffe10017674d40339a73009e08742000007d2000177011e306334001000468ee3c80, width=(int)1264, height=(int)528, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)1000000000/41708333 /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)1264, height=(int)528, framerate=(fraction)1000000000/41708333, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/ffdec_h264:ffdec_h2640.GstPad:src: caps = video/x-raw-yuv, width=(int)1264, height=(int)528, framerate=(fraction)1000000000/41708333, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstStreamSelector:selector_audio_src1.GstPlaybinSelectorPad:sink0: caps = audio/x-raw-float, rate=(int)48000, channels=(int)2, endianness=(int)1234, width=(int)32 /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src1.GstProxyPad:proxypad2: caps = audio/x-raw-float, rate=(int)48000, channels=(int)2, endianness=(int)1234, wid.... ===============================================================================
matroskademux only operates in pull mode and the http source element only provides push mode. Either we make matroskademux operate also in push mode, or make an http source element operate in pull mode to fix this.
(In reply to comment #1) > Either we make matroskademux operate also in push mode, or make an http source > element operate in pull mode to fix this. First solution would be a rewrite of matroskademux (good idea, but then let's do it correct from the beginning), the second solution would kill HTTP servers (pull mode => random access... and oggdemux and others do all kinds of weird things then that would mean some load for HTTP servers). If you want to add push mode support to matroskademux please talk to me first
Turns out this was feasible without a rewrite a matroskademux (which is not to say that would be bad thing ;) ): commit 900ff7247e2192ce7dc4437c6f917847b8e90116 Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> Date: Wed Dec 16 12:43:27 2009 +0100 matroskademux: support push based mode Fixes #598610.