Closed Bug 982984 Opened 11 years ago Closed 10 years ago

MP4 doesn't work in MediaSource Extensions

Categories

(Core :: Audio/Video, defect)

defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: cpearce, Unassigned)

References

(Blocks 1 open bug, )

Details

There's something wrong with fMP4 MSE support. The example players below don't work (using the MP4Reader on Windows). http://dashif.org/reference/players/javascript/1.0.0/baseline.html http://dashif.org/reference/players/javascript/1.0.0/index.html
GPAC/mp4box can mux MP4 files for MSE. I made a simple MP4 in MSE testcase: http://people.mozilla.org/~cpearce/simple-dash/ (command line to mux the MP4 file was: `mp4box -dash 10000 -rap -segment-name bruce -subsegs-per-sidx 5 bruce_vs_ironman.mp4`) This page works in IE11. With Firefox Nightly with MSE and the fmp4 demuxer/MP4Reader enabled this works perfect on the first play through, but if I reload the page, it doesn't play, we get an empty frame. It also hangs during shutdown. If I use disable the fmp4 demuxer/MP4Reader and use WMFReader instead, we don't get an audio stream played, and playback stops after 7 seconds.
On Linux the above testcase crashes with the following stack: #0 0x00007ff2a981fd84 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0 #1 0x00007ff2a8ee0631 in PR_EnterMonitor (mon=0x7ff28b0557c0) at /home/cpearce/src/orange/nsprpub/pr/src/pthreads/ptsynch.c:592 #2 0x00007ff2a37515f0 in mozilla::ReentrantMonitor::Enter (this=0x7ff27cc208a0) at /home/cpearce/src/orange/xpcom/glue/BlockingResourceBase.cpp:279 #3 0x00007ff2a47ba2f6 in mozilla::SourceBufferResource::AppendData (this=0x7ff27cc20820, aData=0x7ff27ab22000 "", aLength=721611) at /home/cpearce/src/orange/content/media/mediasource/SourceBufferResource.cpp:147 #4 0x00007ff2a47bb053 in AppendData (aLength=721611, aData=0x7ff27ab22000 "", this=0x7ff27cc14a00, aRv=...) at /home/cpearce/src/orange/content/media/mediasource/SourceBuffer.cpp:349 #5 mozilla::dom::SourceBuffer::AppendData (this=0x7ff27cc14a00, aData=0x7ff27ab22000 "", aLength=721611, aRv=...) at /home/cpearce/src/orange/content/media/mediasource/SourceBuffer.cpp:331 #6 0x00007ff2a40e33cb in appendBuffer (args=..., self=0x7ff27cc14a00, cx=0x7ff289fc8600, obj=...) at /home/cpearce/src/orange/obj-x86_64-unknown-linux-gnu/dom/bindings/SourceBufferBinding.cpp:364 #7 mozilla::dom::SourceBufferBinding::appendBuffer (cx=0x7ff289fc8600, obj=..., self=0x7ff27cc14a00, args=...) at /home/cpearce/src/orange/obj-x86_64-unknown-linux-gnu/dom/bindings/SourceBufferBinding.cpp:335 #8 0x00007ff2a4189a39 in mozilla::dom::GenericBindingMethod (cx=0x7ff289fc8600, argc=<optimized out>, vp=<optimized out>) at /home/cpearce/src/orange/dom/bindings/BindingUtils.cpp:2258 #9 0x00007ff2a5789451 in js::CallJSNative (cx=0x7ff289fc8600, native=0x7ff2a4189915 <mozilla::dom::GenericBindingMethod(JSContext*, unsigned int, JS::Value*)>, args=...) at /home/cpearce/src/orange/js/src/jscntxtinlines.h:239 #10 0x00007ff2a57da6d9 in js::Invoke (cx=0x7ff289fc8600, args=..., construct=js::NO_CONSTRUCT) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:476 #11 0x00007ff2a57cb6c2 in Interpret (cx=0x7ff289fc8600, state=...) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:2614 #12 0x00007ff2a57d908b in js::RunScript (cx=0x7ff289fc8600, state=...) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:423 #13 0x00007ff2a57da755 in RunScript (state=..., cx=0x7ff289fc8600) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:390 #14 js::Invoke (cx=0x7ff289fc8600, args=..., construct=js::NO_CONSTRUCT) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:495 #15 0x00007ff2a57db477 in js::Invoke (cx=0x7ff289fc8600, thisv=..., fval=..., argc=<optimized out>, argv=0x7fff9a7aeaf8, rval=JSVAL_VOID) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:532 #16 0x00007ff2a563f4d7 in JS::Call (cx=0x7ff289fc8600, thisv=$jsval((JSObject *) 0x7ff279296e00 [object XMLHttpRequest]), fval=$jsval((JSObject *) 0x7ff279299740 [object Function "fetch/loaded"]), args=..., rval=JSVAL_VOID) at /home/cpearce/src/orange/js/src/jsapi.cpp:4907 #17 0x00007ff2a3f574b0 in mozilla::dom::EventListener::HandleEvent (this=0x7ff27aabaac0, cx=0x7ff289fc8600, aThisVal=$jsval((JSObject *) 0x7ff279296e00 [object XMLHttpRequest]), event=..., aRv=...) at /home/cpearce/src/orange/obj-x86_64-unknown-linux-gnu/dom/bindings/EventListenerBinding.cpp:44 #18 0x00007ff2a43ed29e in mozilla::dom::EventListener::HandleEvent<mozilla::dom::EventTarget*> (this=0x7ff27aabaac0, thisObjPtr=<optimized out>, event=..., aRv=..., aExceptionHandling=<optimized out>) at ../../dist/include/mozilla/dom/EventListenerBinding.h:53 #19 0x00007ff2a43f2dd7 in mozilla::EventListenerManager::HandleEventSubType (this=0x7ff286dfa980, aListener=<optimized out>, aDOMEvent=<optimized out>, aCurrentTarget=0x7ff27aaa2800) at /home/cpearce/src/orange/dom/events/EventListenerManager.cpp:951 #20 0x00007ff2a43f3000 in mozilla::EventListenerManager::HandleEventInternal (this=0x7ff286dfa980, aPresContext=0x0, aEvent=0x7ff28747b440, aDOMEvent=0x7fff9a7aefd8, aCurrentTarget=0x7ff27aaa2800, aEventStatus=0x7fff9a7aefe0) at /home/cpearce/src/orange/dom/events/EventListenerManager.cpp:1015 #21 0x00007ff2a43f329a in HandleEvent (aEventStatus=0x7fff9a7aefe0, aCurrentTarget=0x7ff27aaa2800, aDOMEvent=0x7fff9a7aefd8, aEvent=0x7ff28747b440, aPresContext=0x0, this=<optimized out>) at ../../dist/include/mozilla/EventListenerManager.h:328 #22 mozilla::EventTargetChainItem::HandleEvent (this=0x7ff28c8b9008, aVisitor=..., aCd=...) at /home/cpearce/src/orange/dom/events/EventDispatcher.cpp:197 #23 0x00007ff2a43f33ae in mozilla::EventTargetChainItem::HandleEventTargetChain (aChain=..., aVisitor=..., aCallback=0x0, aCd=...) at /home/cpearce/src/orange/dom/events/EventDispatcher.cpp:287 #24 0x00007ff2a43f826a in mozilla::EventDispatcher::Dispatch (aTarget=0x7ff28c8b9008, aPresContext=<optimized out>, aEvent=0x7ff28747b440, aDOMEvent=0x7ff27cc5ec80, aEventStatus=0x0, aCallback=0x0, aTargets=0x0) at /home/cpearce/src/orange/dom/events/EventDispatcher.cpp:598 #25 0x00007ff2a43f867e in mozilla::EventDispatcher::DispatchDOMEvent (aTarget=0x7ff27aaa2800, aEvent=<optimized out>, aDOMEvent=0x7ff27cc5ec80, aPresContext=0x0, aEventStatus=0x0) at /home/cpearce/src/orange/dom/events/EventDispatcher.cpp:665 #26 0x00007ff2a469482c in nsXMLHttpRequest::DispatchProgressEvent (this=0x7ff27aaa2800, aTarget=0x7ff27aaa2800, aType=..., aLengthComputable=true, aLoaded=721611, aTotal=721611) at /home/cpearce/src/orange/content/base/src/nsXMLHttpRequest.cpp:1448 #27 0x00007ff2a4694d98 in nsXMLHttpRequest::ChangeStateToDone (this=0x7ff27aaa2800) at /home/cpearce/src/orange/content/base/src/nsXMLHttpRequest.cpp:2219 #28 0x00007ff2a4695293 in nsXMLHttpRequest::OnStopRequest (this=0x7ff27aaa2800, request=<optimized out>, ctxt=<optimized out>, status=NS_OK) at /home/cpearce/src/orange/content/base/src/nsXMLHttpRequest.cpp:2174 #29 0x00007ff2a4633db4 in nsCORSListenerProxy::OnStopRequest (this=0x7ff27cc9cb30, aRequest=<optimized out>, aContext=<optimized out>, aStatusCode=<optimized out>) at /home/cpearce/src/orange/content/base/src/nsCrossSiteListenerProxy.cpp:655 #30 0x00007ff2a38465b1 in nsStreamListenerTee::OnStopRequest (this=0x7ff27ab21d80, request=0x7ff27cc6e058, context=0x0, status=NS_OK) at /home/cpearce/src/orange/netwerk/base/src/nsStreamListenerTee.cpp:53 #31 0x00007ff2a392448f in mozilla::net::nsHttpChannel::OnStopRequest (this=0x7ff27cc6e000, request=<optimized out>, ctxt=<optimized out>, status=NS_OK) at /home/cpearce/src/orange/netwerk/protocol/http/nsHttpChannel.cpp:5241 #32 0x00007ff2a382f272 in nsInputStreamPump::OnStateStop (this=0x7ff27cc68690) at /home/cpearce/src/orange/netwerk/base/src/nsInputStreamPump.cpp:703 #33 0x00007ff2a382f3d1 in nsInputStreamPump::OnInputStreamReady (this=0x7ff27cc68690, stream=<optimized out>) at /home/cpearce/src/orange/netwerk/base/src/nsInputStreamPump.cpp:438 #34 0x00007ff2a37a7842 in nsInputStreamReadyEvent::Run (this=<optimized out>) at /home/cpearce/src/orange/xpcom/io/nsStreamUtils.cpp:85 #35 0x00007ff2a37b9b06 in ProcessNextEvent (result=0x7fff9a7af53f, mayWait=false, this=0x7ff2a91641a0) at /home/cpearce/src/orange/xpcom/threads/nsThread.cpp:694 #36 nsThread::ProcessNextEvent (this=0x7ff2a91641a0, mayWait=false, result=0x7fff9a7af53f) at /home/cpearce/src/orange/xpcom/threads/nsThread.cpp:618 #37 0x00007ff2a375538f in NS_ProcessNextEvent (thread=<optimized out>, mayWait=false) at /home/cpearce/src/orange/xpcom/glue/nsThreadUtils.cpp:263 #38 0x00007ff2a3a022e6 in mozilla::ipc::MessagePump::Run (this=0x7ff299e92b80, aDelegate=0x7ff2a91d4840) at /home/cpearce/src/orange/ipc/glue/MessagePump.cpp:95 #39 0x00007ff2a39eb6ca in MessageLoop::RunInternal (this=0x7ff2a91d4840) at /home/cpearce/src/orange/ipc/chromium/src/base/message_loop.cc:226 #40 0x00007ff2a39eb6f2 in RunHandler (this=0x7ff2a91d4840) at /home/cpearce/src/orange/ipc/chromium/src/base/message_loop.cc:219 #41 MessageLoop::Run (this=0x7ff2a91d4840) at /home/cpearce/src/orange/ipc/chromium/src/base/message_loop.cc:193 #42 0x00007ff2a422d087 in nsBaseAppShell::Run (this=0x7ff292274080) at /home/cpearce/src/orange/widget/xpwidgets/nsBaseAppShell.cpp:164 #43 0x00007ff2a4e9d24c in nsAppStartup::Run (this=0x7ff29218d060) at /home/cpearce/src/orange/toolkit/components/startup/nsAppStartup.cpp:276 #44 0x00007ff2a4e44715 in XREMain::XRE_mainRun (this=0x7fff9a7af9a0) at /home/cpearce/src/orange/toolkit/xre/nsAppRunner.cpp:4008 #45 0x00007ff2a4e449bc in XREMain::XRE_main (this=0x7fff9a7af9a0, argc=2, argv=<optimized out>, aAppData=0x7fff9a7afb50) at /home/cpearce/src/orange/toolkit/xre/nsAppRunner.cpp:4077 #46 0x00007ff2a4e44c30 in XRE_main (argc=2, argv=0x7fff9a7b0eb8, aAppData=0x7fff9a7afb50, aFlags=<optimized out>) at /home/cpearce/src/orange/toolkit/xre/nsAppRunner.cpp:4289 #47 0x0000000000404301 in do_main (argc=2, argv=0x7fff9a7b0eb8, xreDirectory=0x7ff2a912d480) at /home/cpearce/src/orange/browser/app/nsBrowserApp.cpp:282 #48 0x0000000000403865 in main (argc=2, argv=0x7fff9a7b0eb8) at /home/cpearce/src/orange/browser/app/nsBrowserApp.cpp:643
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.