Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 1822 users
Status: Fixed
Owner:
Closed: Jan 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Feature

Blocked on:
issue 528519
issue 541373
issue 543706
issue 543828
issue 543838
issue 567960
issue 571107

Blocking:
issue 253813
issue 253815
issue 261321
issue 516085
issue 548505

Restricted
  • Only users with EditIssue permission may comment.



Sign in to add a comment
Implement MediaRecorder
Project Member Reported by groby@chromium.org, Jul 19 2013 Back to list
Implement http://www.w3.org/TR/mediastream-recording/

niklase: We (gbillock, groby) are planning to work on this - since the original bug was assigned to you, is there any preliminary work done on this? 

gbillock: Assigned to me for now, but feel free to take ownership :)

This is a re-filed version of bug #113676.  In the interest of reducing mail to people who subscribed to this bug to learn when it's fixed, I'm restricting further comments to committers.  Please email me directly if you have any information relevant to the implementation of this API.

 
Comment 1 by groby@chromium.org, Jul 19 2013
Issue 113676 has been merged into this issue.
Comment 2 by groby@chromium.org, Jul 19 2013
Blocking: chromium:261321
groby: do you have any progress update to provide on this?
Comment 4 by groby@chromium.org, Nov 13 2013
Currently "on pause". We are pursuing MediaStreams via Pepper API first, to solve general technical issues around recording/muxing/etc. 

gbillock: Can you provide more detail?
Comment 5 by vli@chromium.org, Nov 19 2013
Labels: Hotlist-DevRel
Blocking: chromium:253813
Blocking: chromium:253815
@groby: Do you have any new update on this issue?
Comment 9 by groby@chromium.org, Apr 1 2014
Cc: groby@chromium.org
Owner: ----
Status: Available
Nothing new to report.  As far as I'm aware, this is currently not actively being worked on.
Is there any blocker for this work item?
Available engineers :)
Is it possible to prioritize it? It is blocking the Camera app's highly anticipated feature - recording video.
If you're writing an app, media streams are close to being fully available in NaCl. I'd suggest using that, as there are no plans that I know of to work on web-based media recorder in the near future.
@gbillock: Is video encoding available in NaCl? Is there a crbug issue for media streams in NaCl efforts?
Encoding is in progress: https://code.google.com/p/chromium/issues/detail?id=352205

See https://code.google.com/p/chromium/issues/detail?id=330851 for tracking bug
Owner: tommi@chromium.org
Will this include encoding audio-only files (e.g. in .ogg or mp3)?
Cc: mtomasz@chromium.org
Ping? Is this actively being worked on? 

@mtomasz - I can't remember if you were working on this, too?
Nope, but I'm waiting for this feature to complete the recording feature of the camera app.
MediaStreamRecorder is not being developed. Potential users should look into the NaCl features for now, which are getting pretty close to done. The features needed for the camera app specifically, for example, are probably either done or very close to done.
Great! Do you have bug numbers for the NaCl-related features?
Comment 22 by tommi@chromium.org, Apr 30 2014
pong - yes but due to unforeseen circumstances we've pushed this out a little bit.
Thanks for the fast response. Any ETA?
Re #20, is there a bug filed for the NaCl Features? What's the name of the pepper API?
Comment 25 by vrk@chromium.org, Sep 24 2014
Labels: -Cr-Blink-WebRTC Cr-Blink-GetUserMedia
Issue 453098 has been merged into this issue.
Cc: tommi@chromium.org
Owner: mcasas@chromium.org
Status: Assigned
Project Member Comment 28 by bugdroid1@chromium.org, Jul 14 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/09903b31ee8a9bf3dfbac6ceb21452c969025071

commit 09903b31ee8a9bf3dfbac6ceb21452c969025071
Author: mcasas <mcasas@chromium.org>
Date: Tue Jul 14 16:20:47 2015

Reland third_party/libwebm

The starting point is smart-extracted from
https://codereview.chromium.org/820593002

and is to be used for MediaStream Recording API,
see bug and/or DD https://goo.gl/kreaQj

BUG=262211

Review URL: https://codereview.chromium.org/1227173002

Cr-Commit-Position: refs/heads/master@{#338700}

[modify] http://crrev.com/09903b31ee8a9bf3dfbac6ceb21452c969025071/DEPS
[add] http://crrev.com/09903b31ee8a9bf3dfbac6ceb21452c969025071/third_party/libwebm/BUILD.gn
[add] http://crrev.com/09903b31ee8a9bf3dfbac6ceb21452c969025071/third_party/libwebm/OWNERS
[add] http://crrev.com/09903b31ee8a9bf3dfbac6ceb21452c969025071/third_party/libwebm/README.chromium
[add] http://crrev.com/09903b31ee8a9bf3dfbac6ceb21452c969025071/third_party/libwebm/libwebm.gyp

Project Member Comment 29 by bugdroid1@chromium.org, Jul 23 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f

commit 6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f
Author: mcasas <mcasas@chromium.org>
Date: Thu Jul 23 10:20:25 2015

media/capture: Adding WebmMuxer class and unittests

WebmMuxer gets encoded video packets and pings a
callback with packetised "blobs" following Live WebM
(simplified Matroska container) format.

See DD @ https://goo.gl/kreaQj for the plan and
https://codereview.chromium.org/1211973012/ for a
hack of all parts together.

BUG=262211

Review URL: https://codereview.chromium.org/1225123006

Cr-Commit-Position: refs/heads/master@{#340066}

[modify] http://crrev.com/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f/media/BUILD.gn
[modify] http://crrev.com/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f/media/DEPS
[add] http://crrev.com/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f/media/capture/webm_muxer.cc
[add] http://crrev.com/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f/media/capture/webm_muxer.h
[add] http://crrev.com/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f/media/capture/webm_muxer_unittest.cc
[modify] http://crrev.com/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f/media/media.gyp
[modify] http://crrev.com/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f/media/media_options.gni
[modify] http://crrev.com/6f2bce27d46c0fd56d26143acdfdcdb1a7fc463f/media/media_variables.gypi

DD can be found in https://goo.gl/vSjzC5
Blocking: chromium:516085
Project Member Comment 32 by bugdroid1@chromium.org, Aug 25 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a466bd2cc32a9d5bcba758473ebd993a296f7d6d

commit a466bd2cc32a9d5bcba758473ebd993a296f7d6d
Author: mcasas <mcasas@chromium.org>
Date: Tue Aug 25 21:22:56 2015

MediaStream: Adding VideoTrackRecorder class and unittests

VTR is in charge of grabbing VideoFrames, encoding them on
IO thread and sending them forward to the registered client
(which will be in time a WebmMuxer crrev.com/1225123006).

See DD @ https://goo.gl/vSjzC5 (*) for the plan and
https://codereview.chromium.org/1211973012/ for a
hack of all Chrome parts.

(*) Used to be https://goo.gl/kreaQj

BUG=262211

Review URL: https://codereview.chromium.org/1233033002

Cr-Commit-Position: refs/heads/master@{#345437}

[modify] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/content/content_renderer.gypi
[modify] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/content/content_tests.gypi
[modify] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/content/renderer/media/DEPS
[add] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/content/renderer/media/video_track_recorder.cc
[add] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/content/renderer/media/video_track_recorder.h
[add] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/content/renderer/media/video_track_recorder_unittest.cc
[modify] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/media/capture/webm_muxer.cc
[modify] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/media/capture/webm_muxer.h
[modify] http://crrev.com/a466bd2cc32a9d5bcba758473ebd993a296f7d6d/media/capture/webm_muxer_unittest.cc

Note to self: intent to implement thread here: https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/2l_G_apqk30
Project Member Comment 34 by bugdroid1@chromium.org, Sep 3 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201727

------------------------------------------------------------------
r201727 | mcasas@chromium.org | 2015-09-03T17:51:45.670949Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/public/web/WebRuntimeFeatures.h?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.cpp?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorderErrorEvent.idl?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video-expected.txt?r1=201727&r2=201726&pathrev=201727
   M http://src.chromium.org/viewvc/blink/trunk/Source/core/events/EventTypeNames.in?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/DEPS?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.h?r1=201727&r2=201726&pathrev=201727
   M http://src.chromium.org/viewvc/blink/trunk/public/platform/Platform.h?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder?r1=201727&r2=201726&pathrev=201727
   M http://src.chromium.org/viewvc/blink/trunk/Source/web/WebRuntimeFeatures.cpp?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorderErrorEvent.cpp?r1=201727&r2=201726&pathrev=201727
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/EventTargetModules.h?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType.html?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorderErrorEvent.h?r1=201727&r2=201726&pathrev=201727
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/EventTargetModulesFactory.in?r1=201727&r2=201726&pathrev=201727
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/RuntimeEnabledFeatures.in?r1=201727&r2=201726&pathrev=201727
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=201727&r2=201726&pathrev=201727
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMediaRecorderHandlerClient.h?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.idl?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/public/platform/WebMediaRecorderHandler.h?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/OWNERS?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType-expected.txt?r1=201727&r2=201726&pathrev=201727
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video.html?r1=201727&r2=201726&pathrev=201727

MediaRecorder Blink part

This CL adds the Blink classes needed for implementing
MediaRecorder API and two tests.This API allows for
recording a MediaStream, i.e. a local or remote feed of 
live media(s). This CL does not include a BlobEvent to
communicate recorded data to JS.

See DD @ https://goo.gl/vSjzC5 (*) for the plan and
https://codereview.chromium.org/1211973012/ for a
hack of all Chrome parts.

(*) Used to be https://goo.gl/kreaQj

BUG=262211

Review URL: https://codereview.chromium.org/1255873002
-----------------------------------------------------------------
Project Member Comment 35 by bugdroid1@chromium.org, Sep 3 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=201733

------------------------------------------------------------------
r201733 | sigbjornf@opera.com | 2015-09-03T18:49:44.569893Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.cpp?r1=201733&r2=201732&pathrev=201733

Oilpan: fix build after r201727.

TBR=oilpan-reviews
BUG=262211
NOTRY=true

Review URL: https://codereview.chromium.org/1329753003
-----------------------------------------------------------------
Labels: -Cr-Blink-GetUserMedia Cr-Blink-MediaStreamRecording
Blocking: chromium:528519
Blocking: chromium:528523
Project Member Comment 39 by bugdroid1@chromium.org, Sep 9 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1567842287b4097350d33c14e5f795559fa008b5

commit 1567842287b4097350d33c14e5f795559fa008b5
Author: mcasas <mcasas@chromium.org>
Date: Wed Sep 09 23:32:06 2015

MediaRecorderHandler (video part) and unittests

MediaRecorderHandler is Blink-orchestrated class implementing
MediaRecorder API (see below). It plugs together an existing
MediaStreamVideoTrack to a new VideoTrackRecorder-WebmMuxer
pair. When MSVTrack passes frames, these get encoded, muxed,
and the result is sent to Blink.

A *note on threading*: As is customary in MediaStream* and
derived classes, all configuration happens on Main Render thread
while frame manipulation and forwarding happens on Render IO
thread [1]. Moreover, all objects can be, and often are, destroyed in
asynchronous and unexpected ways from Blink. This forces
ref-counting for VideoTrackRecorder::VpxEncoder. This is the
also the reason behind the change in WebmMuxer to 2-threaded.

See DD @ https://goo.gl/vSjzC5 (*) for the plan.

(*) Used to be https://goo.gl/kreaQj

[1] https://code.google.com/p/chromium/codesearch#chromium/src/content/renderer/media/media_stream_video_track.cc&sq=package:chromium&type=cs&l=155&rcl=1440530828

BUG=262211

Review URL: https://codereview.chromium.org/1313603004

Cr-Commit-Position: refs/heads/master@{#348037}

[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/content/content_renderer.gypi
[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/content/content_tests.gypi
[add] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/content/renderer/media/media_recorder_handler.cc
[add] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/content/renderer/media/media_recorder_handler.h
[add] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/content/renderer/media/media_recorder_handler_unittest.cc
[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/content/renderer/media/video_track_recorder.cc
[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/content/renderer/media/video_track_recorder.h
[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/content/renderer/media/video_track_recorder_unittest.cc
[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/media/capture/webm_muxer.cc
[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/media/capture/webm_muxer.h
[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/media/capture/webm_muxer_unittest.cc
[modify] http://crrev.com/1567842287b4097350d33c14e5f795559fa008b5/media/media.gyp

Project Member Comment 40 by bugdroid1@chromium.org, Sep 10 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=202065

------------------------------------------------------------------
r202065 | mcasas@chromium.org | 2015-09-10T18:42:13.411199Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/TestExpectations?r1=202065&r2=202064&pathrev=202065
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType-expected.txt?r1=202065&r2=202064&pathrev=202065
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video.html?r1=202065&r2=202064&pathrev=202065
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType.html?r1=202065&r2=202064&pathrev=202065
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.cpp?r1=202065&r2=202064&pathrev=202065

MediaRecorder: disabling LayoutTests in preparation of Cr CLs and a minor update

Also addressing a TODO in MediaRecorder to ASSERT().

context: MediaRecorderHandler is the Cr-content class 
implementing MediaStream Recorder API (see below). It plugs 
together an existing MediaStreamVideoTrack to a new 
VideoTrackRecorder-WebmMuxer pair. When MSVTrack passes
frames, these get encoded, muxed, and the result is sent to 
Blink. See DD @ https://goo.gl/vSjzC5 (*) for the plan.  
CL http://crrev.com/1313603004 landed MediaRecorderHandler, 
this one paves the way for http://crrev.com/1330873002 to
land without breaking the LayoutTests, that will be updated
and reenabled subsequently.

(*) Used to be https://goo.gl/kreaQj

BUG=262211

Review URL: https://codereview.chromium.org/1319473016
-----------------------------------------------------------------
Project Member Comment 41 by bugdroid1@chromium.org, Sep 11 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=202081

------------------------------------------------------------------
r202081 | mcasas@chromium.org | 2015-09-11T00:15:44.026804Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/blink_platform.gypi?r1=202081&r2=202080&pathrev=202081
   A http://src.chromium.org/viewvc/blink/trunk/Source/platform/exported/WebMediaRecorderHandler.cpp?r1=202081&r2=202080&pathrev=202081
   M http://src.chromium.org/viewvc/blink/trunk/public/BUILD.gn?r1=202081&r2=202080&pathrev=202081

MediaRecorder: exporting WebMediaRecorderHandler.h and adding dummy WebMediaRecorderHandler.cpp

BUG=262211

Review URL: https://codereview.chromium.org/1337543002
-----------------------------------------------------------------
Project Member Comment 42 by bugdroid1@chromium.org, Sep 11 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7aea7157cff1fbf7774e566a5168d7e544834769

commit 7aea7157cff1fbf7774e566a5168d7e544834769
Author: mcasas <mcasas@chromium.org>
Date: Fri Sep 11 05:40:35 2015

MediaRecorderHandler: connecting Blink factory method to content/

MediaRecorderHandler changes to implementing WebMediaRecorderHandler;

content/ overrides Blink's createMediaRecorderHandler().

context: MediaRecorderHandler is the Blink-orchestrated class
implementing MediaStream Recorder API (see below). It plugs
together an existing MediaStreamVideoTrack to a new
VideoTrackRecorder-WebmMuxer pair. When MSVTrack passes
frames, these get encoded, muxed, and the result is sent to
Blink. See DD @ https://goo.gl/vSjzC5 (*) for the plan. The
previous CL http://crrev.com/1313603004 landed
MediaRecorderHandler, this one allows for its activation.

(*) Used to be https://goo.gl/kreaQj

Depends on https://crrev.com/1319473016 to disable
Blink tests, that after landing-rolling, should be updated and
reenabled.

BUG=262211

Review URL: https://codereview.chromium.org/1330873002

Cr-Commit-Position: refs/heads/master@{#348338}

[modify] http://crrev.com/7aea7157cff1fbf7774e566a5168d7e544834769/content/renderer/media/media_recorder_handler.cc
[modify] http://crrev.com/7aea7157cff1fbf7774e566a5168d7e544834769/content/renderer/media/media_recorder_handler.h
[modify] http://crrev.com/7aea7157cff1fbf7774e566a5168d7e544834769/content/renderer/media/media_recorder_handler_unittest.cc
[modify] http://crrev.com/7aea7157cff1fbf7774e566a5168d7e544834769/content/renderer/media/video_track_recorder.cc
[modify] http://crrev.com/7aea7157cff1fbf7774e566a5168d7e544834769/content/renderer/renderer_blink_platform_impl.cc
[modify] http://crrev.com/7aea7157cff1fbf7774e566a5168d7e544834769/content/renderer/renderer_blink_platform_impl.h

Project Member Comment 43 by bugdroid1@chromium.org, Sep 11 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0a64d1ebd0d922b2623244ea27e74bdc536833a8

commit 0a64d1ebd0d922b2623244ea27e74bdc536833a8
Author: mostynb <mostynb@opera.com>
Date: Fri Sep 11 18:12:02 2015

unbreak no-webrtc builds

https://codereview.chromium.org/1330873002 broke builds with webrtc
disabled.

BUG=262211

Review URL: https://codereview.chromium.org/1340483002

Cr-Commit-Position: refs/heads/master@{#348435}

[modify] http://crrev.com/0a64d1ebd0d922b2623244ea27e74bdc536833a8/content/renderer/renderer_blink_platform_impl.cc

Project Member Comment 44 by bugdroid1@chromium.org, Sep 16 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=202376

------------------------------------------------------------------
r202376 | mcasas@chromium.org | 2015-09-16T19:24:13.060593Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType-expected.txt?r1=202376&r2=202375&pathrev=202376
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-creation.html?r1=202376&r2=202375&pathrev=202376
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video.html?r1=202376&r2=202375&pathrev=202376
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.cpp?r1=202376&r2=202375&pathrev=202376
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/TestExpectations?r1=202376&r2=202375&pathrev=202376

Blink MediaRecorder: adding "creation" LayoutTest and reconnecting "canRecordMimeType"

This CL:
- reconnects canRecordMimeType LayoutTest
- adds a new -creation test
- _does not_ reconnect basic-video test because the
underlying Cr test infra does not provide meaningful
video tracks, hitting a DCHECK in VideoTrackRecorder
(I need to work on that).
- changes a ASSERT_NOTREACHED() in MediaRecorder
with a WTF_LOG() to allow debugging.
- Allows writeData() to be called when MediaRecorder 
is not in Recording state if |lastInSlice| is true.

BUG=262211

Review URL: https://codereview.chromium.org/1336943004
-----------------------------------------------------------------
Project Member Comment 45 by bugdroid1@chromium.org, Sep 22 2015
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=202646

------------------------------------------------------------------
r202646 | mcasas@chromium.org | 2015-09-22T21:13:19.103679Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/webexposed/global-interface-listing-expected.txt?r1=202646&r2=202645&pathrev=202646
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/modules.gypi?r1=202646&r2=202645&pathrev=202646
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/BlobEventInit.idl?r1=202646&r2=202645&pathrev=202646
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.h?r1=202646&r2=202645&pathrev=202646
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.idl?r1=202646&r2=202645&pathrev=202646
   M http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video.html?r1=202646&r2=202645&pathrev=202646
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/BlobEvent.cpp?r1=202646&r2=202645&pathrev=202646
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/BlobEvent.h?r1=202646&r2=202645&pathrev=202646
   M http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/MediaRecorder.cpp?r1=202646&r2=202645&pathrev=202646
   A http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/mediarecorder/BlobEvent-basic.html?r1=202646&r2=202645&pathrev=202646
   A http://src.chromium.org/viewvc/blink/trunk/Source/modules/mediarecorder/BlobEvent.idl?r1=202646&r2=202645&pathrev=202646

MediaRecorder: Adding BlobEvent and connecting it in MediaRecorderHandler

Note: MediaRecorder-basic-video.html is not reconnected yet 
due to missing infra (See http://crbug.com/532509 and
this is ref'd in TestExpectations [1])

BUG=262211
TEST= https://rawgit.com/Miguelao/demos/master/mediarecorder.html
(video of it at [2] -- sorry, just for @google accounts).


[1] https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/LayoutTests/TestExpectations&sq=package:chromium&type=cs&q=TestExpectations%20MEdiaRecorder&l=409
[2] https://drive.google.com/open?id=0BwgFm5xOT0yCU3hScVh4WjIzZzQ

Review URL: https://codereview.chromium.org/1354863002
-----------------------------------------------------------------
Project Member Comment 46 by bugdroid1@chromium.org, Sep 22 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a46a0503424df3f5f14c9b6422cdf97a26b9d45b

commit a46a0503424df3f5f14c9b6422cdf97a26b9d45b
Author: mcasas <mcasas@chromium.org>
Date: Tue Sep 22 21:19:11 2015

WebmMuxer-MediaRecorderHandler: thread hopping and data ownership

This CL addresses the global thread model between
VideoTrackRecorder - MediaRecorderHandler - WebmMuxer.
The constraints: all of them are created on Main Renderer
thread, whereas VTR frames come via Renderer IO thread.
The final result goes to Blink on Main Renderer Thread.

VideoTrackRecorder (IO) sends frames to WebmMuxer,
that is destroyed on Main Render thread. This causes a
race between WebmMuxer dtor and (the last) frame in
flight. This race was found during integration tests.

To address this issue, this CL moves WebmMuxer
to Main render thread completely, and the frames coming
from VTR on IO thread are trampolined on
MediaRecorderHandler thanks to BindToCurrentLoop.

To clarify data ownership across all these thread hops,
the encoded/contained data is managed as a
scoped_ptr<std::string>. This is OK since that data is
not shared, but passed from stage to stage
(and StringPiece only works in a single thread
environment since the data is not copied but managed
as unowned pointer).

Unittests, docs and headers adapted.

BUG=262211
TESTS=All appropriate UTs passing and also the whole
shebang test in https://crrev.com/1354863002/

Review URL: https://codereview.chromium.org/1351473006

Cr-Commit-Position: refs/heads/master@{#350234}

[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/media_recorder_handler.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/media_recorder_handler.h
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/media_recorder_handler_unittest.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/video_track_recorder.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/video_track_recorder.h
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/video_track_recorder_unittest.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/media/capture/webm_muxer.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/media/capture/webm_muxer.h
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/media/capture/webm_muxer_unittest.cc

Project Member Comment 47 by bugdroid1@chromium.org, Sep 23 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dbadef0a1ffd03e420072061082049478f681e9e

commit dbadef0a1ffd03e420072061082049478f681e9e
Author: mcasas@chromium.org <mcasas@chromium.org>
Date: Thu Sep 03 17:51:45 2015

MediaRecorder Blink part

This CL adds the Blink classes needed for implementing
MediaRecorder API and two tests.This API allows for
recording a MediaStream, i.e. a local or remote feed of 
live media(s). This CL does not include a BlobEvent to
communicate recorded data to JS.

See DD @ https://goo.gl/vSjzC5 (*) for the plan and
https://codereview.chromium.org/1211973012/ for a
hack of all Chrome parts.

(*) Used to be https://goo.gl/kreaQj

BUG=262211

Review URL: https://codereview.chromium.org/1255873002

git-svn-id: svn://svn.chromium.org/blink/trunk@201727 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video-expected.txt
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video.html
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType-expected.txt
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType.html
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/core/events/EventTypeNames.in
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/EventTargetModules.h
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/EventTargetModulesFactory.in
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/mediarecorder/DEPS
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.h
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderErrorEvent.cpp
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderErrorEvent.h
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderErrorEvent.idl
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/mediarecorder/OWNERS
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/modules/modules.gypi
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/public/platform/Platform.h
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/public/platform/WebMediaRecorderHandler.h
[add] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/public/platform/WebMediaRecorderHandlerClient.h
[modify] http://crrev.com/dbadef0a1ffd03e420072061082049478f681e9e/third_party/WebKit/public/web/WebRuntimeFeatures.h

Project Member Comment 48 by bugdroid1@chromium.org, Sep 23 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e2b096e6830442ea48d8e2978d614d46ea01686f

commit e2b096e6830442ea48d8e2978d614d46ea01686f
Author: sigbjornf@opera.com <sigbjornf@opera.com>
Date: Thu Sep 03 18:49:44 2015

Oilpan: fix build after r201727.

TBR=oilpan-reviews
BUG=262211
NOTRY=true

Review URL: https://codereview.chromium.org/1329753003

git-svn-id: svn://svn.chromium.org/blink/trunk@201733 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[modify] http://crrev.com/e2b096e6830442ea48d8e2978d614d46ea01686f/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp

Project Member Comment 49 by bugdroid1@chromium.org, Sep 23 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3

commit bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3
Author: mcasas@chromium.org <mcasas@chromium.org>
Date: Tue Sep 22 21:13:19 2015

MediaRecorder: Adding BlobEvent and connecting it in MediaRecorderHandler

Note: MediaRecorder-basic-video.html is not reconnected yet 
due to missing infra (See http://crbug.com/532509 and
this is ref'd in TestExpectations [1])

BUG=262211
TEST= https://rawgit.com/Miguelao/demos/master/mediarecorder.html
(video of it at [2] -- sorry, just for @google accounts).


[1] https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/LayoutTests/TestExpectations&sq=package:chromium&type=cs&q=TestExpectations%20MEdiaRecorder&l=409
[2] https://drive.google.com/open?id=0BwgFm5xOT0yCU3hScVh4WjIzZzQ

Review URL: https://codereview.chromium.org/1354863002

git-svn-id: svn://svn.chromium.org/blink/trunk@202646 bbb929c8-8fbe-4397-9dbb-9b2b20218538

[add] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic.html
[modify] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video.html
[modify] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
[add] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.cpp
[add] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.h
[add] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl
[add] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/Source/modules/mediarecorder/BlobEventInit.idl
[modify] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
[modify] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.h
[modify] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl
[modify] http://crrev.com/bcf01ab9ab3acd8969cf246fc4b58480aeb36cd3/third_party/WebKit/Source/modules/modules.gypi

Project Member Comment 50 by bugdroid1@chromium.org, Sep 23 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a46a0503424df3f5f14c9b6422cdf97a26b9d45b

commit a46a0503424df3f5f14c9b6422cdf97a26b9d45b
Author: mcasas <mcasas@chromium.org>
Date: Tue Sep 22 21:19:11 2015

WebmMuxer-MediaRecorderHandler: thread hopping and data ownership

This CL addresses the global thread model between
VideoTrackRecorder - MediaRecorderHandler - WebmMuxer.
The constraints: all of them are created on Main Renderer
thread, whereas VTR frames come via Renderer IO thread.
The final result goes to Blink on Main Renderer Thread.

VideoTrackRecorder (IO) sends frames to WebmMuxer,
that is destroyed on Main Render thread. This causes a
race between WebmMuxer dtor and (the last) frame in
flight. This race was found during integration tests.

To address this issue, this CL moves WebmMuxer
to Main render thread completely, and the frames coming
from VTR on IO thread are trampolined on
MediaRecorderHandler thanks to BindToCurrentLoop.

To clarify data ownership across all these thread hops,
the encoded/contained data is managed as a
scoped_ptr<std::string>. This is OK since that data is
not shared, but passed from stage to stage
(and StringPiece only works in a single thread
environment since the data is not copied but managed
as unowned pointer).

Unittests, docs and headers adapted.

BUG=262211
TESTS=All appropriate UTs passing and also the whole
shebang test in https://crrev.com/1354863002/

Review URL: https://codereview.chromium.org/1351473006

Cr-Commit-Position: refs/heads/master@{#350234}

[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/media_recorder_handler.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/media_recorder_handler.h
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/media_recorder_handler_unittest.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/video_track_recorder.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/video_track_recorder.h
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/content/renderer/media/video_track_recorder_unittest.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/media/capture/webm_muxer.cc
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/media/capture/webm_muxer.h
[modify] http://crrev.com/a46a0503424df3f5f14c9b6422cdf97a26b9d45b/media/capture/webm_muxer_unittest.cc

Project Member Comment 51 by bugdroid1@chromium.org, Oct 1 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3f745c808dc852acc4089741f6172129f0aed5f2

commit 3f745c808dc852acc4089741f6172129f0aed5f2
Author: mcasas <mcasas@chromium.org>
Date: Thu Oct 01 14:07:56 2015

Blink:move MediaStreamRecorder from test to experimental

MediaStream Recorder is now ready to record streams (limited
to video-only and instantaneous Blob-delivery) and is
ready for jaunty JS developers to start developing against.
Moreover, passing the MSR to experimental allows for easier
browser_test development.

BUG=262211
TEST= Go to [1] with MediaStreamRecorder enabled:
either with --enable-blink-features=MediaRecorder before
this patch, or just enabling experimental web features in
chrome://flags after this patch.

[1] https://rawgit.com/Miguelao/demos/master/mediarecorder.html

Review URL: https://codereview.chromium.org/1371343002

Cr-Commit-Position: refs/heads/master@{#351791}

[modify] http://crrev.com/3f745c808dc852acc4089741f6172129f0aed5f2/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in

Project Member Comment 52 by bugdroid1@chromium.org, Oct 1 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2f4aeee97410f1d38ec1ca0927a7a71404620bdb

commit 2f4aeee97410f1d38ec1ca0927a7a71404620bdb
Author: mcasas <mcasas@chromium.org>
Date: Thu Oct 01 16:42:10 2015

MediaStream Recorder: add usage counter to WebRTC.webkitApiCount UMA

MediaStream Recorder is a new API and soon will
be enabled as WebKit experimental. This CL adds
a UMA usage counter as another WebRtc JS call
counter.

BUG=262211

Review URL: https://codereview.chromium.org/1371933005

Cr-Commit-Position: refs/heads/master@{#351823}

[modify] http://crrev.com/2f4aeee97410f1d38ec1ca0927a7a71404620bdb/content/renderer/media/media_recorder_handler.cc
[modify] http://crrev.com/2f4aeee97410f1d38ec1ca0927a7a71404620bdb/content/renderer/media/webrtc_uma_histograms.cc
[modify] http://crrev.com/2f4aeee97410f1d38ec1ca0927a7a71404620bdb/content/renderer/media/webrtc_uma_histograms.h
[modify] http://crrev.com/2f4aeee97410f1d38ec1ca0927a7a71404620bdb/tools/metrics/histograms/histograms.xml

An update to everybody that follows this bug: A first version of the MediaStream Recording API is now available in Chrome 47. This is an early experimental version, but if you're interested in this API you can start playing with it. 

You need: 
Chrome 47, current dev channel
Enable experimental Web Platform features under chrome://flags
Demo page: https://rawgit.com/Miguelao/demos/master/mediarecorder.html

Current limitations:
- Only supports video, working on adding audio support.
- Only tested on locally sourced MediaStreams
- No internal buffering or configurable Blob interval, encoded data handed back frame by frame
- VP8, hard coded bit rate (VP9 being worked on this quarter)

Project Member Comment 54 by bugdroid1@chromium.org, Oct 8 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/43ff56ff2bc004d542aa020b21655079e36ac441

commit 43ff56ff2bc004d542aa020b21655079e36ac441
Author: mcasas <mcasas@chromium.org>
Date: Thu Oct 08 05:24:37 2015

Extend components/test_runner's generated WebMediaStream to have a Chrome VideoTrack and Source

BUG=262211, 532509

Review URL: https://codereview.chromium.org/1391363002

Cr-Commit-Position: refs/heads/master@{#353012}

[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/components/html_viewer/web_test_delegate_impl.cc
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/components/html_viewer/web_test_delegate_impl.h
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/components/test_runner/mock_web_user_media_client.cc
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/components/test_runner/mock_web_user_media_client.h
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/components/test_runner/test_runner.h
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/components/test_runner/web_test_delegate.h
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/content/public/renderer/media_stream_api.cc
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/content/public/renderer/media_stream_api.h
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/content/shell/renderer/layout_test/blink_test_runner.cc
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/content/shell/renderer/layout_test/blink_test_runner.h
[modify] http://crrev.com/43ff56ff2bc004d542aa020b21655079e36ac441/third_party/WebKit/LayoutTests/TestExpectations
[delete] http://crrev.com/f479e2157cb0278d1859a02f11db6cc993b7aa36/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-basic-video-expected.txt

Project Member Comment 55 by bugdroid1@chromium.org, Oct 8 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2

commit 7f0786af5f5f03501be8fd56498a0ee6bba5a8a2
Author: mcasas <mcasas@chromium.org>
Date: Thu Oct 08 19:12:48 2015

MediaStream Recorder: Support VP9 encoder

This CL adds support for VP9 codec when recording
MediaStream(s). It's a simple change but spreads a bit
in many classes due essentially to passing the VP9
indication. Unittests are adapted and parameterized.

BUG=262211
TEST=All Unit Tests passing, and [1] with this patch
and "Enable experimental Web Platform features"
enabled in chrome://flags.

[1] https://rawgit.com/Miguelao/demos/master/mediarecorder9.html

Review URL: https://codereview.chromium.org/1384483005

Cr-Commit-Position: refs/heads/master@{#353117}

[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/content/renderer/media/media_recorder_handler.cc
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/content/renderer/media/media_recorder_handler.h
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/content/renderer/media/media_recorder_handler_unittest.cc
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/content/renderer/media/video_track_recorder.cc
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/content/renderer/media/video_track_recorder.h
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/content/renderer/media/video_track_recorder_unittest.cc
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/media/capture/webm_muxer.cc
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/media/capture/webm_muxer.h
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/media/capture/webm_muxer_unittest.cc
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType-expected.txt
[modify] http://crrev.com/7f0786af5f5f03501be8fd56498a0ee6bba5a8a2/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType.html

Blockedon: chromium:541373
Blocking: -chromium:528519
Blockedon: chromium:528519
Blocking: -chromium:528523
Blockedon: chromium:528523
Cc: cpaulin@chromium.org
Blockedon: chromium:543706
Blockedon: chromium:543828
Blockedon: chromium:543838
Blockedon: chromium:544283
Blockedon: chromium:544314
Blockedon: chromium:545156
Blockedon: chromium:548290
Blocking: chromium:548505
Project Member Comment 70 by bugdroid1@chromium.org, Dec 1 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f683b07078e7fba476ef33625b0b41fd6161772c

commit f683b07078e7fba476ef33625b0b41fd6161772c
Author: mcasas <mcasas@chromium.org>
Date: Tue Dec 01 22:42:11 2015

MediaStreamRecorder: enable in Android (including linking libwebm)

This follows a conversation in the Intent-To-Ship [1].

The added code means:
- third_party/libwebm
- media::WebmMuxer
- content::AudioTrackRecorder
- content::VideoTrackRecorder
- content::MediaRecorderHandler.

third_party/libwebm size: 10154B

Increase in ChromePublic-unsigned.apk:
54673026 - 54651438 = 21588B ~= 21KB

----- Note:
Modified code in webm_muxer.cc due to complaint from
arm-linux-androideabi-4.9:
../../media/capture/webm_muxer.cc:49:76: error: array subscript is above array bounds [-Werror=array-bounds]
            kOpusVorbisChannelMap[params.channels() - 1], params.channels());
------

BUG=262211, 561068

TEST=Same as for desktop platform:
https://rawgit.com/Miguelao/demos/master/mediarecorder.html
Results of running it can be found under [2] and [3]

[1] https://groups.google.com/a/chromium.org/d/msg/blink-dev/76HB0BIxk_o/LtZYZWvVBQAJ
[2] https://drive.google.com/file/d/0B82Jhdx0kSTVS3E4bFZwZUxSSTQ/view?usp=sharing
[3] https://drive.google.com/file/d/0B82Jhdx0kSTVM3lfR2N0RFlwNzg/view?usp=sharing

Review URL: https://codereview.chromium.org/1486623004

Cr-Commit-Position: refs/heads/master@{#362536}

[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/content/content_renderer.gypi
[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/content/renderer/BUILD.gn
[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/content/renderer/media/media_recorder_handler.cc
[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/content/renderer/media/media_recorder_handler.h
[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/content/renderer/renderer_blink_platform_impl.cc
[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/media/BUILD.gn
[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/media/capture/webm_muxer.cc
[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/media/media.gyp
[modify] http://crrev.com/f683b07078e7fba476ef33625b0b41fd6161772c/media/media_options.gni

Blockedon: -chromium:528523
Blockedon: chromium:567960
Blockedon: chromium:568702
Project Member Comment 74 by bugdroid1@chromium.org, Dec 10 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/918bd3b360632a246a14008876a6cedd56333469

commit 918bd3b360632a246a14008876a6cedd56333469
Author: mcasas <mcasas@chromium.org>
Date: Thu Dec 10 23:21:41 2015

MediaRecorder: update to spec (1/3)

Inspired by CL: https://crrev.com/1490403003/ ;)

- TreatUndefinedAs=missing is going to be removed from the
spec [1] and is already not present in Gecko implementation [2]

- Also, "BlobEvent.data is non-nullable, so the dict argument
should be required, and the data argument should be required
and non-nullable." [3]

- Removing suffix 'Enum' from RecordingStateEnum [4].

- BlobEvent has a constructor now [5], so remove the TODO.

BUG=262211

[1] https://github.com/w3c/mediacapture-record/issues/7
[2] https://github.com/mozilla/gecko-dev/blob/master/dom/webidl/MediaRecorder.webidl
[3] https://groups.google.com/a/chromium.org/d/msg/blink-dev/76HB0BIxk_o/9ZK0yXirBwAJ
[4] https://github.com/w3c/mediacapture-record/issues/8
[5] https://github.com/w3c/mediacapture-record/issues/11

Review URL: https://codereview.chromium.org/1497883002

Cr-Commit-Position: refs/heads/master@{#364518}

[modify] http://crrev.com/918bd3b360632a246a14008876a6cedd56333469/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic.html
[modify] http://crrev.com/918bd3b360632a246a14008876a6cedd56333469/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.cpp
[modify] http://crrev.com/918bd3b360632a246a14008876a6cedd56333469/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl
[modify] http://crrev.com/918bd3b360632a246a14008876a6cedd56333469/third_party/WebKit/Source/modules/mediarecorder/BlobEventInit.idl
[modify] http://crrev.com/918bd3b360632a246a14008876a6cedd56333469/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl

Blockedon: -chromium:568702
Blockedon: -chromium:548290
Project Member Comment 77 by bugdroid1@chromium.org, Dec 11 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ad2eb4d38e65de43113344457bf1d474b7367c74

commit ad2eb4d38e65de43113344457bf1d474b7367c74
Author: mcasas <mcasas@chromium.org>
Date: Fri Dec 11 01:39:04 2015

MediaRecorder: update to spec (2/3)

- s/DOMString canRecordMimeType/bool isTypeSupported/, see [1]
- s/mimeType/options dictionary/, related to [2]

Also, updated tests everywhere.

BUG=262211

[1] https://github.com/w3c/mediacapture-record/issues/10
[2] https://github.com/w3c/mediacapture-record/issues/19

Review URL: https://codereview.chromium.org/1507183002

Cr-Commit-Position: refs/heads/master@{#364573}

[modify] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/content/test/data/media/mediarecorder_test.html
[delete] http://crrev.com/1e8f666fea1928e3ee9a5dd7855d2f9af2c3dcd3/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-canRecordMimeType.html
[modify] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-events-and-exceptions.html
[add] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-isTypeSupported.html
[modify] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
[modify] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/Source/modules/mediarecorder/BlobEventInit.idl
[modify] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
[modify] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.h
[modify] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl
[add] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderOptions.idl
[modify] http://crrev.com/ad2eb4d38e65de43113344457bf1d474b7367c74/third_party/WebKit/Source/modules/modules.gypi

Project Member Comment 79 by bugdroid1@chromium.org, Dec 12 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6c0b9dc0d2fe634ac1e9f82e6d1c9300f5f08133

commit 6c0b9dc0d2fe634ac1e9f82e6d1c9300f5f08133
Author: mcasas <mcasas@chromium.org>
Date: Sat Dec 12 05:05:19 2015

Blink MediaRecorder: flipping flag to stable

After Intent-To-Ship got LGTMs, see [1]

[1] https://groups.google.com/a/chromium.org/d/msg/blink-dev/76HB0BIxk_o/GmUpqM_5AgAJ

BUG=262211
TBR=philipj@opera.com (RS for the LayoutTest expected.txt update).

Review URL: https://codereview.chromium.org/1515303003

Cr-Commit-Position: refs/heads/master@{#364912}

[modify] http://crrev.com/6c0b9dc0d2fe634ac1e9f82e6d1c9300f5f08133/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
[modify] http://crrev.com/6c0b9dc0d2fe634ac1e9f82e6d1c9300f5f08133/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in

Comment 80 by phil...@opera.com, Dec 18 2015
Blockedon: chromium:571107
Project Member Comment 81 by bugdroid1@chromium.org, Dec 19 2015
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461

commit 0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461
Author: mcasas <mcasas@chromium.org>
Date: Sat Dec 19 00:42:58 2015

MediaRecorder: correct MIME type parsing

Currently the expected/supported MIME types are in the form of
'video/vp8', 'audio/opus' etc, this CL changes that to the
MIME conforming 'video/webm;codecs=vp8', 'video/webm;codecs=vp9',
'audio/webm;codecs=ops' following webm container guidelines [1]

BUG=564950, 262211, 571107
[1] http://www.webmproject.org/docs/container/

TBR=esprehn@chromium.org: Tiny modification in the method
signature in public/platform/WebMediaRecorderHandler.h, where
one argument is splitted into two.

Review URL: https://codereview.chromium.org/1534553003

Cr-Commit-Position: refs/heads/master@{#366232}

[modify] http://crrev.com/0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461/content/renderer/media/media_recorder_handler.cc
[modify] http://crrev.com/0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461/content/renderer/media/media_recorder_handler.h
[modify] http://crrev.com/0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461/content/renderer/media/media_recorder_handler_unittest.cc
[modify] http://crrev.com/0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461/content/test/data/media/mediarecorder_test.html
[modify] http://crrev.com/0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-isTypeSupported.html
[modify] http://crrev.com/0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
[modify] http://crrev.com/0e327b0dd7ac9cd1bcf7df7177a6f3901f7a3461/third_party/WebKit/public/platform/WebMediaRecorderHandler.h

Project Member Comment 82 by bugdroid1@chromium.org, Jan 4 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c6c912b245543da98a0f4e7b25d27af992fb2190

commit c6c912b245543da98a0f4e7b25d27af992fb2190
Author: mcasas <mcasas@chromium.org>
Date: Mon Jan 04 16:04:14 2016

MediaRecorder: update to spec (3/3)

- removed MediaRecorderErrorEvent, using error Event instead. [1]
- removed default value of mimeType in the ctor options dictionary,
since the options themselves are optional [2]
- minor include + DEPS cleanup

BUG=262211, 571107

[1] https://github.com/w3c/mediacapture-record/issues/31
[2] https://github.com/w3c/mediacapture-record/issues/40

Review URL: https://codereview.chromium.org/1540303003

Cr-Commit-Position: refs/heads/master@{#367310}

[modify] http://crrev.com/c6c912b245543da98a0f4e7b25d27af992fb2190/content/renderer/media/media_recorder_handler_unittest.cc
[modify] http://crrev.com/c6c912b245543da98a0f4e7b25d27af992fb2190/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.cpp
[modify] http://crrev.com/c6c912b245543da98a0f4e7b25d27af992fb2190/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.h
[delete] http://crrev.com/733d91de9d641917d15ebd0fbb7d153b1474ede3/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderErrorEvent.cpp
[delete] http://crrev.com/733d91de9d641917d15ebd0fbb7d153b1474ede3/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderErrorEvent.h
[delete] http://crrev.com/733d91de9d641917d15ebd0fbb7d153b1474ede3/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderErrorEvent.idl
[modify] http://crrev.com/c6c912b245543da98a0f4e7b25d27af992fb2190/third_party/WebKit/Source/modules/mediarecorder/MediaRecorderOptions.idl
[modify] http://crrev.com/c6c912b245543da98a0f4e7b25d27af992fb2190/third_party/WebKit/Source/modules/modules.gypi
[modify] http://crrev.com/c6c912b245543da98a0f4e7b25d27af992fb2190/third_party/WebKit/public/platform/WebMediaRecorderHandlerClient.h

Status: Fixed
Set for shipping in 49
Components: -Blink>MediaStreamRecording Blink>MediaStream>Recording
Renamed component Blink>MediaStreamRecording to Blink>MediaStream>Recording. Moving issues to the new component. 
Summary: Implement MediaRecorder (was: Implement MediaStreamRecorder )
Components: Blink>MediaRecording
Components: -Blink>MediaStream>Recording
Sign in to add a comment