New issue
Advanced search Search tips

Issue 681852 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 682261
Owner:
Closed: Jan 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Feature



Sign in to add a comment

Allow running demuxers and all decoders in a Utility Process

Reported by julien.i...@gmail.com, Jan 17 2017

Issue description

UserAgent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0

Steps to reproduce the problem:
HTML5 progressive streaming and MSE.

What is the expected behavior?

What went wrong?
- VideoFramePool does not work with MojoSharedBufferVideoFrame which prevents FFmpeg/Vpx/VideoDecoder to fill mojo video frames.
- MojoRender does not start the video_sink and the audio_sink. It is currently limited to overlay.
- There is no proper UtilityMojoMediaClient. Currently the test mojo client is created for utility process.
- Demuxers are not mojified in the sense that it is not possible to run ChunkDemuxer and FFmpegDemuxer into a separate process than the renderer process.

Did this work before? N/A 

Chrome version: 57.0.2985.0 (Developer Build) (64-bit)  Channel: dev
OS Version: 
Flash Version: (Disabled)

The work has been splited into 3 steps:

1- Allow to use {FFmpeg/Vpx}VideoDecoder from a UtilityProcess:
  enable_mojo_media = true
  mojo_media_services = [ "video_decoder" ]
  mojo_media_host = "utility"
2- Allow to use the DefaultRendererFactory from a Utility Process:
  enable_mojo_media = true
  mojo_media_services = [ "renderer" ]
  mojo_media_host = "utility"
3- Mojify demuxers and allow running {Chunk/FFmpeg}Demuxer in a Utility Process:
  enable_mojo_media = true
  mojo_media_services = [ "demuxer", "renderer" ]
  mojo_media_host = "utility"

1 and 2 are described here: https://docs.google.com/document/d/19n22cLElIoBEBepXA4TslHfVWRbzf37eThzppmXgTac/edit#

3 is described here: https://docs.google.com/document/d/1PLuRatPNRHd7T2osFL7gNxgKtGLW8vyYidgfOZDvBFE/edit#

Since I was not familiar with mojo and so the media mojification I did the design as I was implemented it. I had several rounds of refine so switching between design and implementation all along this run. So that is why I am coming with an implementation already which is not just a proof of concept. But let's start from the beginning by discussing the design first. I am open to any change.
 
Here are the first draft of the implementation. It was supposed to be just a proof of concept but it turned out to be a full implementation of the described design for the reasons exposed above. That is why there are also no unit tests which I will add once there is a consensus on the design.

1: https://codereview.chromium.org/2633383003/
2: https://codereview.chromium.org/2633393002/
   https://codereview.chromium.org/2642433002/
3: https://codereview.chromium.org/2641493002/

Sorry it seems that all CL contain all the previous CL. I do not know how to teach git cl upload to avoid a CL to contain all previous CLs.
Also I currently submitted the CLs with account julien.isorce@gmail.com but I should be able to submit with julien.isorce@chromium.org tomorrow.

> I do not know how to teach git cl upload to avoid a CL to contain all
> previous CLs.

git cl upstream <branch name>
git cl upload
Components: Internals>Media
Labels: -OS-Linux -Pri-2 OS-All Pri-3
Owner: julien.isorce@chromium.org
Status: Started (was: Unconfirmed)
Summary: Allow running demuxers and all decoders in a Utility Process (was: Allow running running demuxers and all decoders in a Utility Process)
Mergedinto: 682261
Status: Duplicate (was: Started)
> git cl upstream <branch name>
> git cl upload

Thx Dan for the tips.

I re-submitted the CLs using that.

Also I splited this issue into 2 so I am closing this one.

Sign in to add a comment