New issue
Advanced search Search tips

Issue 695264 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Feature

Blocking:
issue 690364



Sign in to add a comment

Implement media layer of mediaCapabilities.decodingInfo()

Project Member Reported by chcunningham@chromium.org, Feb 23 2017

Issue description

https://github.com/WICG/media-capabilities

This bug tracks implementing the answer to decodingInfo() calls inside media stack. The blink layer ( Issue 690380 ) will receive the query and pass it to media stack.

Internal design doc: http://go/mcap-decode-perf-design


 
Cc: mlamouri@chromium.org
Initial cleanup of MimeUtil now landed:
https://codereview.chromium.org/2700893003/
Project Member

Comment 3 by bugdroid1@chromium.org, Mar 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b

commit a4a8efbb8b68c2a61636fc469943ecb1d09bd84b
Author: chcunningham <chcunningham@chromium.org>
Date: Wed Mar 22 16:55:02 2017

Rename MediaClientAndroid to MediaDrmBridgeClient

MediaClient and MediaClientAndroid (now MediaDrmBridgeClient)
are distict interfaces. The previous naming wrongly suggests that
MediaClientAndroid is the Android implementation of MediaClient.

BUG= 695264 

Review-Url: https://codereview.chromium.org/2756333002
Cr-Commit-Position: refs/heads/master@{#458783}

[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/android_webview/BUILD.gn
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/android_webview/common/aw_content_client.cc
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/android_webview/common/aw_content_client.h
[rename] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/android_webview/common/aw_media_drm_bridge_client.cc
[rename] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/android_webview/common/aw_media_drm_bridge_client.h
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chrome/common/BUILD.gn
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chrome/common/chrome_content_client.cc
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chrome/common/chrome_content_client.h
[delete] https://crrev.com/ac2f201c499c2d65a5d43b6ce49d9af5b4520f99/chrome/common/chrome_media_client_android.cc
[delete] https://crrev.com/ac2f201c499c2d65a5d43b6ce49d9af5b4520f99/chrome/common/chrome_media_client_android.h
[add] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chrome/common/media/chrome_media_drm_bridge_client.cc
[add] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chrome/common/media/chrome_media_drm_bridge_client.h
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chromecast/common/cast_content_client.cc
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chromecast/common/cast_content_client.h
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chromecast/common/media/BUILD.gn
[rename] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chromecast/common/media/cast_media_drm_bridge_client.cc
[rename] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/chromecast/common/media/cast_media_drm_bridge_client.h
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/content/browser/browser_main_loop.cc
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/content/gpu/gpu_child_thread.cc
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/content/public/common/content_client.cc
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/content/public/common/content_client.h
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/media/base/android/BUILD.gn
[delete] https://crrev.com/ac2f201c499c2d65a5d43b6ce49d9af5b4520f99/media/base/android/media_client_android.cc
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/media/base/android/media_drm_bridge.cc
[add] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/media/base/android/media_drm_bridge_client.cc
[rename] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/media/base/android/media_drm_bridge_client.h
[modify] https://crrev.com/a4a8efbb8b68c2a61636fc469943ecb1d09bd84b/media/base/android/media_drm_bridge_delegate.h

Project Member

Comment 4 by bugdroid1@chromium.org, Mar 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/115663853cd6d59c87f6b605381d52498c179bfb

commit 115663853cd6d59c87f6b605381d52498c179bfb
Author: chcunningham <chcunningham@chromium.org>
Date: Fri Mar 24 03:22:01 2017

New media/base/decode_capabilities.h|cc

Media/ should describe its decode capabilities. Embedders may
override via MediaClient. For time being, this preserves the
simple logic from content::RenderMediaClient. In the long run
it will check profiles for actual decoder support and include
android specific logic currently in MimeUtilInternal.

BUG= 695264 

Review-Url: https://codereview.chromium.org/2758873003
Cr-Commit-Position: refs/heads/master@{#459352}

[modify] https://crrev.com/115663853cd6d59c87f6b605381d52498c179bfb/content/renderer/media/render_media_client.cc
[modify] https://crrev.com/115663853cd6d59c87f6b605381d52498c179bfb/content/renderer/media/render_media_client_unittest.cc
[modify] https://crrev.com/115663853cd6d59c87f6b605381d52498c179bfb/media/base/BUILD.gn
[add] https://crrev.com/115663853cd6d59c87f6b605381d52498c179bfb/media/base/decode_capabilities.cc
[add] https://crrev.com/115663853cd6d59c87f6b605381d52498c179bfb/media/base/decode_capabilities.h
[add] https://crrev.com/115663853cd6d59c87f6b605381d52498c179bfb/media/base/decode_capabilities_unittest.cc
[modify] https://crrev.com/115663853cd6d59c87f6b605381d52498c179bfb/media/base/media_client.h
[modify] https://crrev.com/115663853cd6d59c87f6b605381d52498c179bfb/media/base/mime_util_internal.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Mar 30 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/600bdb41533233777a5e852e1b5d08f6ec1bca5d

commit 600bdb41533233777a5e852e1b5d08f6ec1bca5d
Author: servolk <servolk@chromium.org>
Date: Thu Mar 30 23:18:24 2017

Add IsSupportedAudioConfig in MediaClient

We already have the IsSupportedVideoConfig function in MediaClient,
this CL will add a very similar API for audio codec checks on various
platforms.

BUG= 695264 

Review-Url: https://codereview.chromium.org/2783963002
Cr-Commit-Position: refs/heads/master@{#460921}

[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/chromecast/common/media/cast_media_client.cc
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/chromecast/common/media/cast_media_client.h
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/chromecast/media/base/media_codec_support.cc
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/chromecast/media/base/media_codec_support.h
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/content/browser/media/media_canplaytype_browsertest.cc
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/content/renderer/media/render_media_client.cc
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/content/renderer/media/render_media_client.h
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/media/base/decode_capabilities.cc
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/media/base/decode_capabilities.h
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/media/base/key_systems_unittest.cc
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/media/base/media_client.h
[modify] https://crrev.com/600bdb41533233777a5e852e1b5d08f6ec1bca5d/media/base/mime_util_internal.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Apr 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8aeee0b5c65d2ea16d2c52839cf80bcf99273555

commit 8aeee0b5c65d2ea16d2c52839cf80bcf99273555
Author: chcunningham <chcunningham@chromium.org>
Date: Fri Apr 07 22:41:40 2017

Simplify/Cleanup MediaClient

This CL does a number of things to cleanup MediaClient's
implementation and usage. This clears the way for an expanded role
in describing MediaCapabilities.

Remove CastMediaClient. Merge methods into CastContentRenderClient.
  ContentRenderClient is now the one-stop-shop for embedder
  customization. I initially  explored giving each embedder its own
  MediaClient, but this ended up splitting media customization
  between ContentRenderClient and MediaClient (some customization is
  too high level to move to MediaClient). The current route is also
  less code.

Remove all Chrome specific logic from RenderMediaClient.
  RenderMediaClient is now the plumbing for *all* content embedder
  customizations to be visible in media/. Chrome is just one of many
  embedders and much of the chrome specific code was stale anyway.

Remove KeySystemNameForUMA from MediaClient interface
  Decentralizing this logic was overly complicated.
  Now centralized to key_systems.cc.

Other little cleanups
  Centralize all media/ Rappor usage in MediaLog.
  Move cast key_systems_cast into chromecast/renderer/media.
  Simplify key_systems_unittest.cc

BUG= 695264 

Review-Url: https://codereview.chromium.org/2712983004
Cr-Commit-Position: refs/heads/master@{#463025}

[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chrome/renderer/BUILD.gn
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chrome/renderer/chrome_content_renderer_client.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chrome/renderer/chrome_content_renderer_client.h
[add] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chrome/renderer/media/chrome_key_systems_provider.cc
[add] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chrome/renderer/media/chrome_key_systems_provider.h
[add] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chrome/renderer/media/chrome_key_systems_provider_unittest.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chrome/test/BUILD.gn
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chromecast/common/media/BUILD.gn
[delete] https://crrev.com/1b22d05a5146584837929c70b04f87402156e649/chromecast/common/media/cast_media_client.cc
[delete] https://crrev.com/1b22d05a5146584837929c70b04f87402156e649/chromecast/common/media/cast_media_client.h
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chromecast/renderer/BUILD.gn
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chromecast/renderer/cast_content_renderer_client.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chromecast/renderer/cast_content_renderer_client.h
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chromecast/renderer/media/BUILD.gn
[rename] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chromecast/renderer/media/key_systems_cast.cc
[rename] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/chromecast/renderer/media/key_systems_cast.h
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/components/cdm/renderer/android_key_systems.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/content/public/renderer/content_renderer_client.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/content/public/renderer/content_renderer_client.h
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/content/renderer/media/render_media_client.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/content/renderer/media/render_media_client.h
[delete] https://crrev.com/1b22d05a5146584837929c70b04f87402156e649/content/renderer/media/render_media_client_unittest.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/content/renderer/media/webmediaplayer_ms.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/content/renderer/render_frame_impl.h
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/content/test/BUILD.gn
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/base/key_systems.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/base/key_systems_unittest.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/base/media_client.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/base/media_client.h
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/base/media_log.h
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/blink/webencryptedmediaclient_impl.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/blink/webencryptedmediaclient_impl.h
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/blink/webmediaplayer_util.cc
[modify] https://crrev.com/8aeee0b5c65d2ea16d2c52839cf80bcf99273555/media/blink/webmediaplayer_util.h

Project Member

Comment 7 by bugdroid1@chromium.org, Apr 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f4f7b3aad31bbce44c84dd2cdbd2400a90f87d51

commit f4f7b3aad31bbce44c84dd2cdbd2400a90f87d51
Author: dalecurtis <dalecurtis@chromium.org>
Date: Sat Apr 15 01:22:05 2017

Fix incorrect collation of media logs.

http://crrev.com/463025 incorrectly started using a global MediaLog
instance for each RenderFrame. The RendererMediaLog uses an internal
counter for routing and collating player logs, so doing this causes
all logs for a render frame to end up in the same player.

This patch reverts that portion of the change; though it's questionable
if WebEncryptedMediaClientImpl() should actually be given a MediaLog
just for logging RAPPOR entries. Presumably there is another mechanism
that could accomplish this.

BUG= 695264 ,  711818 
TEST=unittest TBD, manually verified cnn.com, internetradio.com each create
a new button entry in chrome://media-internals. Watch time logs are properly
recorded.

Review-Url: https://codereview.chromium.org/2819973002
Cr-Commit-Position: refs/heads/master@{#464844}

[modify] https://crrev.com/f4f7b3aad31bbce44c84dd2cdbd2400a90f87d51/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/f4f7b3aad31bbce44c84dd2cdbd2400a90f87d51/content/renderer/render_frame_impl.h

Project Member

Comment 8 by bugdroid1@chromium.org, Apr 17 2017

Labels: merge-merged-3071
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0398002f42e790ba37023328f65fdfd5208feac7

commit 0398002f42e790ba37023328f65fdfd5208feac7
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Mon Apr 17 18:15:53 2017

Merge M59: "Fix incorrect collation of media logs."

http://crrev.com/463025 incorrectly started using a global MediaLog
instance for each RenderFrame. The RendererMediaLog uses an internal
counter for routing and collating player logs, so doing this causes
all logs for a render frame to end up in the same player.

This patch reverts that portion of the change; though it's questionable
if WebEncryptedMediaClientImpl() should actually be given a MediaLog
just for logging RAPPOR entries. Presumably there is another mechanism
that could accomplish this.

BUG= 695264 ,  711818 
TEST=unittest TBD, manually verified cnn.com, internetradio.com each create
a new button entry in chrome://media-internals. Watch time logs are properly
recorded.

Review-Url: https://codereview.chromium.org/2819973002
Cr-Commit-Position: refs/heads/master@{#464844}
(cherry picked from commit f4f7b3aad31bbce44c84dd2cdbd2400a90f87d51)

Review-Url: https://codereview.chromium.org/2827483002 .
Cr-Commit-Position: refs/branch-heads/3071@{#20}
Cr-Branched-From: a106f0abbf69dad349d4aaf4bcc4f5d376dd2377-refs/heads/master@{#464641}

[modify] https://crrev.com/0398002f42e790ba37023328f65fdfd5208feac7/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/0398002f42e790ba37023328f65fdfd5208feac7/content/renderer/render_frame_impl.h

Project Member

Comment 9 by bugdroid1@chromium.org, Apr 26 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8

commit 20645b6c0f3fa1fe3d20742ca7fcd77058147ad8
Author: chcunningham <chcunningham@chromium.org>
Date: Wed Apr 26 00:53:05 2017

Wire up MediaCapabilities is_supported to media/

navigator.mediaCapabilities.decodingInfo(...) will now query
the media layer to parse the mime type and check platform support.

Some work remains to reject ambiguous mime strings. In some cases
we are also not deeply checking for platform support. Will get to
this soon.

BUG= 695264 
TEST=new browser tests

Review-Url: https://codereview.chromium.org/2805553004
Cr-Commit-Position: refs/heads/master@{#467184}

[add] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/content/browser/media/media_capabilities_browsertest.cc
[modify] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/content/renderer/media_recorder/media_recorder_handler.cc
[modify] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/content/test/BUILD.gn
[modify] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/media/base/mime_util_internal.cc
[modify] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/media/blink/webmediacapabilitiesclient_impl.cc
[add] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/media/test/data/decode_capabilities_test.html
[modify] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
[modify] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/third_party/WebKit/public/platform/modules/media_capabilities/WebAudioConfiguration.h
[modify] https://crrev.com/20645b6c0f3fa1fe3d20742ca7fcd77058147ad8/third_party/WebKit/public/platform/modules/media_capabilities/WebVideoConfiguration.h

Project Member

Comment 10 by bugdroid1@chromium.org, May 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a4a66a6e3e01cf6594872f4d34208685a6eae5ea

commit a4a66a6e3e01cf6594872f4d34208685a6eae5ea
Author: chcunningham <chcunningham@chromium.org>
Date: Fri May 19 00:14:01 2017

Add MimeUtil::Parse{Audio|Video}CodecString

Media Capabilities needs MimeUtil to turn strings into codecs before
it can query media::DecodeCapabilities APIs.

This also exposes when the parsed string is ambiguous so that Media
Capabilities can reject support and log some error.

BUG= 695264 
TEST=new media_unittest

Review-Url: https://codereview.chromium.org/2864593003
Cr-Commit-Position: refs/heads/master@{#472987}

[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/content/browser/media/media_capabilities_browsertest.cc
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/base/media.cc
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/base/media.h
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/base/mime_util.cc
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/base/mime_util.h
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/base/mime_util_internal.cc
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/base/mime_util_internal.h
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/base/mime_util_unittest.cc
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/base/video_codecs.cc
[modify] https://crrev.com/a4a66a6e3e01cf6594872f4d34208685a6eae5ea/media/blink/webmediacapabilitiesclient_impl.cc

Project Member

Comment 11 by bugdroid1@chromium.org, May 30 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/86f025e31d8d3676fea772a36eb9ecece61877ff

commit 86f025e31d8d3676fea772a36eb9ecece61877ff
Author: chcunningham <chcunningham@chromium.org>
Date: Tue May 30 20:43:23 2017

Extract media code from RenderFrameImpl

RenderFrameImpl has grown to contain nearly 500 lines of media plumbing.
This CL extracts much of this into MediaFactory.

This is done in anticipation of adding a MediaCapabilities API to the
RenderFrame.

BUG= 695264 , 588408 

Review-Url: https://codereview.chromium.org/2905613003
Cr-Commit-Position: refs/heads/master@{#475659}

[modify] https://crrev.com/86f025e31d8d3676fea772a36eb9ecece61877ff/content/renderer/BUILD.gn
[add] https://crrev.com/86f025e31d8d3676fea772a36eb9ecece61877ff/content/renderer/media/media_factory.cc
[add] https://crrev.com/86f025e31d8d3676fea772a36eb9ecece61877ff/content/renderer/media/media_factory.h
[modify] https://crrev.com/86f025e31d8d3676fea772a36eb9ecece61877ff/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/86f025e31d8d3676fea772a36eb9ecece61877ff/content/renderer/render_frame_impl.h

Project Member

Comment 12 by bugdroid1@chromium.org, Jul 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fe34199b2b62a9ed333cd09b227bd9e1bf5a070e

commit fe34199b2b62a9ed333cd09b227bd9e1bf5a070e
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Fri Jul 07 20:06:45 2017

Add video frame duration average to media::PipelineStatistics

Plumbs video frame duration from media video rendering up to
WebMediaPlayerImpl. WebMediaPlayerImpl will later use the stat to
start/stop reporting of MediaCapabilities plabyack stats.

Bug:  695264 
Change-Id: I44c44498d2a68406b9e7259a81866b25db1ae430
Reviewed-on: https://chromium-review.googlesource.com/558016
Reviewed-by: Yuri Wiitala <miu@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485018}
[modify] https://crrev.com/fe34199b2b62a9ed333cd09b227bd9e1bf5a070e/media/base/pipeline_impl.cc
[modify] https://crrev.com/fe34199b2b62a9ed333cd09b227bd9e1bf5a070e/media/base/pipeline_status.h
[modify] https://crrev.com/fe34199b2b62a9ed333cd09b227bd9e1bf5a070e/media/remoting/proto_utils.cc
[modify] https://crrev.com/fe34199b2b62a9ed333cd09b227bd9e1bf5a070e/media/remoting/proto_utils_unittest.cc
[modify] https://crrev.com/fe34199b2b62a9ed333cd09b227bd9e1bf5a070e/media/remoting/rpc.proto
[modify] https://crrev.com/fe34199b2b62a9ed333cd09b227bd9e1bf5a070e/media/renderers/video_renderer_impl.cc

Project Member

Comment 13 by bugdroid1@chromium.org, Jul 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9

commit 038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Mon Jul 10 22:36:30 2017

Signal media::PipelineClient when audio/video decoder configs change.

This CL plumbs the signal from the renderers through pipeline, ultiately
arriving at WebMediaPlayerImpl where it will later be used to start/stop
reporting of MediaCapabilities playback stats.

Note: OnVideoNaturalSizeChange is still not obsoleted by
OnVideoConfigChange because it possible to for natural size to change
outside of a config change.

Includes new unit and e2e tests.

Bug:  695264 
Change-Id: Ib04e13e2e8ab6b6974f2a9059466d7a87986b4b2
Reviewed-on: https://chromium-review.googlesource.com/541721
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485427}
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/content/renderer/media/android/media_player_renderer_client.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/content/renderer/media/android/media_player_renderer_client.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/base/mock_filters.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/base/pipeline.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/base/pipeline_impl.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/base/pipeline_impl.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/base/renderer_client.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/base/test_helpers.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/blink/webmediaplayer_impl.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/filters/decoder_stream.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/filters/decoder_stream.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/filters/pipeline_controller_unittest.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/mojo/clients/mojo_renderer.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/mojo/clients/mojo_renderer.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/mojo/interfaces/renderer.mojom
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/mojo/services/media_service_unittest.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/mojo/services/mojo_renderer_service.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/mojo/services/mojo_renderer_service.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/remoting/courier_renderer.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/remoting/courier_renderer.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/remoting/courier_renderer_unittest.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/remoting/receiver.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/remoting/receiver.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/remoting/rpc.proto
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/renderers/audio_renderer_impl.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/renderers/audio_renderer_impl.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/renderers/audio_renderer_impl_unittest.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/renderers/renderer_impl.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/renderers/renderer_impl.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/renderers/video_renderer_impl.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/renderers/video_renderer_impl.h
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/renderers/video_renderer_impl_unittest.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/test/pipeline_integration_test.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/test/pipeline_integration_test_base.cc
[modify] https://crrev.com/038548bf0ea65235ee6cb2d0b24ce9b1c111dbd9/media/test/pipeline_integration_test_base.h

Project Member

Comment 14 by bugdroid1@chromium.org, Aug 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6

commit d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Tue Aug 29 00:04:23 2017

Introduce VideoDecodeStatsReporter for Media Capabilities

Each WebMediaPlayer will create a VideoDecodeStatsReporter to send
smoothness (and eventually power) statistics across to the browser-side
VideoDecodeStatsRecorder.

The statistics will be "finalized" upon
- player destruction
- significant media property changes (e.g. resolution, codec, fps)
- tab close

Follow up CLs will implement the browser-side recording of the stats
and add a UMA to "grade" the media capabilites API by comparing the
observed stats against the API's claims of smoothness.

Bug:  695264 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_site_isolation;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I78ca453fa936c9a48813fbc92dc67714f9956f63
Reviewed-on: https://chromium-review.googlesource.com/570920
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Charlie Reis <creis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#497948}
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/content/renderer/media/media_factory.cc
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/content/renderer/media/media_factory.h
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/base/pipeline_status.h
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/BUILD.gn
[add] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/video_decode_stats_reporter.cc
[add] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/video_decode_stats_reporter.h
[add] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/video_decode_stats_reporter_unittest.cc
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/webmediaplayer_impl.h
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/webmediaplayer_impl_unittest.cc
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/webmediaplayer_params.cc
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/blink/webmediaplayer_params.h
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/mojo/interfaces/BUILD.gn
[add] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/mojo/interfaces/video_decode_stats_recorder.mojom
[modify] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/mojo/services/BUILD.gn
[add] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/mojo/services/video_decode_stats_recorder.cc
[add] https://crrev.com/d9df58ee5bc9a54f80a59dc1945e5996c5ac86d6/media/mojo/services/video_decode_stats_recorder.h

Components: Internals>Media
Project Member

Comment 16 by bugdroid1@chromium.org, Sep 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348

commit 32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Wed Sep 13 02:03:12 2017

Map codec profiles for "simple" video mime types

All supported video streams types should map to some VideoCodecProfile.
This should be true even for "simple" codecs strings (e.g. VP8 and
Theora) that only have one profile (or no formal notion of profile).

This allows all codecs to be described simply by the VideoCodecProfile.
For instance, media capabilities storage/querying of decode statistics
is keyed by VideoCodecProfile.

This change adds a profile entry for Theora and ensures that mime
parsing code correctly maps to a profile for VP8 and Theora.

BUG= 695264 
TEST=unit test

Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I7b48dfc6ab97d436820dae57606a4cf53d92af31
Reviewed-on: https://chromium-review.googlesource.com/658408
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501512}
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/components/arc/common/video_encode_accelerator.mojom
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/components/arc/video_accelerator/video_encode_accelerator_struct_traits.cc
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/gpu/config/gpu_info.h
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/gpu/ipc/common/gpu_info.mojom
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/gpu/ipc/common/gpu_info_struct_traits.cc
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/media/base/mime_util_internal.cc
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/media/base/mime_util_unittest.cc
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/media/base/video_codecs.cc
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/media/base/video_codecs.h
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/media/base/video_decoder_config.cc
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/media/ffmpeg/ffmpeg_common.cc
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/media/remoting/proto_enum_utils.cc
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/media/remoting/rpc.proto
[modify] https://crrev.com/32e06ae27bbf6b725e8e5bf2cf44937e5bf0e348/tools/metrics/histograms/enums.xml

Project Member

Comment 17 by bugdroid1@chromium.org, Sep 26 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8aa6a0ae1f3f486fb35b6980ff7907af4e551747

commit 8aa6a0ae1f3f486fb35b6980ff7907af4e551747
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Tue Sep 26 22:32:14 2017

Introduce VideoDecodePerfHistory for Media Capabilities

The VideoDecodePerfHistory service lives as a singleton in the browser 
process. There it responds to MediaCapabilities queries by looking up 
statistics of past playbacks to decide whether the given queried video
configuration can be played smoothly and/or power_efficiently on the
local machine. 

The service is lazily created upon the first Mojo request from a 
render process. 

Bug:  695264 
Tests: New unit tests. Existing browser tests.
Change-Id: Ib7ba9d707386ce2fa8ad7eca482b4023fdf33264
Reviewed-on: https://chromium-review.googlesource.com/644718
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Darin Fisher <darin@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#504502}
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/blink/BUILD.gn
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/blink/DEPS
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/blink/webmediacapabilitiesclient_impl.cc
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/blink/webmediacapabilitiesclient_impl.h
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/BUILD.gn
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/interfaces/BUILD.gn
[add] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/interfaces/video_decode_perf_history.mojom
[modify] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/services/BUILD.gn
[add] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/services/media_capabilities_database.cc
[add] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/services/media_capabilities_database.h
[add] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/services/video_decode_perf_history.cc
[add] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/services/video_decode_perf_history.h
[add] https://crrev.com/8aa6a0ae1f3f486fb35b6980ff7907af4e551747/media/mojo/services/video_decode_perf_history_unittest.cc

Project Member

Comment 18 by bugdroid1@chromium.org, Oct 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b7717342e2a46e2936f0b502d9dae8cfad5798f8

commit b7717342e2a46e2936f0b502d9dae8cfad5798f8
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Tue Oct 10 22:08:43 2017

Implement VideoDecodeStatsDB with LevelDB

The LevelDB implementation supports the production use case of storing
video decode statistics for recall to answer MediaCapabilities queries.

This CL implements the interface and tests. A later CL will instantiate
the DB as part of the VideoDecodePerfHistory service for actual usage.

Kudos to mlamouri@ for first implementing this in
https://chromium-review.googlesource.com/c/chromium/src/+/625962

TEST: added to media_unittests
Bug:  695264 
Change-Id: I347d4c25b74be65c278a563f07d439cfab2c8555
Reviewed-on: https://chromium-review.googlesource.com/692916
Reviewed-by: Tommy Nyquist <nyquist@chromium.org>
Reviewed-by: Victor Costan <pwnall@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Cr-Commit-Position: refs/heads/master@{#507787}
[modify] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/BUILD.gn
[modify] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/BUILD.gn
[add] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/DEPS
[delete] https://crrev.com/e8b8ba11e10ea326b157b0ec525983f946c59dfd/media/mojo/services/media_capabilities_database.cc
[delete] https://crrev.com/e8b8ba11e10ea326b157b0ec525983f946c59dfd/media/mojo/services/media_capabilities_database.h
[modify] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_perf_history.cc
[modify] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_perf_history.h
[modify] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_perf_history_unittest.cc
[add] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_stats.proto
[add] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_stats_db.cc
[add] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_stats_db.h
[add] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_stats_db_impl.cc
[add] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_stats_db_impl.h
[add] https://crrev.com/b7717342e2a46e2936f0b502d9dae8cfad5798f8/media/mojo/services/video_decode_stats_db_unittest.cc

Description: Show this description
Summary: Implement media layer of mediaCapabilities.decodingInfo() (was: Implement media layer of mediaCapabilities.query())
Blocking: 690364
Project Member

Comment 22 by bugdroid1@chromium.org, Oct 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a5b3801b9cd3d4748ffc4087cce97148ffcf949d

commit a5b3801b9cd3d4748ffc4087cce97148ffcf949d
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Sat Oct 28 07:27:18 2017

Wire up VideoDecodePerfHistory to VideoDecodeStatsRecorder and DB.

Associates the VideoDecodePerfHistory with the BrowserContext so users
can clear just their history via chrome://settings/clearBrowsingData.

VideoDecodePerfHistory connected in //content rather than //chrome to
facilitate easy use by embedders (e.g. webview).

Bug:  695264 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Change-Id: Ic9fec3a7a450a3be49e231c919db227ac837b3c3
Reviewed-on: https://chromium-review.googlesource.com/707840
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Charlie Reis <creis@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512390}
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/chrome/browser/profiles/off_the_record_profile_impl.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/chrome/browser/profiles/off_the_record_profile_impl.h
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/content/browser/browser_context.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/content/public/browser/browser_context.h
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/blink/video_decode_stats_reporter.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/blink/webmediacapabilitiesclient_impl.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/blink/webmediaplayer_impl_unittest.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_perf_history.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_perf_history.h
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_perf_history_unittest.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_stats_db.h
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_stats_db_impl.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_stats_db_impl.h
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_stats_db_unittest.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_stats_recorder.cc
[modify] https://crrev.com/a5b3801b9cd3d4748ffc4087cce97148ffcf949d/media/mojo/services/video_decode_stats_recorder.h

Project Member

Comment 23 by bugdroid1@chromium.org, Nov 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44

commit a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44
Author: Mounir Lamouri <mlamouri@chromium.org>
Date: Mon Nov 06 16:11:19 2017

Media Capabilities: plumb power efficiency to PipelineStatistics.

Add POWER_EFFICIENT metadata to VideoFrame, set it for hardware decoder
and compute efficiently decoded frames then send to PipelineStatistics.

This CL only implement basic plumbing which will then be used by the
Media Capabilities API.

Bug:  695264 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Id02566d4189c7e0b7c3e1afdf044d942f765532b
Reviewed-on: https://chromium-review.googlesource.com/739827
Commit-Queue: Mounir Lamouri <mlamouri@chromium.org>
Reviewed-by: Yuri Wiitala <miu@chromium.org>
Reviewed-by: Xiangjun Zhang <xjz@chromium.org>
Reviewed-by: Chrome Cunningham <chcunningham@chromium.org>
Cr-Commit-Position: refs/heads/master@{#514145}
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/base/BUILD.gn
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/base/pipeline_impl.cc
[add] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/base/pipeline_status.cc
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/base/pipeline_status.h
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/base/video_frame_metadata.h
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/filters/ffmpeg_video_decoder.cc
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/filters/gpu_video_decoder.cc
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/filters/vpx_video_decoder.cc
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/remoting/courier_renderer_unittest.cc
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/remoting/proto_utils.cc
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/remoting/proto_utils_unittest.cc
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/renderers/video_renderer_impl.cc
[modify] https://crrev.com/a8d3ca06b2aa7f6a46bed1ac97c8ce53b5d0bb44/media/renderers/video_renderer_impl.h

Project Member

Comment 24 by bugdroid1@chromium.org, Nov 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fe61ca5de596523ecdd6fdfe41381fb9063001b9

commit fe61ca5de596523ecdd6fdfe41381fb9063001b9
Author: Mounir Lamouri <mlamouri@chromium.org>
Date: Mon Nov 06 20:00:54 2017

Media Capabilities: save power efficient frame decode count in DB.

This is saving the info into the database and use it to return a real
"is_power_efficient" result when the database is queried.

Bug:  695264 
Change-Id: I56fc8073584d7ae7e5b7b1d4917d9459b4196fcb
Reviewed-on: https://chromium-review.googlesource.com/744781
Commit-Queue: Mounir Lamouri <mlamouri@chromium.org>
Reviewed-by: Chris Palmer <palmer@chromium.org>
Reviewed-by: Chrome Cunningham <chcunningham@chromium.org>
Cr-Commit-Position: refs/heads/master@{#514216}
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/blink/video_decode_stats_reporter.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/blink/video_decode_stats_reporter.h
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/blink/video_decode_stats_reporter_unittest.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/blink/webmediaplayer_impl_unittest.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/interfaces/video_decode_stats_recorder.mojom
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_perf_history.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_perf_history.h
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_perf_history_unittest.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_stats.proto
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_stats_db.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_stats_db.h
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_stats_db_impl.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_stats_db_unittest.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_stats_recorder.cc
[modify] https://crrev.com/fe61ca5de596523ecdd6fdfe41381fb9063001b9/media/mojo/services/video_decode_stats_recorder.h

Project Member

Comment 25 by bugdroid1@chromium.org, Nov 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/49934e69906c679e67e7611864f3f9446efa6307

commit 49934e69906c679e67e7611864f3f9446efa6307
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Thu Nov 09 21:49:01 2017

Clear VideoDecodeStatsDB from chrome://settings//clearBrowsingData

Adds methods to VideoDecodePerfHistory and VideoDecodeStatsDB to
achieve the clearing. New tests.

Clearing the levelDB is destructive, so the DB owner (*PerfHistory) must
reinitialize after clearing and defer other API calls until initialization
completes.

Bug:  695264 
Change-Id: I2fba308256c8d69f4edcbe7536cf5b72e0be21e3
Tests: New media_unittests
Reviewed-on: https://chromium-review.googlesource.com/752051
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Bernhard Bauer <bauerb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515304}
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/chrome/browser/BUILD.gn
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/media/mojo/services/video_decode_perf_history.cc
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/media/mojo/services/video_decode_perf_history.h
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/media/mojo/services/video_decode_perf_history_unittest.cc
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/media/mojo/services/video_decode_stats_db.h
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/media/mojo/services/video_decode_stats_db_impl.cc
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/media/mojo/services/video_decode_stats_db_impl.h
[modify] https://crrev.com/49934e69906c679e67e7611864f3f9446efa6307/media/mojo/services/video_decode_stats_db_unittest.cc

Project Member

Comment 26 by bugdroid1@chromium.org, Nov 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7f41f563aa0733dd1e635ead22594d6e47c3ffaf

commit 7f41f563aa0733dd1e635ead22594d6e47c3ffaf
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Wed Nov 22 00:02:19 2017

Add UMAs for VideoDecodeStatsDB. Stop reporter stats timer when IPC breaks.

UMAs added to track outcomes of various DB operations. Failures should
be rare/transient.

Unrelated to UMA, I Also noticed that the stats_cb_timer_ was still running
in incognito windows. Stats are not recorded in incognito, so don't bother
waking up the timer.

BUG= 695264 
TEST=Verified UMAs in chrome://histograms

Change-Id: Ib1245d48f907c8be0313a3646344bc351b492093
Reviewed-on: https://chromium-review.googlesource.com/777846
Commit-Queue: Chrome Cunningham <chcunningham@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Reviewed-by: Gayane Petrosyan <gayane@chromium.org>
Cr-Commit-Position: refs/heads/master@{#518462}
[modify] https://crrev.com/7f41f563aa0733dd1e635ead22594d6e47c3ffaf/media/blink/video_decode_stats_reporter.cc
[modify] https://crrev.com/7f41f563aa0733dd1e635ead22594d6e47c3ffaf/media/blink/video_decode_stats_reporter.h
[modify] https://crrev.com/7f41f563aa0733dd1e635ead22594d6e47c3ffaf/media/capabilities/video_decode_stats_db_impl.cc
[modify] https://crrev.com/7f41f563aa0733dd1e635ead22594d6e47c3ffaf/tools/metrics/histograms/histograms.xml

Project Member

Comment 27 by bugdroid1@chromium.org, Nov 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c7c6a6d95b9f9feb6534b3d106516533093130d9

commit c7c6a6d95b9f9feb6534b3d106516533093130d9
Author: Chris Cunningham <chcunningham@chromium.org>
Date: Thu Nov 23 14:06:45 2017

Record UKM metrics for video decode performance.

UKM metrics form/discussion in internal design doc
http://go/mcap-decode-perf-design

Bug:  695264 
Change-Id: I0a951585a7880be320659713fdeac1261595d92e
Reviewed-on: https://chromium-review.googlesource.com/760056
Reviewed-by: Steven Holte <holte@chromium.org>
Reviewed-by: Bernhard Bauer <bauerb@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Mounir Lamouri <mlamouri@chromium.org>
Cr-Commit-Position: refs/heads/master@{#518923}
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/chrome/browser/browsing_data/browsing_data_remover_browsertest.cc
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/blink/video_decode_stats_reporter_unittest.cc
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/blink/webmediaplayer_impl.cc
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/blink/webmediaplayer_impl_unittest.cc
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/mojo/interfaces/video_decode_stats_recorder.mojom
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/mojo/services/video_decode_perf_history.cc
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/mojo/services/video_decode_perf_history.h
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/mojo/services/video_decode_perf_history_unittest.cc
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/mojo/services/video_decode_stats_recorder.cc
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/media/mojo/services/video_decode_stats_recorder.h
[modify] https://crrev.com/c7c6a6d95b9f9feb6534b3d106516533093130d9/tools/metrics/ukm/ukm.xml

chcunningham@, should we close this and have any follow-up done in different bugs?
Status: Fixed (was: Assigned)
"Yes Mr. Frodo, its over now"

Plan sounds good!


:)

Sign in to add a comment