Skip to content

Commit

Permalink
Moves interfaces of MJDA for Chrome OS Camera to specific folder
Browse files Browse the repository at this point in the history
This CL moves interfaces of MJDA that only used by Chrome OS Camera
from media/mojo/interfaces to components/chromeos_camera. It makes
the ownership more clear.

Bug: 946366
Test: Compiles successfully and camera works normally.
Change-Id: Ic978ddf00322793ed2a5e3ec709f29e739e76cef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1564272
Reviewed-by: Luke Sorenson <lasoren@chromium.org>
Reviewed-by: Chrome Cunningham <chcunningham@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Christian Fremerey <chfremer@chromium.org>
Reviewed-by: Michael Wasserman <msw@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Wei Lee <wtlee@chromium.org>
Cr-Commit-Position: refs/heads/master@{#653075}
  • Loading branch information
Wei Lee authored and Commit Bot committed Apr 23, 2019
1 parent 8c4d7e0 commit 0cdabc9
Show file tree
Hide file tree
Showing 69 changed files with 426 additions and 173 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/component_updater/cros_component_installer_chromeos.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/delegate_to_browser_gpu_service_accelerator_factory.h"
#include "content/public/browser/chromeos/delegate_to_browser_gpu_service_accelerator_factory.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/common/service_manager_connection.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
Expand Down
1 change: 1 addition & 0 deletions components/chromeos_camera/common/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import("//mojo/public/tools/bindings/mojom.gni")
mojom("common") {
sources = [
"jpeg_encode_accelerator.mojom",
"mjpeg_decode_accelerator.mojom",
]

public_deps = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// TODO(crbug.com/946366): Change the namespace to chromeos_camera.
module media.mojom;

import "media/mojo/interfaces/media_types.mojom";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,19 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

mojom = "//media/mojo/interfaces/mjpeg_decode_accelerator.mojom"
mojom = "//components/chromeos_camera/common/mjpeg_decode_accelerator.mojom"

public_headers = [
"//media/base/bitstream_buffer.h",
"//media/video/mjpeg_decode_accelerator.h",
]

traits_headers =
[ "//media/mojo/interfaces/mjpeg_decode_accelerator_mojom_traits.h" ]
traits_headers = [
"//components/chromeos_camera/common/mjpeg_decode_accelerator_mojom_traits.h",
]

sources = [
"//media/mojo/interfaces/mjpeg_decode_accelerator_mojom_traits.cc",
"//components/chromeos_camera/common/mjpeg_decode_accelerator_mojom_traits.cc",
]

deps = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "media/mojo/interfaces/mjpeg_decode_accelerator_mojom_traits.h"
#include "components/chromeos_camera/common/mjpeg_decode_accelerator_mojom_traits.h"

#include "base/logging.h"
#include "media/base/ipc/media_param_traits_macros.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_MOJO_INTERFACES_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_
#define MEDIA_MOJO_INTERFACES_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_
#ifndef COMPONENTS_CHROMEOS_CAMERA_COMMON_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_
#define COMPONENTS_CHROMEOS_CAMERA_COMMON_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_

#include "base/numerics/safe_conversions.h"
#include "components/chromeos_camera/common/mjpeg_decode_accelerator.mojom.h"
#include "media/base/bitstream_buffer.h"
#include "media/mojo/interfaces/mjpeg_decode_accelerator.mojom.h"
#include "media/video/mjpeg_decode_accelerator.h"

namespace mojo {
Expand Down Expand Up @@ -61,4 +61,4 @@ struct StructTraits<media::mojom::BitstreamBufferDataView,

} // namespace mojo

#endif // MEDIA_MOJO_INTERFACES_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_
#endif // COMPONENTS_CHROMEOS_CAMERA_COMMON_MJPEG_DECODE_ACCELERATOR_MOJOM_TRAITS_H_
6 changes: 4 additions & 2 deletions components/chromeos_camera/common/typemaps.gni
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

typemaps =
[ "//components/chromeos_camera/common/jpeg_encode_accelerator.typemap" ]
typemaps = [
"//components/chromeos_camera/common/jpeg_encode_accelerator.typemap",
"//components/chromeos_camera/common/mjpeg_decode_accelerator.typemap",
]
2 changes: 2 additions & 0 deletions components/viz/host/gpu_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -197,13 +197,15 @@ void GpuClient::EstablishGpuChannel(EstablishGpuChannelCallback callback) {
weak_factory_.GetWeakPtr()));
}

#if defined(OS_CHROMEOS)
void GpuClient::CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest jda_request) {
if (auto* gpu_host = delegate_->EnsureGpuHost()) {
gpu_host->gpu_service()->CreateJpegDecodeAccelerator(
std::move(jda_request));
}
}
#endif // defined(OS_CHROMEOS)

void GpuClient::CreateVideoEncodeAcceleratorProvider(
media::mojom::VideoEncodeAcceleratorProviderRequest vea_provider_request) {
Expand Down
3 changes: 3 additions & 0 deletions components/viz/host/gpu_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,11 @@ class VIZ_HOST_EXPORT GpuClient : public ws::mojom::GpuMemoryBufferFactory,
void CreateGpuMemoryBufferFactory(
ws::mojom::GpuMemoryBufferFactoryRequest request) override;
void EstablishGpuChannel(EstablishGpuChannelCallback callback) override;

#if defined(OS_CHROMEOS)
void CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest jda_request) override;
#endif // defined(OS_CHROMEOS)
void CreateVideoEncodeAcceleratorProvider(
media::mojom::VideoEncodeAcceleratorProviderRequest vea_provider_request)
override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,12 @@ class TestGpuService : public mojom::GpuService {
void CreateArcProtectedBufferManager(
arc::mojom::ProtectedBufferManagerRequest pbm_request) override {}

void CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest jda_request) override {}

void CreateJpegEncodeAccelerator(
media::mojom::JpegEncodeAcceleratorRequest jea_request) override {}
#endif // defined(OS_CHROMEOS)
void CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest jda_request) override {}

void CreateVideoEncodeAcceleratorProvider(
media::mojom::VideoEncodeAcceleratorProviderRequest request) override {}
Expand Down
15 changes: 8 additions & 7 deletions components/viz/service/gl/gpu_service_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,15 @@
#include "ipc/ipc_channel_handle.h"
#include "ipc/ipc_sync_channel.h"
#include "ipc/ipc_sync_message_filter.h"
#include "media/gpu/gpu_mjpeg_decode_accelerator_factory.h"
#include "media/gpu/gpu_video_accelerator_util.h"
#include "media/gpu/gpu_video_encode_accelerator_factory.h"
#include "media/gpu/ipc/service/gpu_video_decode_accelerator.h"
#include "media/gpu/ipc/service/media_gpu_channel_manager.h"
#if defined(OS_CHROMEOS)
#include "media/mojo/services/cros_mojo_jpeg_encode_accelerator_service.h"
#include "media/mojo/services/cros_mojo_mjpeg_decode_accelerator_service.h"
#endif // defined(OS_CHROMEOS)
#include "media/mojo/services/mojo_mjpeg_decode_accelerator_service.h"
#include "media/mojo/services/mojo_video_encode_accelerator_provider.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "third_party/skia/include/gpu/GrContext.h"
Expand Down Expand Up @@ -401,19 +402,19 @@ void GpuServiceImpl::CreateArcProtectedBufferManagerOnMainThread(
std::move(pbm_request));
}

void GpuServiceImpl::CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest jda_request) {
DCHECK(io_runner_->BelongsToCurrentThread());
media::CrOSMojoMjpegDecodeAcceleratorService::Create(std::move(jda_request));
}

void GpuServiceImpl::CreateJpegEncodeAccelerator(
media::mojom::JpegEncodeAcceleratorRequest jea_request) {
DCHECK(io_runner_->BelongsToCurrentThread());
media::CrOSMojoJpegEncodeAcceleratorService::Create(std::move(jea_request));
}
#endif // defined(OS_CHROMEOS)

void GpuServiceImpl::CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest jda_request) {
DCHECK(io_runner_->BelongsToCurrentThread());
media::MojoMjpegDecodeAcceleratorService::Create(std::move(jda_request));
}

void GpuServiceImpl::CreateVideoEncodeAcceleratorProvider(
media::mojom::VideoEncodeAcceleratorProviderRequest vea_provider_request) {
DCHECK(io_runner_->BelongsToCurrentThread());
Expand Down
4 changes: 2 additions & 2 deletions components/viz/service/gl/gpu_service_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,11 @@ class VIZ_SERVICE_EXPORT GpuServiceImpl : public gpu::GpuChannelManagerDelegate,
arc::mojom::VideoProtectedBufferAllocatorRequest pba_request) override;
void CreateArcProtectedBufferManager(
arc::mojom::ProtectedBufferManagerRequest pbm_request) override;
void CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest jda_request) override;
void CreateJpegEncodeAccelerator(
media::mojom::JpegEncodeAcceleratorRequest jea_request) override;
#endif // defined(OS_CHROMEOS)
void CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest jda_request) override;
void CreateVideoEncodeAcceleratorProvider(
media::mojom::VideoEncodeAcceleratorProviderRequest vea_provider_request)
override;
Expand Down
15 changes: 10 additions & 5 deletions content/browser/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ jumbo_source_set("browser") {
"//media/midi",
"//media/midi:mojo",
"//media/mojo:buildflags",
"//media/mojo/clients:jpeg_decode_accelerator",
"//media/mojo/interfaces",
"//media/mojo/interfaces:constants",
"//media/mojo/services",
Expand Down Expand Up @@ -952,7 +951,6 @@ jumbo_source_set("browser") {
"gpu/browser_gpu_client_delegate.h",
"gpu/compositor_util.cc",
"gpu/compositor_util.h",
"gpu/delegate_to_browser_gpu_service_accelerator_factory.cc",
"gpu/gpu_client.cc",
"gpu/gpu_data_manager_impl.cc",
"gpu/gpu_data_manager_impl.h",
Expand All @@ -970,8 +968,6 @@ jumbo_source_set("browser") {
"gpu/gpu_process_host.h",
"gpu/shader_cache_factory.cc",
"gpu/shader_cache_factory.h",
"gpu/video_capture_dependencies.cc",
"gpu/video_capture_dependencies.h",
"histogram_controller.cc",
"histogram_controller.h",
"histogram_subscriber.h",
Expand Down Expand Up @@ -1982,7 +1978,10 @@ jumbo_source_set("browser") {
"tracing/cros_tracing_agent.cc",
"tracing/cros_tracing_agent.h",
]
deps += [ "//chromeos/resources" ]
deps += [
"//chromeos/resources",
"//media/mojo/clients:cros_mjpeg_decode_accelerator",
]
} else {
sources += [
"memory/memory_monitor_linux.cc",
Expand Down Expand Up @@ -2502,6 +2501,12 @@ jumbo_source_set("browser") {
}

if (is_chromeos) {
sources += [
"gpu/chromeos/delegate_to_browser_gpu_service_accelerator_factory.cc",
"gpu/chromeos/video_capture_dependencies.cc",
"gpu/chromeos/video_capture_dependencies.h",
]

deps += [
"//chromeos/assistant:buildflags",
"//chromeos/audio",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/public/browser/delegate_to_browser_gpu_service_accelerator_factory.h"
#include "content/public/browser/chromeos/delegate_to_browser_gpu_service_accelerator_factory.h"

#include "content/browser/gpu/video_capture_dependencies.h"
#include "content/browser/gpu/chromeos/video_capture_dependencies.h"

namespace content {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/browser/gpu/video_capture_dependencies.h"
#include "content/browser/gpu/chromeos/video_capture_dependencies.h"

#include "base/bind.h"
#include "base/task/post_task.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_BROWSER_GPU_VIDEO_CAPTURE_DEPENDENCIES_H_
#define CONTENT_BROWSER_GPU_VIDEO_CAPTURE_DEPENDENCIES_H_
#ifndef CONTENT_BROWSER_GPU_CHROMEOS_VIDEO_CAPTURE_DEPENDENCIES_H_
#define CONTENT_BROWSER_GPU_CHROMEOS_VIDEO_CAPTURE_DEPENDENCIES_H_

#include "content/common/content_export.h"
#include "services/viz/privileged/interfaces/gl/gpu_service.mojom.h"
Expand All @@ -15,12 +15,10 @@ class CONTENT_EXPORT VideoCaptureDependencies {
public:
static void CreateJpegDecodeAccelerator(
media::mojom::MjpegDecodeAcceleratorRequest accelerator);
#if defined(OS_CHROMEOS)
static void CreateJpegEncodeAccelerator(
media::mojom::JpegEncodeAcceleratorRequest accelerator);
#endif // defined(OS_CHROMEOS)
};

} // namespace content

#endif // CONTENT_BROWSER_GPU_VIDEO_CAPTURE_DEPENDENCIES_H_
#endif // CONTENT_BROWSER_GPU_CHROMEOS_VIDEO_CAPTURE_DEPENDENCIES_H_
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@
#include "media/capture/video/video_capture_buffer_pool_impl.h"
#include "media/capture/video/video_capture_buffer_tracker_factory_impl.h"
#include "media/capture/video/video_capture_device_client.h"
#include "media/capture/video/video_capture_jpeg_decoder.h"
#include "media/capture/video/video_frame_receiver_on_task_runner.h"

#if defined(OS_CHROMEOS)
#include "media/capture/video/chromeos/video_capture_jpeg_decoder.h"
#endif // defined(OS_CHROMEOS)

namespace {

static const int kMaxBufferCount = 3;
Expand Down Expand Up @@ -72,17 +75,25 @@ void FakeVideoCaptureDeviceLauncher::LaunchDeviceAsync(
Callbacks* callbacks,
base::OnceClosure done_cb) {
auto device = system_->CreateDevice(device_id);
auto empty_jpeg_decoder_factory_cb = base::BindRepeating(
[]() { return std::unique_ptr<media::VideoCaptureJpegDecoder>(); });
scoped_refptr<media::VideoCaptureBufferPool> buffer_pool(
new media::VideoCaptureBufferPoolImpl(
std::make_unique<media::VideoCaptureBufferTrackerFactoryImpl>(),
kMaxBufferCount));
#if defined(OS_CHROMEOS)
auto device_client = std::make_unique<media::VideoCaptureDeviceClient>(
media::VideoCaptureBufferType::kSharedMemory,
std::make_unique<media::VideoFrameReceiverOnTaskRunner>(
receiver, base::ThreadTaskRunnerHandle::Get()),
std::move(buffer_pool), base::BindRepeating([]() {
return std::unique_ptr<media::VideoCaptureJpegDecoder>();
}));
#else
auto device_client = std::make_unique<media::VideoCaptureDeviceClient>(
media::VideoCaptureBufferType::kSharedMemory,
std::make_unique<media::VideoFrameReceiverOnTaskRunner>(
receiver, base::ThreadTaskRunnerHandle::Get()),
std::move(buffer_pool), std::move(empty_jpeg_decoder_factory_cb));
std::move(buffer_pool));
#endif // defined(OS_CHROMEOS)
device->AllocateAndStart(params, std::move(device_client));
auto launched_device =
std::make_unique<FakeLaunchedVideoCaptureDevice>(std::move(device));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
#include "base/strings/stringprintf.h"
#include "base/task/post_task.h"
#include "build/build_config.h"
#include "content/browser/gpu/video_capture_dependencies.h"
#include "content/browser/renderer_host/media/in_process_launched_video_capture_device.h"
#include "content/browser/renderer_host/media/video_capture_controller.h"
#include "content/public/browser/browser_task_traits.h"
Expand All @@ -23,11 +22,9 @@
#include "media/base/media_switches.h"
#include "media/capture/video/fake_video_capture_device.h"
#include "media/capture/video/fake_video_capture_device_factory.h"
#include "media/capture/video/scoped_video_capture_jpeg_decoder.h"
#include "media/capture/video/video_capture_buffer_pool_impl.h"
#include "media/capture/video/video_capture_buffer_tracker_factory_impl.h"
#include "media/capture/video/video_capture_device_client.h"
#include "media/capture/video/video_capture_jpeg_decoder_impl.h"
#include "media/capture/video/video_frame_receiver.h"
#include "media/capture/video/video_frame_receiver_on_task_runner.h"
#include "third_party/blink/public/common/mediastream/media_stream_request.h"
Expand All @@ -45,8 +42,15 @@
#endif // defined(OS_ANDROID)
#endif // defined(ENABLE_SCREEN_CAPTURE)

#if defined(OS_CHROMEOS)
#include "content/browser/gpu/chromeos/video_capture_dependencies.h"
#include "media/capture/video/chromeos/scoped_video_capture_jpeg_decoder.h"
#include "media/capture/video/chromeos/video_capture_jpeg_decoder_impl.h"
#endif // defined(OS_CHROMEOS)

namespace {

#if defined(OS_CHROMEOS)
std::unique_ptr<media::VideoCaptureJpegDecoder> CreateGpuJpegDecoder(
media::VideoCaptureJpegDecoder::DecodeDoneCB decode_done_cb,
base::Callback<void(const std::string&)> send_log_message_cb) {
Expand All @@ -60,6 +64,7 @@ std::unique_ptr<media::VideoCaptureJpegDecoder> CreateGpuJpegDecoder(
std::move(send_log_message_cb)),
io_task_runner);
}
#endif // defined(OS_CHROMEOS)

// The maximum number of video frame buffers in-flight at any one time. This
// value should be based on the logical capacity of the capture pipeline, and
Expand Down Expand Up @@ -248,6 +253,7 @@ InProcessVideoCaptureDeviceLauncher::CreateDeviceClient(
std::make_unique<media::VideoCaptureBufferTrackerFactoryImpl>(),
buffer_pool_max_buffer_count);

#if defined(OS_CHROMEOS)
return std::make_unique<media::VideoCaptureDeviceClient>(
requested_buffer_type, std::move(receiver), std::move(buffer_pool),
base::BindRepeating(
Expand All @@ -256,6 +262,10 @@ InProcessVideoCaptureDeviceLauncher::CreateDeviceClient(
receiver_on_io_thread),
base::BindRepeating(&media::VideoFrameReceiver::OnLog,
receiver_on_io_thread)));
#else
return std::make_unique<media::VideoCaptureDeviceClient>(
requested_buffer_type, std::move(receiver), std::move(buffer_pool));
#endif // defined(OS_CHROMEOS)
}

void InProcessVideoCaptureDeviceLauncher::OnDeviceStarted(
Expand Down
Loading

0 comments on commit 0cdabc9

Please sign in to comment.