Assertion failure: mSampleDescriptions.IsEmpty() (Shouldn't have any sample descriptions yet when starting to parse stsd), at src/dom/media/mp4/MoofParser.cpp:364
Categories
(Core :: Audio/Video: Playback, defect, P2)
Tracking
()
People
(Reporter: tsmith, Unassigned)
References
(Blocks 1 open bug)
Details
(Keywords: assertion, testcase)
Attachments
(2 files)
Found with m-c:
BuildID=20190331215222
SourceStamp=70a50fe09a18b2516e9ffdb2083debfab7de720d
Assertion failure: mSampleDescriptions.IsEmpty() (Shouldn't have any sample descriptions yet when starting to parse stsd), at src/dom/media/mp4/MoofParser.cpp:364
#0 mozilla::MoofParser::ParseStsd(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:362:3
#1 mozilla::MoofParser::ParseStbl(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:327:7
#2 mozilla::MoofParser::ParseMinf(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:317:7
#3 mozilla::MoofParser::ParseMdia(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:293:7
#4 mozilla::MoofParser::ParseTrak(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:276:9
#5 mozilla::MoofParser::ParseMoov(mozilla::Box&) src/dom/media/mp4/MoofParser.cpp:259:7
#6 mozilla::MoofParser::RebuildFragmentedIndex(mozilla::BoxContext&) src/dom/media/mp4/MoofParser.cpp:71:7
#7 mozilla::MoofParser::RebuildFragmentedIndex(mozilla::media::IntervalSet<long> const&) src/dom/media/mp4/MoofParser.cpp:41:10
#8 mozilla::Index::UpdateMoofIndex(mozilla::media::IntervalSet<long> const&, bool) src/dom/media/mp4/Index.cpp:491:16
#9 mozilla::MP4TrackDemuxer::EnsureUpToDateIndex() src/dom/media/mp4/MP4Demuxer.cpp:390:11
#10 mozilla::MP4TrackDemuxer::MP4TrackDemuxer(mozilla::MediaResource*, mozilla::UniquePtr<mozilla::TrackInfo, mozilla::DefaultDelete<mozilla::TrackInfo> >&&, mozilla::IndiceWrapper const&) src/dom/media/mp4/MP4Demuxer.cpp:352:3
#11 mozilla::MP4Demuxer::Init() src/dom/media/mp4/MP4Demuxer.cpp:224:45
#12 mozilla::MediaFormatReader::DemuxerProxy::Init()::$_13::operator()() const src/dom/media/MediaFormatReader.cpp:789:47
#13 mozilla::detail::ProxyFunctionRunnable<mozilla::MediaFormatReader::DemuxerProxy::Init()::$_13, mozilla::MozPromise<mozilla::MediaResult, mozilla::MediaResult, true> >::Run() src/obj-firefox/dist/include/mozilla/MozPromise.h:1419:29
#14 mozilla::TaskQueue::Runner::Run() src/xpcom/threads/TaskQueue.cpp:199:12
#15 nsThreadPool::Run() src/xpcom/threads/nsThreadPool.cpp:244:14
#16 non-virtual thunk to nsThreadPool::Run() src/xpcom/threads/nsThreadPool.cpp
#17 nsThread::ProcessNextEvent(bool, bool*) src/xpcom/threads/nsThread.cpp:1180:14
#18 NS_ProcessNextEvent(nsIThread*, bool) src/xpcom/threads/nsThreadUtils.cpp:482:10
#19 mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:303:20
#20 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:315:10
#21 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:290:3
#22 nsThread::ThreadFunc(void*) src/xpcom/threads/nsThread.cpp:454:11
#23 _pt_root src/nsprpub/pr/src/pthreads/ptthread.c:201:5
Comment 1•5 years ago
|
||
Bryce, I see your name plenty in the MoofParser history; can you take a look?
This is caused by metadata containing multiple sample table (stbl) and sample description (stsd) boxes for the same track. In this case there are two separate trak boxes for the same track, with a lot of metadata duplicated, but it would also be possible to simply have duplicate stbl and stsd boxes in a single trak box which could trigger this.
All of the above is not allowed per the spec, but I'll change what we're doing here so we log a warning here instead of asserting.
Mp4s should not have multiple sample description (stsd) boxes for a track, but
since we can be fed malformed files we should be tolerant and log rather than
asserting.
Comment 4•2 years ago
|
||
Unassigning bugs assigned to Bryce because he no longer works at Mozilla.
Reporter | ||
Updated•2 years ago
|
Updated•2 years ago
|
Description
•