New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 701584 link

Starred by 1 user

Issue metadata

Status: Archived
Owner:
Last visit > 30 days ago
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Feature



Sign in to add a comment

Support for Audio Output selection in PPAPI

Project Member Reported by xzh...@adobe.com, Mar 14 2017

Issue description

Chrome Version: 57.0.2987.98 (Official Build) (64-bit)
OS: Win/Mac/Linux

What steps will reproduce the problem?
The current public PPAPI PPB_Audio (ppapi/c/ppb_audio.h) does not provide a way to select audio output device.

What is the expected result?
To implement this feature, we need to add another dev PPAPI: |PPB_AudioOutput_Dev|, and we keep the current |PPB_Audio| interface for backward compatibility.

This requires to make the following changes:
(1) Keep the current PPB_Audio interface unchanged
(2) Add a new dev interface: PPB_AudioOutput_Dev
(3) Implement PPB_AudioOutput_Dev using the typical HostResource implementations like PPB_AudioInput_Dev
(4) Add ppapi/proxy/audio_output_resource.h/cc etc. to implement |AudioOutputResource|.
(5) Add content/renderer/pepper/pepper_audio_output_host.h/cc etc. to implement |PepperAudioOutputHost|.
(6) Keep ppb_audio_proxy.h/cc, ppb_audio_shared.h/cc, ppb_audio_impl.h/cc unchanged, so that the current |PPB_Audio| will not be affected.
(7) Modify content/renderer/pepper/pepper_platform_audio_output.h/cc to handle both |AudioHelper| and |PepperAudioOutputHost| clients.
(8) The way to implement |PepperAudioOutputHost| can be borrowed from "media/audio/audio_output_device.cc" where audio output selection is supported for javascript.
(9) Add necessary IPC message definitions for PPB_AudioOutput_Dev


What happens instead?
The user can only use system default audio output device for audio playback, there is no way to choose other audio output devices in the system.



 

Comment 1 by ihf@chromium.org, Mar 15 2017

Cc: lafo...@chromium.org ihf@chromium.org
Components: Internals>Media>Audio

Comment 2 by xzh...@adobe.com, Mar 15 2017

code review has been created:
https://codereview.chromium.org/2755613002
Components: -Internals>Media>Audio
Project Member

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

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

commit 3a2a470eed665050d284f1e5dd0e7a1c4949d190
Author: xzhang <xzhang@adobe.com>
Date: Fri Apr 07 16:34:30 2017

Support audio output device enumeration and selection in PPAPI

- Keep the current |PPB_Audio| interface unchanged
- Add a new dev interface: |PPB_AudioOutput_Dev|
- Implement |PPB_AudioOutput_Dev| using the typical HostResource
  implementations like |PPB_AudioInput_Dev|
- Add ppapi/proxy/audio_output_resource.h/cc etc. to implement
  |AudioOutputResource|
- Add content/renderer/pepper/pepper_audio_output_host.h/cc etc.
  to implement |PepperAudioOutputHost|
- Keep ppb_audio_proxy.h/cc, ppb_audio_shared.h/cc, ppb_audio_impl.h/cc
  unchanged, so that the current |PPB_Audio| will not be affected.
- Modify content/renderer/pepper/pepper_platform_audio_output.h/cc to
  accept both |AudioHelper| and |PepperAudioOutputHost| clients
- The way to implement |PepperAudioOutputHost| is borrowed from
  "media/audio/audio_output_device.cc" where audio output selection isi
  supported for javascript.
- Add necessary IPC message definitions for |PPB_AudioOutput_Dev|

BUG= 701584 
R= bbudge@chromium.org, tsepez@chromium.org, isherman@chromium.org

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

[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/chrome/common/ppapi_utils.cc
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/BUILD.gn
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/content_renderer_pepper_host_factory.cc
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/pepper_audio_controller.cc
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/pepper_audio_controller.h
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/pepper_audio_output_host.cc
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/pepper_audio_output_host.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/pepper_media_device_manager.cc
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/pepper_platform_audio_output_dev.cc
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/pepper_platform_audio_output_dev.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/plugin_module.cc
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/resource_creation_impl.cc
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/content/renderer/pepper/resource_creation_impl.h
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/api/dev/ppb_audio_output_dev.idl
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/api/dev/ppb_device_ref_dev.idl
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/c/BUILD.gn
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/c/dev/ppb_audio_output_dev.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/c/dev/ppb_device_ref_dev.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/c/pp_macros.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/cpp/BUILD.gn
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/cpp/dev/audio_output_dev.cc
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/cpp/dev/audio_output_dev.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/proxy/BUILD.gn
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/proxy/audio_output_resource.cc
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/proxy/audio_output_resource.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/proxy/interface_list.cc
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/proxy/ppapi_messages.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/proxy/resource_creation_proxy.cc
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/proxy/resource_creation_proxy.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/shared_impl/api_id.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/shared_impl/resource.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/thunk/BUILD.gn
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/thunk/interfaces_ppb_public_dev.h
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/thunk/ppb_audio_output_api.h
[add] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/thunk/ppb_audio_output_dev_thunk.cc
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/ppapi/thunk/resource_creation_api.h
[modify] https://crrev.com/3a2a470eed665050d284f1e5dd0e7a1c4949d190/tools/metrics/histograms/histograms.xml

Comment 5 by ihf@chromium.org, Apr 7 2017

Owner: xzh...@adobe.com
Status: Started (was: Untriaged)
Can we mark this fixed?

Comment 6 by xzh...@adobe.com, Apr 7 2017

Status: Fixed (was: Started)

Comment 7 by dchan@google.com, May 30 2017

Labels: VerifyIn-60

Comment 8 by dchan@chromium.org, Aug 1 2017

Labels: VerifyIn-61

Comment 9 by dchan@chromium.org, Jan 22 2018

Status: Archived (was: Fixed)

Sign in to add a comment