Closed Bug 1161768 Opened 11 years ago Closed 8 years ago

[Video][Scrubber TIme] When scrubbing througha video, the "Time Elapsed" does not update until the user stops scrubbing

Categories

(Firefox OS Graveyard :: Gaia::Video, enhancement, P3)

ARM
Gonk (Firefox OS)
enhancement

Tracking

(blocking-b2g:-, b2g-v2.0 affected, b2g-v2.1 affected, b2g-v2.2 affected, b2g-master affected)

RESOLVED WONTFIX
FxOS-S11 (13Nov)
blocking-b2g -
Tracking Status
b2g-v2.0 --- affected
b2g-v2.1 --- affected
b2g-v2.2 --- affected
b2g-master --- affected

People

(Reporter: dharris, Assigned: rnicoletti)

References

()

Details

(Whiteboard: [3.0-Daily-Testing][priority][polish])

Attachments

(1 file)

Attached file Video Scrubbing Logcat
Description: When the user is scrubbing back and forth on the video playback bar, the time elapsed located on the left will not update until the user stops scrubbing. This is inconsistent with the music app. The music app will update the time elpased as the user is scrubbing back and forth, instead of afterwards. This makes finding a specific time of the video frusturating because the user has to constantly stop to wait for the time to update, and then try to correct themselvs Repro Steps: 1) Update a Flame to 20150505010204 2) Open Video app 3) Select a video 4) Scrub backa nd fourth through the video> Observe the "Time Elapsed" on the left Actual: The elapsed time does not update until the user stops scrubbing Expected: The elapsed time updates as the user is scrubbing Environmental Variables: Device: Flame 3.0 (319mb)(Kitkat)(Full Flash) Build ID: 20150505010204 Gaia: 70077825aab2c7a79611befb40a5fe7e610d5443 Gecko: 102d0e9aa9e1 Gonk: a9f3f8fb8b0844724de32426b7bcc4e6dc4fa2ed Version: 40.0a1 (3.0) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:40.0) Gecko/40.0 Firefox/40.0 Repro frequency: 10/10 See attached: Logcat, Video - https://youtu.be/lkSvbuuk8gs
This issue DOES occur on Flame 2.2, 2.1, and 2.0 The elapsed time does not update until the user stops scrubbing Environmental Variables: Device: Flame 2.2 (319mb)(Kitkat)(Full Flash) Build ID: 20150505002501 Gaia: 772a9491909abd02dc67278dd453746e2dd358a8 Gecko: 2df83538ae20 Gonk: ab265fb203390c70b8f2a054f38cf4b2f2dad70a Version: 37.0 (2.2) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0 Environmental Variables: Device: Flame 2.1 (319mb)(Kitkat)(Full Flash) Build ID: 20150504001200 Gaia: b4a03b7ee61de5a479b3cf0916f47e91a43b0f50 Gecko: 03bfe12e50d0 Gonk: a9f3f8fb8b0844724de32426b7bcc4e6dc4fa2ed Version: 34.0 (2.1) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0 Environmental Variables: Device: Flame 2.0 (319mb)(Kitkat)(Full Flash) Build ID: 20150427000202 Gaia: 84898cadf28b1a1fcd03b726cff658de470282f0 Gecko: f700ee0a507d Gonk: ebad7da532429a6f5efadc00bf6ad8a41288a429 Version: 32.0 (2.0) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:32.0) Gecko/32.0 Firefox/32.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(pbylenga)
NI on component owner for nomination decision and assignment.
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(pbylenga) → needinfo?(npark)
Hi Blake, this bug sounds like https://bugzilla.mozilla.org/show_bug.cgi?id=1069806, which does not have any status updates for a while. can you confirm?
Flags: needinfo?(npark) → needinfo?(bwu)
See Also: → 1069806
I think this bug is to address the problem that frame is not displayed immediately when users drag the progress bar unless users stop. And bug 1069806 is to address the timestamp is not currently shown when user drags the bar. It is a little different.
Flags: needinfo?(bwu)
John, May I know how often video APP calls fastSeek when users drag the process bar?
Flags: needinfo?(im)
Blake(In reply to Blake Wu [:bwu][:blakewu] from comment #4) > I think this bug is to address the problem that frame is not displayed > immediately when users drag the progress bar unless users stop. And bug > 1069806 is to address the timestamp is not currently shown when user drags > the bar. It is a little different. Blake, this bug was originally created to show that the timestamps were not updating as the user scrubbed through the playback bar. But I did also see that the video frame was not updating in realtime either.
(In reply to Derek Harris [:DerekH] from comment #6) > Blake(In reply to Blake Wu [:bwu][:blakewu] from comment #4) > > I think this bug is to address the problem that frame is not displayed > > immediately when users drag the progress bar unless users stop. And bug > > 1069806 is to address the timestamp is not currently shown when user drags > > the bar. It is a little different. > > Blake, this bug was originally created to show that the timestamps were not > updating as the user scrubbed through the playback bar. But I did also see > that the video frame was not updating in realtime either. Got it. Thanks for your information!
(In reply to Blake Wu [:bwu][:blakewu] from comment #5) > John, > May I know how often video APP calls fastSeek when users drag the process > bar? It is called on every touch move event received.
Flags: needinfo?(im)
(In reply to John Hu [:johnhu][:johu][:醬糊小弟] from comment #8) > (In reply to Blake Wu [:bwu][:blakewu] from comment #5) > > John, > > May I know how often video APP calls fastSeek when users drag the process > > bar? > > It is called on every touch move event received. Thanks for this info. How frequent touch move event is triggered if user's finger doesn't leave screen? If it is very high, there would be many seeking operations in a short time. That may cause bad user experience since too many seeks could cause gecko busy in doing unnecessary seeks. It would better to do seek when a period of time or space is passed. We can split the video duration to 40 slices (for exmaple), each slice is duration/40. If the difference between last seek to the next seek is larger than one slice, we do seek. For example, if a video's duration is 20 second (slice = 20/40 = 0.5 sec), video app only do next seek if it is far away from the previous seek by over o.5 second.
John, How do you think?
Flags: needinfo?(im)
(In reply to Blake Wu [:bwu][:blakewu] from comment #9) > Thanks for this info. > How frequent touch move event is triggered if user's finger doesn't leave > screen? > If it is very high, there would be many seeking operations in a short time. > That may cause bad user experience since too many seeks could cause gecko > busy in doing unnecessary seeks. It would better to do seek when a period of > time or space is passed. We can split the video duration to 40 slices (for > exmaple), each slice is duration/40. If the difference between last seek to > the next seek is larger than one slice, we do seek. For example, if a > video's duration is 20 second (slice = 20/40 = 0.5 sec), video app only do > next seek if it is far away from the previous seek by over o.5 second. The frequency is very high, I think. I don't think to split a video into multiple slices is a good idea because we cannot expected the length of a video is large enough to slice it. Like, if we have a video only have 3sec and we slice 40 slices, each slice may have 75ms. This doesn't make sense. To wait for a small piece of time before seeking may be a good idea. But it would be nice to explore if we have other better idea, like seeking the last dragging position after onseeked event is fired and do the final seeking while user release the finger.
Flags: needinfo?(im)
(In reply to John Hu [:johnhu][:johu][:醬糊小弟] from comment #11) > (In reply to Blake Wu [:bwu][:blakewu] from comment #9) > > Thanks for this info. > > How frequent touch move event is triggered if user's finger doesn't leave > > screen? > > If it is very high, there would be many seeking operations in a short time. > > That may cause bad user experience since too many seeks could cause gecko > > busy in doing unnecessary seeks. It would better to do seek when a period of > > time or space is passed. We can split the video duration to 40 slices (for > > exmaple), each slice is duration/40. If the difference between last seek to > > the next seek is larger than one slice, we do seek. For example, if a > > video's duration is 20 second (slice = 20/40 = 0.5 sec), video app only do > > next seek if it is far away from the previous seek by over o.5 second. > > The frequency is very high, I think. I don't think to split a video into > multiple slices is a good idea because we cannot expected the length of a > video is large enough to slice it. Like, if we have a video only have 3sec > and we slice 40 slices, each slice may have 75ms. This doesn't make sense. We can set a minimum value, like 100ms or 200ms to avoid this case. > > To wait for a small piece of time before seeking may be a good idea. But it > would be nice to explore if we have other better idea, like seeking the last > dragging position after onseeked event is fired and do the final seeking Waiting onseeked to trigger the next seek might be not good for UX since there will be still many seeks waiting and queued to be done. It would better to avoid some many seeks from app side. > while user release the finger.
(In reply to Blake Wu [:bwu][:blakewu] from comment #12) > > To wait for a small piece of time before seeking may be a good idea. But it > > would be nice to explore if we have other better idea, like seeking the last > > dragging position after onseeked event is fired and do the final seeking > Waiting onseeked to trigger the next seek might be not good for UX since > there will be still many seeks waiting and queued to be done. It would > better to avoid some many seeks from app side. I mean to sync the last position and issue the seek which should be made in gaia. If the seeked is not received, the video frame will be updated. So, what we can do is to move the scrubber to correct position. At this moment, we don't issue seek request. Once the seeked event is got, we calculate the current position and use it to issue the seek request. If this can be made by gecko, it would be good. But this should be able to be implemented in gaia. > > while user release the finger.
(In reply to John Hu [:johnhu][:johu][:醬糊小弟] from comment #13) > (In reply to Blake Wu [:bwu][:blakewu] from comment #12) > > > To wait for a small piece of time before seeking may be a good idea. But it > > > would be nice to explore if we have other better idea, like seeking the last > > > dragging position after onseeked event is fired and do the final seeking > > Waiting onseeked to trigger the next seek might be not good for UX since > > there will be still many seeks waiting and queued to be done. It would > > better to avoid some many seeks from app side. > > I mean to sync the last position and issue the seek which should be made in > gaia. If the seeked is not received, the video frame will be updated. ^^^^^^^^^^^ <== typo here. the video frame won't be updated.
Hi Blake, do you think it's worth marking this bug as 3.0 blocker?
Flags: needinfo?(bwu)
(In reply to No-Jun Park [:njpark] from comment #15) > Hi Blake, do you think it's worth marking this bug as 3.0 blocker? Sure. I think it's worth since the current user experience is not good.
Flags: needinfo?(bwu)
[Blocking Requested - why for this release]: The user experience of seek is not good enough and there is some room to improve.
blocking-b2g: --- → 3.0?
blocking-b2g: 3.0? → 3.0+
Severity: normal → enhancement
Removing it from blocker and marking it enhancement. Russ, once the telemetry work for 2.5 is done, please look into this. Also if you can provide an estimate for this and the risk in the changes, it will be great. Based on that, we can slot this into the appropriate sprint. (For now, slotting this into one of the september sprints, so it stays in the radar for planning) Thanks Hema
Flags: needinfo?(rnicoletti)
Target Milestone: --- → FxOS-S7 (18Sep)
John and Blake, I'm not certain which issue or issues this bug is focused on. Is it to update the elapsed time while the user is moving the scrubber or is it to update the frame while the user is moving the scrubber. Comment 4 seems to indicate it is about updating the frame and that bug 1069806 is about updating the elapsed time. I'm asking because they way I understand comment 13, John's suggestion will ensure the elapsed time is updated but will result in the frame not being updated. So if this bug is about updating the frame while the user is moving the scrubber, John's suggestion will not resolve this bug. Am I correct?
Flags: needinfo?(rnicoletti)
Flags: needinfo?(im)
Flags: needinfo?(bwu)
Btw, I'm wondering if we can use a variation of Blake's suggestion (comment 9). That is, given the elapsed time has a granularity of 1 second, we can have a fixed "seek slice" of 1 second for all videos. If the scrubber is moved more than 1 second past of forward the last seek position, we seek (and explicitly update the elapsed time -- don't wait for onseeked). I have implemented a POC of this implementation and it seems to work well: [1] (pardon the unprofessional video) [1] http://www.youtube.com/watch?v=dfXIhQcOOVU
(In reply to Russ Nicoletti [:russn] (PTO until 8/10/15) from comment #19) > John and Blake, I'm not certain which issue or issues this bug is focused > on. Is it to update the elapsed time while the user is moving the scrubber > or is it to update the frame while the user is moving the scrubber. Comment > 4 seems to indicate it is about updating the frame and that bug 1069806 is > about updating the elapsed time. I'm asking because they way I understand > comment 13, John's suggestion will ensure the elapsed time is updated but > will result in the frame not being updated. So if this bug is about updating > the frame while the user is moving the scrubber, John's suggestion will not > resolve this bug. Am I correct? IMHO, what we should do is to update the frame while the user is moving the scrubber and the elapsed time needs to be updated as the same as the timestamp of the displayed frame.
Flags: needinfo?(bwu)
(In reply to Russ Nicoletti [:russn] (PTO until 8/10/15) from comment #19) > So if this bug is about updating > the frame while the user is moving the scrubber, John's suggestion will not > resolve this bug. Am I correct? Yes, you are correct. IIRC, this should be an issue that UI doesn't update while user drags scrubber. (In reply to Russ Nicoletti [:russn] (PTO until 8/10/15) from comment #20) > Btw, I'm wondering if we can use a variation of Blake's suggestion (comment > 9). That is, given the elapsed time has a granularity of 1 second, we can > have a fixed "seek slice" of 1 second for all videos. If the scrubber is > moved more than 1 second past of forward the last seek position, we seek > (and explicitly update the elapsed time -- don't wait for onseeked). I have > implemented a POC of this implementation and it seems to work well: [1] > (pardon the unprofessional video) > > [1] http://www.youtube.com/watch?v=dfXIhQcOOVU This looks pretty good. Please also test with very short video file. Thanks.
Flags: needinfo?(im)
With my POC (comment 20), the behavior for short videos (less than 3 seconds) is not great since it will only seek at most twice while dragging. Perhaps we can use a shorter seek slice (250ms?) when the video duration is less than a specified duration (3 seconds?).
Hema, I believe the effort to address this issue is small (a couple of days) and the risk is also small. Putting it in a September sprint should be fine.
Flags: needinfo?(hkoka)
After discussing with djf, I think a variation on johu's suggestion is best: when the user is moving the play head, record the seek position but only seek when the video element is not in the middle of seeking. When we get the 'seeked' event, if the current position of the media is not the latest that was recorded, seek to the latest recorded position.
Flags: needinfo?(hkoka)
Assignee: nobody → rnicoletti
Priority: -- → P3
Status: NEW → ASSIGNED
blocking-b2g: 2.5+ → -
Whiteboard: [3.0-Daily-Testing] → [3.0-Daily-Testing][priority][polish]
Target Milestone: FxOS-S7 (18Sep) → FxOS-S11 (13Nov)
Firefox OS is not being worked on
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: