Closed Bug 1112519 Opened 8 years ago Closed 8 years ago

[Flame][Video]The message "Cannot play video: Another app is currently using the video player" pops up after user drag progess bar to end and then back to beginning twice and tap to play.

Categories

(Core :: Audio/Video, defect)

ARM
Gonk (Firefox OS)
defect
Not set
major

Tracking

()

VERIFIED FIXED
mozilla38
blocking-b2g 2.1+
Tracking Status
firefox36 --- wontfix
firefox37 + fixed
firefox38 + fixed
b2g-v2.1 --- verified
b2g-v2.2 --- verified
b2g-master --- verified

People

(Reporter: yulan.zhu, Assigned: sotaro)

Details

Attachments

(11 files)

[1.Description]:
[Flame][v2.1][Video]Play a video and drag progress bar to the end and then drag back to beginning for twice. Then play the video again,  a message "Cannot play video: Another app is currently using the video player" will pop up.
Attach logcat:logcat.txt.
Occurrence time:11:03.

[2.Testing Steps]: 
Premise:There are some videos in SD card.

1.Launch Video.
2.Tap one video to play.
3.Drag progress bar to the end and drag back to beginning twice.
4.Tap to play the video.

[3.Expected Result]: 
4.The video should be played normally.

[4.Actual Result]: 
4.A message  "Cannot play video: Another app is currently using the video player" will pops up.

[5.Reproduction build]: 
Gaia-Rev        79286eafe67707d1330966c1b1413b2d0de595d9
Gecko-Rev       https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/rev/222a62b532db
Build-ID        20141216001202
Version         34.0

[6.Reproduction Frequency]: 
occasionally Recurrence,4/10
TCID: Free Test
Attached file logcat.txt
Attached video Video.MP4
Hi Hubert,
This bug can be repro on Flame 2.1 & 2.2,
Could you help with this bug?
Thank you.

See the attachments: Verify1_1112549_logcat.txt & Verify1_1112519_video.MP4
Occurrence time:01:14
Occurrence rate:4/10

Flame 2.1 version:
Gaia-Rev        73be51f998031f06db0cd660c0e388fa621c9f4c
Gecko-Rev       https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/rev/05dd053f1d90
Build-ID        20150104001209
Version         34.0
Device-Name     flame
FW-Release      4.4.2
FW-Incremental  eng.cltbld.20150104.034656
FW-Date         Sun Jan  4 03:47:06 EST 2015
Bootloader      L1TC000118D0

Flame 2.2 version:
Gaia-Rev        c2bf20d23851d5fda9f8f0ef0267db5f49152376
Gecko-Rev       https://hg.mozilla.org/mozilla-central/rev/55f3224d7513
Build-ID        20150104010206
Version         37.0a1
Device-Name     flame
FW-Release      4.4.2
FW-Incremental  eng.cltbld.20150104.043402
FW-Date         Sun Jan  4 04:34:12 EST 2015
Bootloader      L1TC000118D0
Flags: needinfo?(hlu)
Hi Eric,
This bug can be repro on Flame 2.1 & 2.2 latest build,
Could you help with this bug?
Thank you.

See the attachments: Verify2_1112519_logcat.txt & Verify2_1112519_video.mp4 & test video.zip.
Occurrence time:18:44
Occurrence rate:10/10

Flame 2.1 build:
Gaia-Rev        6957ac8a322234ec99c8abb7cc18dc6a2e0176db
Gecko-Rev       https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/rev/6600eba54256
Build-ID        20150113161204
Version         34.0
Device-Name     flame
FW-Release      4.4.2
FW-Incremental  eng.cltbld.20150113.192836
FW-Date         Tue Jan 13 19:28:47 EST 2015
Bootloader      L1TC000118D0

Flame 2.2 build:
Gaia-Rev        7c5b27cad370db377b18a742d3f3fdb0070e899f
Gecko-Rev       https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/748b20315f75
Build-ID        20150113162504
Version         37.0a2
Device-Name     flame
FW-Release      4.4.2
FW-Incremental  eng.cltbld.20150113.194114
FW-Date         Tue Jan 13 19:41:25 EST 2015
Bootloader      L1TC000118D0
Flags: needinfo?(hlu) → needinfo?(echang)
Attached file test video.part1.rar
Attached file test video.part2.rar
* Legacy bug, edge case.
* Error page pops up, no button to dismiss, but entering task switcher and going back resolves this.
* Sugguest to backlog this.
ni David for comment.
blocking-b2g: --- → 2.2?
QA Whiteboard: [COM=Gaia::Video]
Flags: needinfo?(echang) → needinfo?(dflanagan)
Russ: would you take this bug to investigate and fix, please?  (Let me know if you're tied up with other bugs)  

My first guess was that we were calling ensureVideoLoads() on the rewound video and were failing because the metadata was already loaded, so we were never getting the event. But now I think it is more likely that the double rewind is making us call ensureVideoPlays() twice without a cancelEnsureVideoPlays() between them. That would mean there would be two timeouts, and only one of those timeouts would be cancelled when playback starts.

If that is what is going on, then we could fix it, I think, by calling cancelEnsureVideoPlays() as the first line of ensureVideoPlays(). That would mean we'd have only one timeout running at a time.
Flags: needinfo?(dflanagan) → needinfo?(rnicoletti)
After investigating, ensureVideoPlays is not getting called twice without a cancelEnsureVideoPlays call in between. cancleEnsureVideoPlays is called when the slider is dragged to the end of the video. ensureVideoPlays is only called when the play button is pressed, which is only once in this scenario. 

In any event, this problem is happening because the video app is not getting the 'timeupdate' event when the 'play' button is pressed. From my investigation, what sometimes happens is the video does not get seeked in response to dragging the slider and the next time 'play' is pressed the 'timeupdate' event will not be sent. Regardless of whether there is an issue seeking, this issue occurs because in some cases there is no 'timeupdate' event within 1500ms. When I increased the timeout to 3500ms, still I was able to reproduce the lack of 'timeupdate' event. When it is sent, it is within ~200ms. When it is not sent, it seems it will never be sent.

Also, it appears the issue is related to certain videos. I was not able to reproduce with videos I recorded on my flame but I was able to reproduce with the 'lonely' video (attached to this bug) and with 'meet-the-cubs'.

Sotaro, is this something you can investigate?
Flags: needinfo?(sotaro.ikeda.g)
(In reply to Russ Nicoletti [:russn] from comment #11)
> Sotaro, is this something you can investigate?

Yes, I can investigate.
Assignee: nobody → sotaro.ikeda.g
Flags: needinfo?(sotaro.ikeda.g)
Flags: needinfo?(rnicoletti)
I confirmed the problem happened on v2.2 flame. I am going to investigate about it.
When the problem happens, MediaDecoderStateMachine holded too much video frame and OMXCodec seems to became out of output port buffer condition.
"No time change seek" increase VideoQueue() size. When it happens, MediaDecoderStateMachine::DecodeSeek() complete seek. But it caused to trigger additional video decoding by mDropVideoUntilNextDiscontinuity flag. The flag is set in the DecodeSeek().

https://dxr.mozilla.org/mozilla-central/source/dom/media/MediaDecoderStateMachine.cpp#2506

If several consective "No time change seek" happen, each seek increase VideoQueue() size. And at last, it cause out of output port video frame at OMXCodec.
By applying the patch, the problem was fixed on my v2.2 flame.
Attachment #8558548 - Flags: review?(cpearce)
Attachment #8558548 - Flags: review?(cpearce) → review+
https://hg.mozilla.org/mozilla-central/rev/e1d579c05f56
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Component: Gaia::Video → Video/Audio
Product: Firefox OS → Core
[Blocking Requested - why for this release]: From comment 1, the problem happens on b2g v2.1. If it happens, video playback does not resume until video is reloaded.
blocking-b2g: 2.2? → 2.1?
This seemingly small change causes a crash in a MediaRecorder test file, dom/media/test/test_bug1113600.html, when I uplift to Aurora. I can't reproduce locally, but do get a leak on that test.

Steven, does this sound familiar to to you or anyone on your team? This is blocking a lot of MSE changes we need to uplift to gecko 37.
Flags: needinfo?(slee)
Can you think of what's causing the orange on 37, Sotaro?
Flags: needinfo?(sotaro.ikeda.g)
Hi rillian,

Can you provide more information about the crash? 
1. The patches have you updated
2. It happens on what platforms
Then we could have more clues for the problem. Thanks.
Include Blake.

Sotaro is at Taipei office as well as Blake. They can work together to figure this out.
Flags: needinfo?(bwu)
(In reply to Ralph Giles (:rillian) from comment #21)
> This seemingly small change causes a crash in a MediaRecorder test file,
> dom/media/test/test_bug1113600.html, when I uplift to Aurora. I can't
> reproduce locally, but do get a leak on that test.
> 
> Steven, does this sound familiar to to you or anyone on your team? This is
> blocking a lot of MSE changes we need to uplift to gecko 37.

Ralph, can you provide a link to the test failure?

I did the following for aurora branch, but I did not see the /test/test_bug1113600.html failure.

https://treeherder.mozilla.org/#/jobs?repo=try&revision=959378b080c2
 https://tbpl.mozilla.org/?tree=Try&rev=959378b080c2
Flags: needinfo?(sotaro.ikeda.g)
Interesting. Maybe it's fixed itself? An example of the failure I saw:

  https://treeherder.mozilla.org/#/jobs?repo=try&revision=1793a59b5940
Unfortunately, I can still reproduce:

 https://treeherder.mozilla.org/#/jobs?repo=try&revision=f072a62c23ff
Flags: needinfo?(sotaro.ikeda.g)
(In reply to Ralph Giles (:rillian) from comment #27)
> Unfortunately, I can still reproduce:
> 
>  https://treeherder.mozilla.org/#/jobs?repo=try&revision=f072a62c23ff

Ralph, in your link, you seems always add patches of bug 1112519 and bug 1128411. Isn't it caused by bug 1128411? The followings tryserver result seems to say, bug  1128411 fix causes the test failure.


https://treeherder.mozilla.org/#/jobs?repo=try&revision=0527fc73d163

https://treeherder.mozilla.org/#/jobs?repo=try&revision=030a49f0899e
Flags: needinfo?(sotaro.ikeda.g) → needinfo?(giles)
Ah, you are correct. Thank you, Sotaro.
Flags: needinfo?(slee)
Flags: needinfo?(giles)
Target Milestone: --- → mozilla38
Comment on attachment 8558548 [details] [diff] [review]
patch - Clear mDropVideoUntilNextDiscontinuity when we do not seek

Approval Request Comment
[Feature/regressing bug #]: MSE
[User impact if declined]: Less consistent testing, harder to backport later changes.
[Describe test coverage new/current, TreeHerder]: Landed on m-c. Aurora push green on try.
[Risks and why]: Risk is low. This is an isolated and straightforward change.
[String/UUID change made/needed]: None.
Attachment #8558548 - Flags: approval-mozilla-aurora?
(In reply to Ralph Giles (:rillian) from comment #29)
> Ah, you are correct. Thank you, Sotaro.

no problem :-)
Flags: needinfo?(bwu)
Tracking MSE related bug.
Comment on attachment 8558548 [details] [diff] [review]
patch - Clear mDropVideoUntilNextDiscontinuity when we do not seek

Taking this MSE change in order to get better testing and reduce issues with uplifts as this feature is now targeting 37. Aurora+
Attachment #8558548 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/d28a934ef786

Please nominate the patch for b2g34 if you want it to land on v2.1 as well.
Flags: needinfo?(sotaro.ikeda.g)
blocking-b2g: 2.1? → 2.1+
Can you please nom for b2g34?  (I think we need to also understand the risks/areas to test)
Flags: needinfo?(sotaro.ikeda.g)
Comment on attachment 8558548 [details] [diff] [review]
patch - Clear mDropVideoUntilNextDiscontinuity when we do not seek

NOTE: Please see https://wiki.mozilla.org/Release_Management/B2G_Landing to better understand the B2G approval process and landings.

[Approval Request Comment]
Bug caused by (feature/regressing bug #): Bug 979104
User impact if declined:  If it happens, video playback does not resume until video is reloaded.
Testing completed: locally tested.
Risk to taking this patch (and alternatives if risky): low risk.
String or UUID changes made by this patch: none
Flags: needinfo?(sotaro.ikeda.g)
Attachment #8558548 - Flags: approval-mozilla-b2g34?
Keywords: verifyme
Attachment #8558548 - Flags: approval-mozilla-b2g34? → approval-mozilla-b2g34+
Attached video verify_video.MP4
This issue has been verified successfully on Flame 2.1/2.2/3.0, drag progress bar to the end and drag back to beginning twice and then tap to play the video, the video can be play normally.
See attachment:verify_video.MP4
Rate:0/5

Flame 2.1 build:
Build ID               20150226161203
Gaia Revision          5d3479fdd438412adee4452720856b6b771fe5cd
Gaia Date              2015-02-25 18:20:09
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/rev/0390c73a827b
Gecko Version          34.0
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150226.194129
Firmware Date          Thu Feb 26 19:41:40 EST 2015
Bootloader             L1TC000118D0

Flame 2.2 build:
Build ID               20150226162510
Gaia Revision          eb6a5ac9081d3962198e0f4520b0743d716d7a27
Gaia Date              2015-02-26 17:25:22
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/1be266320634
Gecko Version          37.0
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150226.195624
Firmware Date          Thu Feb 26 19:56:35 EST 2015
Bootloader             L1TC000118D0

Flame 3.0 build:
Build ID               20150226010233
Gaia Revision          7894b929f1b0394f3c997f72a6482bc7813e758d
Gaia Date              2015-02-25 20:50:05
Gecko Revision         https://hg.mozilla.org/mozilla-central/rev/dd6353d61993
Gecko Version          39.0a1
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150226.043500
Firmware Date          Thu Feb 26 04:35:10 EST 2015
Bootloader             L1TC000118D0
Leaving verifyme for verifying firefox37 and firefox38.
QA Whiteboard: [COM=Gaia::Video] → [COM=Gaia::Video][MGSEI-Triage+]
QA Contact: sleedavid
No Repro per build listed below when following the repro steps.  

Environmental Variables:
Device: Aries 2.5
BuildID: 20150923113746
Gaia: aad942e6960cdd6b2d09900b157b16f4ddb9423c
Gecko: abe43c30d78d7546ed7c622c5cf62d265709cdfd
Gonk: 2916e2368074b5383c80bf5a0fba3fc83ba310bd
Version: 44.0a1 (2.5) 
Firmware Version: D5803_23.1.A.1.28_NCB.ftf
User Agent: Mozilla/5.0 (Mobile; rv:44.0) Gecko/44.0 Firefox/44.0
Flags: needinfo?(jmercado)
QA Contact: sleedavid
Status: RESOLVED → VERIFIED
QA Whiteboard: [COM=Gaia::Video][MGSEI-Triage+] → [COM=Gaia::Video][MGSEI-Triage+][Qanalysts-Triage+]
Flags: needinfo?(jmercado)
Keywords: verifyme
You need to log in before you can comment on or make changes to this bug.