Tab mirroring should use async pan and zoom offsets when rendering video stream

RESOLVED INVALID

Status

()

Firefox for Android
Screencasting
RESOLVED INVALID
3 years ago
2 years ago

People

(Reporter: blassey, Unassigned)

Tracking

Trunk
x86
Mac OS X
Points:
---

Firefox Tracking Flags

(fennec+)

Details

In fennec (and eventually all gecko-based products) when you pan or zoom, we asynchronously move and/or scale the image the user is seeing and only update the scroll position in a rendering sense periodically. Currently the tab streaming code renders based on that periodically updated scroll position resulting in what appears to be herky jerky scrolling performance on the second screen.
Does this imply we should be should be using the compositor thread to stream to the second screen?
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #1)
> Does this imply we should be should be using the compositor thread to stream
> to the second screen?

It does, yes. One idea I have is to run the compositor again on every frame against a EGLSurface that is backed by an ImageReader[0]. We'd then feed the output of that into our video encoder.

The problem with this is that it won't work if you want to stream a tab that we are not displaying. I guess in that case we could fall back to the current thing.

[0] https://developer.android.com/reference/android/media/ImageReader.html
Karen - Thoughts on whether this should track?
Flags: needinfo?(krudnitski)
'+' for now, but we can track that a release if needed.
tracking-fennec: ? → +
I expect some media discussion and attention around MWC for second screen, so getting this fixed sooner rather than later is a good thing.

I'm not saying it has to be done for MWC, but having improvements targeted around those releases will provide the better experience for those who want to try based on us pushing out that message.

Therefore, targeting 39 would be my ideal.
Flags: needinfo?(krudnitski)
Mirroring was removed.
Status: NEW → RESOLVED
Last Resolved: 2 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.