Closed
Bug 1171257
Opened 9 years ago
Closed 9 years ago
[Aries][Video] Video recorded on device has short pauses while playing back in video app
Categories
(Core :: Audio/Video, defect)
Tracking
()
People
(Reporter: bzumwalt, Assigned: sotaro)
References
()
Details
(Keywords: smoketest, Whiteboard: [3.0-Daily-Testing],[spark])
Attachments
(3 files, 11 obsolete files)
314.25 KB,
text/plain
|
Details | |
2.50 KB,
patch
|
bholley
:
review+
|
Details | Diff | Splinter Review |
25.45 KB,
patch
|
sotaro
:
review+
|
Details | Diff | Splinter Review |
Description: While viewing video recorded on device using video app, the video playback "pauses" repeatedly giving the video a choppy appearance. Repro Steps: 1) Update a Xperia Z3 Compact (B2G) to 20150603164854 2) Take ~10 second video with camera 3) Launch video and play movie recorded in step 2 Actual: Video has intermitant pauses. Expected: Video playback is smooth with no pauses. Environmental Variables: Device: Xperia Z3 Compact (B2G) 3.0 Build ID: 20150603164854 Gaia: ff80db87926a5c2769e158801090465b4ed117fa Gecko: 196d99aabc27 Gonk: Could not pull gonk. Did you shallow Flash? Version: 41.0a1 (3.0) Repro frequency: 3/3 See attached: Youtube video clip & logcat Youtube link: http://youtu.be/nTJqdA3v1Wo
Reporter | ||
Comment 1•9 years ago
|
||
Failing case: https://moztrap.mozilla.org/manage/case/2478/ Issue does NOT reproduce on Flame 3.0 Video playback is smooth with no pauses. Device: Flame 2.2 Build ID: 20150603002503 Gaia: a9aeb08263f1a727136e8ae78425e52431c82770 Gecko: 5b3f1796ddf6 Gonk: bd9cb3af2a0354577a6903917bc826489050b40d Version: 37.0 (2.2) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(pbylenga)
Comment 2•9 years ago
|
||
[Blocking Requested - why for this release]: Regression from Flame behavior that fails smoke tests. Failing case: https://moztrap.mozilla.org/manage/case/2478/
blocking-b2g: --- → spark?
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(pbylenga)
Assignee | ||
Comment 3•9 years ago
|
||
The problem might happen because of gonk media's(framework/av) implementation. gonk media needs modification for b2g if we want to get optimum performance.
Assignee | ||
Comment 6•9 years ago
|
||
(In reply to Doug Sherk (:drs) (use needinfo?) from comment #5) > Sotaro, can you investigate this please? I do not have Xperia Z3 Compact device. Therefore, I could not investigate. My assumption is comment 3. Is there a way to get the device?
Flags: needinfo?(sotaro.ikeda.g) → needinfo?(drs)
Comment 7•9 years ago
|
||
We've arranged offline to have a Z3C provided for you, Sotaro. Please assign this to yourself when you start working on it. Thanks.
Flags: needinfo?(drs) → needinfo?(sotaro.ikeda.g)
Assignee | ||
Updated•9 years ago
|
Flags: needinfo?(sotaro.ikeda.g)
Assignee | ||
Updated•9 years ago
|
Assignee: nobody → sotaro.ikeda.g
Flags: needinfo?(sotaro.ikeda.g)
Assignee | ||
Comment 9•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #3) > The problem might happen because of gonk media's(framework/av) > implementation. gonk media needs modification for b2g if we want to get > optimum performance. I checked the above on Z3C. stagefright was moz built binary(not default binary) and MediaCodec and ACodec have a correct fix of Bug 1009410.
Assignee | ||
Comment 10•9 years ago
|
||
I checked a Z3C recorded video. The video was 3840*2160 30fps. This high resolution video seems to cause the problem.
Assignee | ||
Comment 11•9 years ago
|
||
On master, platform independent MP4Reader is used for mp4(3gp) playback. It also seems to affect to the problem. When MediaOmxReader is used for mp4 playback, the pause problem seems to happen. Therefore gonk's MP4Reader implementation seems not provide enough performance compared to MediaOmxReader. Bug 1170589 seems like a similar bug.
Assignee | ||
Comment 12•9 years ago
|
||
When I did not plug usb cable, the problem seems happen often on MP4Reader's playback. The problem seems not happen on MediaOmxReader and MediaCodecReader. Therefore, gonk's MP4Reader might have a problem.
Assignee | ||
Comment 13•9 years ago
|
||
Assignee | ||
Comment 14•9 years ago
|
||
Assignee | ||
Updated•9 years ago
|
Component: Gaia::Video → Video/Audio
Product: Firefox OS → Core
Sotaro, did you want us to try the patches, yet?
Flags: needinfo?(sotaro.ikeda.g)
Assignee | ||
Comment 16•9 years ago
|
||
(In reply to Naoki Hirata :nhirata (please use needinfo instead of cc) from comment #15) > Sotaro, did you want us to try the patches, yet? They are just to check for each MediaReaders' capability. Anyway we need to continue to use MP4Reader.
Flags: needinfo?(sotaro.ikeda.g)
Assignee | ||
Comment 17•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #12) > When I did not plug usb cable, the problem seems happen often on MP4Reader's > playback. > > The problem seems not happen on MediaOmxReader and MediaCodecReader. > Therefore, gonk's MP4Reader might have a problem. Correction: On master, MediaFormatReader is enabled instead of MP4Reader. Result of summary. - MediaFormatReader(default): Problem happen - MP4Reader: Problem happen - MediaCodecReader: Problem does not happen - MediaOmxReader: Problem does not happen One wired thing is that when the phone is charged via usb cable, the problem seems not happen.
Assignee | ||
Comment 18•9 years ago
|
||
The following seems to affect to the problem. - When usb is not plugged, cpu clock is slow compared to plugged situation. - MediaDecoderStateMachine's ample video queue size is 3 on gonk. On gonk, video buffer is very scarce resource. - 3840*2160 video's decoding take long time(demux and decode) - MediaFormatReader uses a lot of dispatch for decoding.
Assignee | ||
Comment 19•9 years ago
|
||
MediaFormatReader's video decoding sequence is like the following. MediaFormatReader::RequestVideoData() ->MediaFormatReader::ScheduleUpdate(TrackInfo::kVideoTrack) ->MediaFormatReader::GetTaskQueue()->Dispatch(task.forget()); // schedule (MediaFormatReader task thread) MediaFormatReader::Update() ->MediaFormatReader::RequestDemuxSamples() ->MediaFormatReader::DoDemuxVideo() ->MediaFormatReader::DecodeDemuxedSamples() ->MP4TrackDemuxer::GetSamples(1) // schedule (MediaFormatReader task thread) ->MediaFormatReader::OnVideoDemuxCompleted() ->mVideo.mQueuedSamples.AppendElements(aSamples->mSamples); ->MediaFormatReader::ScheduleUpdate(TrackInfo::kVideoTrack); // schedule (MediaFormatReader task thread) MediaFormatReader::Update() ->MediaFormatReader::RequestDemuxSamples() ->MediaFormatReader::DoDemuxVideo() ->MediaFormatReader::DecodeDemuxedSamples() ->GonkMediaDataDecoder::Input() ->GonkMediaDataDecoder::mTaskQueue->Dispatch() // schedule (VideoTaskQueue thread) GonkMediaDataDecoder::ProcessDecode() ->GonkVideoDecoderManager::Input() ->MediaCodecProxy::Input(); ->GonkMediaDataDecoder::ProcessOutput() ->GonkVideoDecoderManager::Output() ->MediaCodecProxy::Output() ->MediaFormatReader::Output() // schedule (MediaFormatReader task thread) ->MediaFormatReader::NotifyNewOutput() ->MediaFormatReader::ScheduleUpdate(aTrack); // schedule (MediaFormatReader task thread) ->MediaFormatReader::Update() ->MediaFormatReader::ReturnOutput() ->MediaFormatReader::mVideo.mPromise.Resolve()
Assignee | ||
Comment 20•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #18) > The following seems to affect to the problem. > - When usb is not plugged, cpu clock is slow compared to plugged situation. > - MediaDecoderStateMachine's ample video queue size is 3 on gonk. > On gonk, video buffer is very scarce resource. > - 3840*2160 video's decoding take long time(demux and decode) > - MediaFormatReader uses a lot of dispatch for decoding. If we can increase the number of buffer, the problem could be fixed. But we could not choose it on gonk. MediaOmxReader already works correctly current number of buffers. MediaFormatReader also needs to works correctly with same amount of video buffers.
Assignee | ||
Comment 21•9 years ago
|
||
MediaFormatReader seems to lost cpu time between each RequestVideoData().
Assignee | ||
Comment 22•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #21) > MediaFormatReader seems to lost cpu time between each RequestVideoData(). When decoding time is almost same to playback speed. It causes the problem.
Assignee | ||
Comment 23•9 years ago
|
||
When short pause happened, SkipVideoDemuxToNextKeyFrame() was called in MediaFormatReader::RequestVideoData(). https://dxr.mozilla.org/mozilla-central/source/dom/media/MediaFormatReader.cpp#545 This video frame skip caused short pause.
Assignee | ||
Comment 24•9 years ago
|
||
The patch eagerly decode video frame even when promise does not exist. This fixes the problem. Therefore this eagerness seems to make the symptom difference like Comment 17.
Assignee | ||
Comment 25•9 years ago
|
||
Comment on attachment 8620748 [details] [diff] [review] wip patch - Eagerly decode ahead video on gonk :jya, what is a good way to more eagerly decode video frames on gonk?
Attachment #8620748 -
Flags: feedback?(jyavenard)
Comment 26•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #25) > Comment on attachment 8620748 [details] [diff] [review] > wip patch - Eagerly decode ahead video on gonk > > :jya, what is a good way to more eagerly decode video frames on gonk? I don't like it as it's be worked around in that patch. There's everything in place to decode more than one frame ahead with the media.video-decode-ahead/media.audio-decode-ahead. Except that this is currently a misnomer as that value isn't use to calculate how many "decode" ahead we will perform, but instead it limits how many frames we will demux if the decoder doesn't call "InputExhausted". As all decoders always call InputExhausted() after every call to MediaDataDecoder::Input(), the media.*-decode-ahead is in practice ignored. What I suggest instead, is that we use this value to really determine how many frames we will be decoding ahead of a call to RequestAudioData/RequestVideoData. This can be enabled for all platforms, not just gonk and they will all benefit from it. So we would not only decode ahead, but also demux ahead. Chris, what do you think?
Flags: needinfo?(cpearce)
Assignee | ||
Comment 27•9 years ago
|
||
The problem seems to happen by the followings - [1] At most one MediaPromise exist for video decoding. - [2] There is a time between last video decode and and next MediaFormatReader::RequestVideoData() call. - [3] 3840*2160 size video's decoding speed seems almost same as playback speed. - [4] time of [2] seems to cause slow decoding speed than playback speed.
Comment 28•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #27) > - [4] time of [2] seems to cause slow decoding speed than playback speed. have you been able to run a profiler ? because all my profiler reports, that *by far*, (and by far I mean several orders of magnitude) decoding and rendering time dwarf the overhead related to starting a new task and media promise dispatch. The fact that you're having the issue with MP4Reader too, which doesn't make use of promises to the extent MediaFormatreader does (the MP4Reader always resolves immediately the RequestVideoData promise; while MediaFormatReader will queue a task to demux, queue a task to process the result, queue a task to feed the decoder, get the decoded frame, queue a task to process the decoded frame and queue a task to return the frame back to the MDSM). Yet, due to how MediaFormatReader caches things like buffered ranges which is access constantly by the MDSM (every frame), MediaFormatReader uses significantly less CPU than the old MP4Reader. On the same 1 minute playback, MP4Reader would use 34s of CPU time, while MediaFormatReader uses 21s. Recalculating the buffered range is rather heavy due to how the MoofParser rescan everything and that NotifyDataArrived is called every 32kB of downloaded data (which causes a refresh of the MP4Demuxer cache) Decoding multiple frames ahead, may improve the situation slightly, but if the decoder is too slow.. well it's too slow. I wouldn't expect a handled device to be able to decode a 4K video. Not even desktop PC can do it properly (and we had to blacklist 4K on all AMD video cards)
Assignee | ||
Comment 29•9 years ago
|
||
(In reply to Jean-Yves Avenard [:jya] from comment #28) > > I wouldn't expect a handled device to be able to decode a 4K video. Not even > desktop PC can do it properly (and we had to blacklist 4K on all AMD video > cards) Decoding is done by hw codec and the following site says that xperia z3 compact supports 4K video's recording and playback. And MediaOMXReader could playback the video. http://www.sonymobile.com/global-en/products/phones/xperia-z3-compact/features/#camera
Assignee | ||
Comment 30•9 years ago
|
||
(In reply to Jean-Yves Avenard [:jya] from comment #28) > have you been able to run a profiler ? I did not take a profiler. I think it does not work well to fix the problem, because cpu usage is not high. The actual decoding is done by hw. The following is the result of "adb shell top" command during the recorded video's playback. ----------------------------------------------------------- User 29%, System 25%, IOW 0%, IRQ 0% User 313 + Nice 0 + Sys 267 + Idle 475 + IOW 3 + IRQ 0 + SIRQ 3 = 1061 PID TID PR CPU% S VSS RSS PCY UID Thread Proc 293 1801 2 11% R 184672K 53636K fg media OMXCallbackDisp /system/bin/mediaserver 1596 1815 2 6% S 296080K 96152K fg u0_a1596 MediaPD~oder #3 /system/b2g/plugin-container 52 52 0 4% S 0K 0K root system 1596 1803 2 4% S 296080K 95888K fg u0_a1596 MediaPD~oder #2 /system/b2g/plugin-container 1596 1802 0 3% R 296080K 95888K fg u0_a1596 MediaPD~oder #1 /system/b2g/plugin-container 1596 1879 2 1% S 296080K 96152K fg u0_a1596 MediaPD~oder #4 /system/b2g/plugin-container 317 958 2 1% S 338828K 96012K root Compositor /system/b2g/b2g
Assignee | ||
Comment 31•9 years ago
|
||
This is not gonk specific patch. This also fixed the problem on z3c.
Assignee | ||
Updated•9 years ago
|
Attachment #8620748 -
Flags: feedback?(jyavenard)
Assignee | ||
Comment 33•9 years ago
|
||
Comment on attachment 8621012 [details] [diff] [review] wip patch - Force decode ahead when video frames are scarce :jya, can you feedback to the patch? The patch tried to fix the problem by a platform independent way.
Attachment #8621012 -
Flags: feedback?(jyavenard)
Comment 34•9 years ago
|
||
Comment on attachment 8621012 [details] [diff] [review] wip patch - Force decode ahead when video frames are scarce Review of attachment 8621012 [details] [diff] [review]: ----------------------------------------------------------------- That's much better than the earlier proposal. Though, maybe it would be cleaner to make a mirror VideoQueue().GetSize() in the MediaDecoderReader (or just in MediaFormatReader even). This is related to the skip to next keyframe logic and I believe cpearce's long term goal is to have the calculation performed in the reader rather than the MDSM. this would move us into that direction. I still believe that changing the meaning of the media.video-decode-ahead preference is the way to go (and would achieve the same goal here) ; where media.video-decode-ahead actually indicates how many frames ahead will be decoded (not just fed to the decoder). You can then tweak that preference per platform. The new demuxer API allows to demux more than one frame at a time. So we could demux 2 or more frame at once, and feed them directly to the decoder. Each following call to RequestVideoData will immediately get one of the decoded frame from existing pool of decoded frames.. But if the change is urgent, I'm happy with you moving ahead with that change now and I'll revisit it once I'm done with my MSE rewrite. ::: dom/media/MediaFormatReader.cpp @@ +727,5 @@ > + !aDecoder.mError && > + !aDecoder.mDemuxRequest.Exists() && > + !aDecoder.mDemuxEOS && > + aDecoder.mOutput.IsEmpty()) { > + return true; return !aDecoder.mError && (aDecoder.HasPromise() || aDecoder.mForceDecodeAhead) && !aDecoder.mDemuxRequest.Exists() && aDecoder.mOutput.IsEmpty() && (aDecoder.mInputExhausted || !aDecoder.mQueuedSamples.IsEmpty() || Decoder.mForceDecodeAhead || aDecoder.mNumSamplesInput - aDecoder.mNumSamplesOutput < aDecoder.mDecodeAhead); below
Attachment #8621012 -
Flags: feedback?(cpearce)
Comment 35•9 years ago
|
||
Comment on attachment 8621012 [details] [diff] [review] wip patch - Force decode ahead when video frames are scarce Review of attachment 8621012 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/media/MediaPromise.h @@ +921,5 @@ > + Arg1Type mArg1; > + Arg2Type mArg2; > + Arg3Type mArg3; > +}; > + this should be done in a separate patch, and preferably with variadic templates (you can check NS_NewRunnableMethodWithArgs)
Assignee | ||
Comment 36•9 years ago
|
||
(In reply to Jean-Yves Avenard [:jya] from comment #34) > The new demuxer API allows to demux more than one frame at a time. So we > could demux 2 or more frame at once, and feed them directly to the decoder. > Each following call to RequestVideoData will immediately get one of the > decoded frame from existing pool of decoded frames.. > > But if the change is urgent, I'm happy with you moving ahead with that > change now and I'll revisit it once I'm done with my MSE rewrite. Thanks for the quick feedback! We need to fix this bug as soon as possible as part of Spark project. https://wiki.mozilla.org/Firefox_OS/spark
Assignee | ||
Comment 37•9 years ago
|
||
Then in this bug, I am going to create a patch as a short term fix.
Assignee | ||
Updated•9 years ago
|
Attachment #8620748 -
Attachment is obsolete: true
Assignee | ||
Comment 38•9 years ago
|
||
(In reply to Jean-Yves Avenard [:jya] from comment #35) > Comment on attachment 8621012 [details] [diff] [review] > wip patch - Force decode ahead when video frames are scarce > > Review of attachment 8621012 [details] [diff] [review]: > ----------------------------------------------------------------- > > ::: dom/media/MediaPromise.h > @@ +921,5 @@ > > + Arg1Type mArg1; > > + Arg2Type mArg2; > > + Arg3Type mArg3; > > +}; > > + > > this should be done in a separate patch, and preferably with variadic > templates (you can check NS_NewRunnableMethodWithArgs) Thanks for info. But I wanted variadic templates to out of scope this bug.
Assignee | ||
Comment 39•9 years ago
|
||
Attachment #8621012 -
Attachment is obsolete: true
Attachment #8621012 -
Flags: feedback?(jyavenard)
Attachment #8621012 -
Flags: feedback?(cpearce)
Assignee | ||
Comment 40•9 years ago
|
||
Assignee | ||
Updated•9 years ago
|
Attachment #8621638 -
Attachment description: patch - Add force decode ahead to MediaFormatReader → patch part1 - Add force decode ahead to MediaFormatReader
Assignee | ||
Updated•9 years ago
|
Attachment #8621638 -
Flags: review?(jyavenard)
Attachment #8621638 -
Flags: review?(cpearce)
Assignee | ||
Updated•9 years ago
|
Attachment #8621639 -
Flags: review?(bobbyholley)
Assignee | ||
Comment 41•9 years ago
|
||
Re-based.
Attachment #8621638 -
Attachment is obsolete: true
Attachment #8621638 -
Flags: review?(jyavenard)
Attachment #8621638 -
Flags: review?(cpearce)
Assignee | ||
Updated•9 years ago
|
Attachment #8621861 -
Flags: review?(jyavenard)
Attachment #8621861 -
Flags: review?(cpearce)
Comment 42•9 years ago
|
||
Comment on attachment 8621861 [details] [diff] [review] patch part1 - Add force decode ahead to MediaFormatReader Review of attachment 8621861 [details] [diff] [review]: ----------------------------------------------------------------- ::: dom/media/MediaFormatReader.cpp @@ +1364,5 @@ > } > if (mVideo.mDecoder) { > mVideo.mDecoder->Shutdown(); > mVideo.mDecoder = nullptr; > + mVideo.mForceDecodeAhead = false; You want this to be in DecoderData::ResetState ::: dom/media/MediaFormatReader.h @@ +216,5 @@ > nsAutoPtr<DecoderCallback> mCallback; > > // Only accessed from reader's task queue. > uint32_t mDecodeAhead; > + bool mForceDecodeAhead; set mForceDecodeAhead to false in ResetState() ::: dom/media/fmp4/MP4Reader.cpp @@ +609,5 @@ > > nsRefPtr<MediaDecoderReader::VideoDataPromise> > MP4Reader::RequestVideoData(bool aSkipToNextKeyframe, > + int64_t aTimeThreshold, > + bool aForceDecodeAhead) anything done in MediaFormatReader needs to be done in MP4Reader (until the time it's removed) as the logic is almost identical for this. ::: dom/media/mediasource/MediaSourceReader.cpp @@ +361,5 @@ > > void > MediaSourceReader::DoVideoRequest() > { > + mVideoRequest.Begin(GetVideoReader()->RequestVideoData(mDropVideoBeforeThreshold, GetReaderVideoTime(mTimeThreshold), false) If you have issues playing this 4K video, then you will have issue playing 4K MSE too. You need to store the value of aForceDecodeAhead and pass it to the sub-readers.
Attachment #8621861 -
Flags: review?(jyavenard) → review-
Assignee | ||
Comment 43•9 years ago
|
||
Apply the comments.
Attachment #8621861 -
Attachment is obsolete: true
Attachment #8621861 -
Flags: review?(cpearce)
Updated•9 years ago
|
Attachment #8621639 -
Flags: review?(bobbyholley) → review+
Assignee | ||
Updated•9 years ago
|
Attachment #8622569 -
Flags: review?(jyavenard)
Attachment #8622569 -
Flags: review?(cpearce)
Updated•9 years ago
|
Attachment #8622569 -
Flags: review?(jyavenard) → review+
Comment 44•9 years ago
|
||
Comment on attachment 8622569 [details] [diff] [review] patch part1 - Add force decode ahead to MediaFormatReader Review of attachment 8622569 [details] [diff] [review]: ----------------------------------------------------------------- Long term, using media.video-decode-ahead for this would be better, as jya suggested. ::: dom/media/MediaDecoderStateMachine.cpp @@ +1997,5 @@ > } > > bool skipToNextKeyFrame = NeedToSkipToNextKeyframe(); > int64_t currentTime = mState == DECODER_STATE_SEEKING ? 0 : GetMediaTime(); > + bool forceDecodeAhead = static_cast<uint32_t>(VideoQueue().GetSize()) <= GetScarceVideoFrames(); Why add a GetScarceVideoFrames() function? Why not just make this: bool forceDecodeAhead = static_cast<uint32_t>(VideoQueue().GetSize()) <= SCARCE_VIDEO_QUEUE_SIZE; ??? It seems that this is the only place that GetScarceVideoFrames() is used, so it seems unnecessary to make it a function?
Attachment #8622569 -
Flags: review?(cpearce) → review+
Updated•9 years ago
|
Flags: needinfo?(cpearce)
Assignee | ||
Comment 45•9 years ago
|
||
(In reply to Chris Pearce (:cpearce) from comment #44) > Comment on attachment 8622569 [details] [diff] [review] > patch part1 - Add force decode ahead to MediaFormatReader > > Review of attachment 8622569 [details] [diff] [review]: > ----------------------------------------------------------------- > > Long term, using media.video-decode-ahead for this would be better, as jya > suggested. I agree. > > ::: dom/media/MediaDecoderStateMachine.cpp > @@ +1997,5 @@ > > } > > > > bool skipToNextKeyFrame = NeedToSkipToNextKeyframe(); > > int64_t currentTime = mState == DECODER_STATE_SEEKING ? 0 : GetMediaTime(); > > + bool forceDecodeAhead = static_cast<uint32_t>(VideoQueue().GetSize()) <= GetScarceVideoFrames(); > > Why add a GetScarceVideoFrames() function? Why not just make this: > > bool forceDecodeAhead = static_cast<uint32_t>(VideoQueue().GetSize()) <= > SCARCE_VIDEO_QUEUE_SIZE; > > ??? It seems that this is the only place that GetScarceVideoFrames() is > used, so it seems unnecessary to make it a function? I'll update in a next patch.
Assignee | ||
Comment 46•9 years ago
|
||
Apply the comment. Carry "r=jya,cpearce".
Attachment #8622569 -
Attachment is obsolete: true
Assignee | ||
Comment 47•9 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=06fe7cc7c497
Assignee | ||
Comment 48•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #47) > https://treeherder.mozilla.org/#/jobs?repo=try&revision=06fe7cc7c497 some test failures on mse and eme tests on b2g and mac.
Comment 49•9 years ago
|
||
(In reply to Sotaro Ikeda [:sotaro] from comment #48) > (In reply to Sotaro Ikeda [:sotaro] from comment #47) > > https://treeherder.mozilla.org/#/jobs?repo=try&revision=06fe7cc7c497 > > some test failures on mse and eme tests on b2g and mac. hmmm... so the decoder attempts to continue decoding even after the GMP decoder has been shutdown. Previously, the MDSM would ensure that only one decode would be happening and has completed before destroying the GMP reader. Need to have a mechanism to tell the reader to stop decoding ahead.
Assignee | ||
Comment 50•9 years ago
|
||
Rebased.
Attachment #8623215 -
Attachment is obsolete: true
Attachment #8625791 -
Flags: review+
Assignee | ||
Updated•9 years ago
|
Attachment #8617495 -
Attachment is obsolete: true
Assignee | ||
Updated•9 years ago
|
Attachment #8617496 -
Attachment is obsolete: true
Assignee | ||
Comment 51•9 years ago
|
||
Assignee | ||
Comment 52•9 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=6ddf4a23b0e7
Assignee | ||
Comment 53•9 years ago
|
||
re-check without part3. https://treeherder.mozilla.org/#/jobs?repo=try&revision=4b88d51a8cf5
blocking-b2g: spark+ → 2.5+
Assignee | ||
Comment 54•9 years ago
|
||
This is a short time fix of EMEDecryptor::Drain(). The Drain() implementations seems to have a problem. After calling it, there are cases that EMEDecryptor::Decrypted() is called. This seems timing dependent problem of EMEDecryptor. For a long term, more correct fix should replace it.
Assignee | ||
Comment 55•9 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=0fa17e3802be
Assignee | ||
Updated•9 years ago
|
Attachment #8625897 -
Attachment is obsolete: true
Assignee | ||
Comment 56•9 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=5dd4d49970c0
Assignee | ||
Updated•9 years ago
|
Attachment #8628795 -
Flags: review?(cpearce)
Comment 57•9 years ago
|
||
Comment on attachment 8628795 [details] [diff] [review] partch part 3 - Fix EMEDecryptor::Drain() Review of attachment 8628795 [details] [diff] [review]: ----------------------------------------------------------------- I think this could still fail if we send input again before receiving the output from a previous decrypt arrives back from the GMP process. We should just use MediaPromises for CDMProxy::Decrypt, and disconnect them when we flush or drain. I have a patch; I'll file a new bug and make it block this bug.
Attachment #8628795 -
Flags: review?(cpearce) → review-
Comment 58•9 years ago
|
||
(In reply to Chris Pearce (:cpearce) from comment #57) > We should just use MediaPromises for CDMProxy::Decrypt, and disconnect them > when we flush or drain. I have a patch; I'll file a new bug and make it > block this bug. Patch up in bug 1180070. Sotaro, please verify this fixes your bug. Thanks!
Assignee | ||
Updated•9 years ago
|
Attachment #8628795 -
Attachment is obsolete: true
Assignee | ||
Comment 59•9 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=b4c3aaf7ce43
Comment 61•9 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/43ffa51ed029
Status: NEW → RESOLVED
Closed: 9 years ago
status-firefox42:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla42
Comment 62•9 years ago
|
||
This issue is verified fixed on the latest Spark Aries 2.5 build. Video playback is consistent and smooth. Environmental Variables: Device: Aries 2.5 Build ID: 20150706103023 Gaia: dc6c18c0dea7af3c40bfff86c530fd877d899dc4 Gecko: cef11c3e86c3 Gonk: 2916e2368074b5383c80bf5a0fba3fc83ba310bd Version: 42.0a1 (2.5) Firmware Version: D5803_23.1.A.1.28_NCB.ftf User Agent: Mozilla/5.0 (Mobile; rv:42.0) Gecko/42.0 Firefox/42.0
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Updated•9 years ago
|
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
You need to log in
before you can comment on or make changes to this bug.
Description
•