Closed
Bug 1189602
Opened 9 years ago
Closed 9 years ago
TrackBuffersManager not always notifying demuxer of new data
Categories
(Core :: Audio/Video: Playback, defect)
Core
Audio/Video: Playback
Tracking
()
RESOLVED
FIXED
mozilla42
Tracking | Status | |
---|---|---|
firefox42 | --- | fixed |
People
(Reporter: jya, Assigned: jya)
References
Details
Attachments
(1 file)
6.35 KB,
patch
|
mozbugz
:
review+
|
Details | Diff | Splinter Review |
The TrackBuffersManager demux all data as they are available.
It does so by appending the incoming data to a SourceBufferResource and then calling the MediaDataDemuxer .
However, it doesn't always notify the demuxer whenever the SourceBufferResources has been modified.
It isn't a problem with the MP4Demuxer has it doesn't rely on this information to know which data is available in the MediaResource ; however the WebM demuxer does which could lead to only being notified of partial and incomplete data.
Assignee | ||
Comment 1•9 years ago
|
||
Attachment #8641487 -
Flags: review?(gsquelart)
Comment on attachment 8641487 [details] [diff] [review]
[MSE] Always notify demuxer when data is added (or removed) to the resource.
Review of attachment 8641487 [details] [diff] [review]:
-----------------------------------------------------------------
r+ with nits.
::: dom/media/mediasource/TrackBuffersManager.cpp
@@ +780,5 @@
> +{
> + MOZ_ASSERT(mCurrentInputBuffer);
> + int64_t offset = mCurrentInputBuffer->GetLength();
> + mCurrentInputBuffer->AppendData(aData);
> + mInputDemuxer->NotifyDataArrived(aData->Length(), offset);
Length() returns a size_t but NotifyDataArrived() takes a uint32_t there. I'm guessing an overflow is practically impossible, but doesn't the compiler complain?
@@ +1032,4 @@
> MediaByteRange mediaRange = mParser->MediaSegmentRange();
> uint32_t length;
> if (mediaRange.IsNull()) {
> length = mInputBuffer->Length();
'length' is not needed in this block anymore.
@@ +1037,4 @@
> mInputBuffer = nullptr;
> } else {
> // The mediaRange is offset by the init segment position previously added.
> length = mediaRange.mEnd - (mProcessedInput - mInputBuffer->Length());
Declare |uint32_t length| (or whatever type is appropriate) here and remove the declaration at line 1033 above.
Attachment #8641487 -
Flags: review?(gsquelart) → review+
Assignee: nobody → jyavenard
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla42
You need to log in
before you can comment on or make changes to this bug.
Description
•