Closed Bug 1210232 Opened 9 years ago Closed 9 years ago

Dragging video progress bar to end, and drag it again to middle renders Video app unable to play videos until killed and relaunched

Categories

(Core :: Audio/Video: Playback, defect, P2)

ARM
Gonk (Firefox OS)
defect

Tracking

()

RESOLVED FIXED
mozilla44
blocking-b2g 2.5+
Tracking Status
firefox44 --- fixed
b2g-v2.2 --- unaffected
b2g-master --- affected

People

(Reporter: pcheng, Assigned: jhlin)

References

Details

(Keywords: regression, Whiteboard: [2.5-Daily-Testing], [spark])

Attachments

(2 files, 1 obsolete file)

Attached file logcat of issue
Description:
In Video app if dragging on progress bar to end of video, release finger, and drag it again to anywhere in the middle will render the app unable to play any video. If user returns Home at this state and go back to Video app, a crash dialog comes up that's basically the same as bug 1203737 comment 8 but with precise STR.

There are many different ways of getting bug 1203737 to occur, however for this bug I want to focus on this particular set of actions should not render the app into a state where videos can no longer be played. User can avoid getting the app crashed by killing the app and relaunch Video app.

STR:
1) Go to Camera app and record two ~10 seconds videos
2) Go to Video app and tap to play the video on the top
3) While video is actively playing, drag the progress bar to the end, release finger, drag it again to the middle, release finger, and tap on play button

Expected: Video can be played

Actual: Video doesn't play. The Video app can't play any more video in this state until the app is killed and relaunched.

Repro rate: 5/6. It seems somehow dependent on video length as well as number of videos available in the app.

Video demonstrating step 3:
https://www.youtube.com/watch?v=ZqDjaQ_kjKM

Device: Aries 2.5
BuildID: 20150930115400
Gaia: 14a64f1ebd353bccc3f1c0399e1a01a03327749e
Gecko: 97e537f85183ef31481602ab9e5587a6e7d16b4d
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

Device: Flame 2.5
BuildID: 20150930030225
Gaia: 1bc0b19527777ffee494962b48db4be857b07d64
Gecko: 891ee0d0ba3ec42b6484cf0205b3c95e21c58f74
Gonk: c4779d6da0f85894b1f78f0351b43f2949e8decd
Version: 44.0a1 (2.5) 
Firmware Version: v18Dv4
User Agent: Mozilla/5.0 (Mobile; rv:44.0) Gecko/44.0 Firefox/44.0
Unable to repro this on Flame 2.2. Video starts to play from the beginning after doing step 3.

Device: Flame 2.2
BuildID: 20150930032502
Gaia: 5dd95cfb9f1d6501ce0e34414596ef3dd9c2f583
Gecko: 65ddad73ad6b
Gonk: bd9cb3af2a0354577a6903917bc826489050b40d
Version: 37.0 (2.2) 
Firmware Version: v18Dv4
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(jmercado)
Keywords: regression
Whiteboard: [2.5-Daily-Testing], [spark]
[Blocking Requested - why for this release]:
Major regression in the video app.  Let's get a window here.
blocking-b2g: --- → 2.5?
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(jmercado)
QA Contact: jthomas
QA Whiteboard: [QAnalyst-Triage+]
QA Contact: jthomas → pcheng
mozilla-inbound regression window:

Last Working
Device: Aries 2.5
BuildID: 20150702205436
Gaia: 4b7ad0dde990bdc44e166818c0bb09a35cd1207f
Gecko: 54bf2c8de576
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

First Broken
Device: Aries 2.5 
BuildID: 20150702212201
Gaia: 4b7ad0dde990bdc44e166818c0bb09a35cd1207f
Gecko: 4272c902d349
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

Gaia is the same so it's a Gecko issue.

Gecko pushlog:
http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=54bf2c8de576&tochange=4272c902d349

This issue appears to be caused by changes made in Bug 1178938.
Blocks: 1178938
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(jmercado)
blocking-b2g: 2.5? → 2.5+
Component: Gaia::Video → Audio/Video
Product: Firefox OS → Core
Bobby the changes for bug 1178938 seem to have caused this issue.  Can you please take a look?
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(jmercado) → needinfo?(bobbyholley)
I'm not working on media anymore. Maybe sotaro can have a look?
Flags: needinfo?(bobbyholley) → needinfo?(sotaro.ikeda.g)
Sotaro is on PTO. Blake knows who can take this bug.
Flags: needinfo?(sotaro.ikeda.g) → needinfo?(bwu)
ni John to comment similar issue in video seeking (bug 1159343). Thanks.
Flags: needinfo?(jolin)
Priority: -- → P2
Thanks for Bobby's help.
Flags: needinfo?(bwu)
Component: Audio/Video → Audio/Video: Playback
MP4Decoder did't accept 3GPP file and OmxDecoder took over. This is a pregression caused by bug 1211339 part 2 patch (Attachment 8669528 [details] [diff]).  Will create a patch to make MP4Decoder handle 3GPP file again.
Assignee: nobody → jolin
Flags: needinfo?(jolin)
Do bug 1186845 again. :)
Attachment #8671166 - Flags: review?(cpearce)
Gonk PDM had similar problem which was fixed in bug 1198664.
Depends on: 1198664
Comment on attachment 8671166 [details] [diff] [review]
Let MP4Decoder handle 3GPP files on B2G.

Review of attachment 8671166 [details] [diff] [review]:
-----------------------------------------------------------------

r+ with change below.

::: dom/media/fmp4/MP4Decoder.cpp
@@ +105,5 @@
> +  // On B2G, treat 3GPP as MP4 when Gonk PDM is available.
> +#ifdef MOZ_GONK_MEDIACODEC
> +  isMP4Video |= aMIMETypeExcludingCodecs.EqualsASCII(VIDEO_3GPP) &&
> +             Preferences::GetBool("media.fragmented-mp4.gonk.enabled", false);
> +#endif

We only build MP4Decoder if MOZ_FMP4 is defined:
http://mxr.mozilla.org/mozilla-central/source/dom/media/moz.build#58

And media.fragmented-mp4.gonk.enabled is true whenever MOZ_FMP4  is defined:

http://mxr.mozilla.org/mozilla-central/source/b2g/app/b2g.js#322

So you shouldn't (now) need the media.fragmented-mp4.gonk.enabled pref check?

So I would prefer:

const bool isMP4Video =
#ifdef MOZ_GONK_MEDIACODEC
  aMIMETypeExcludingCodecs.EqualsASCII(VIDEO_3GPP) ||
#endif
  aMIMETypeExcludingCodecs.EqualsASCII("video/mp4") ||
  aMIMETypeExcludingCodecs.EqualsASCII("video/x-m4v");

To keep the "const" on the bool.
Attachment #8671166 - Flags: review?(cpearce) → review+
Address review comments and carry r+ from cpearce.
Attachment #8671166 - Attachment is obsolete: true
Attachment #8672462 - Flags: review+
https://hg.mozilla.org/mozilla-central/rev/f8283eaf5aad
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla44
Depends on: 1217220
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: