| Index: content/common/gpu/media/gpu_video_encode_accelerator.cc
|
| diff --git a/content/common/gpu/media/gpu_video_encode_accelerator.cc b/content/common/gpu/media/gpu_video_encode_accelerator.cc
|
| index 0fb613aeaeff3c44538864f9cb8a8392d2373627..3fe89d3a3a45aa0f5fae2a6bf2886a36fdfdda9d 100644
|
| --- a/content/common/gpu/media/gpu_video_encode_accelerator.cc
|
| +++ b/content/common/gpu/media/gpu_video_encode_accelerator.cc
|
| @@ -95,7 +95,7 @@ void GpuVideoEncodeAccelerator::Initialize(
|
| return;
|
| }
|
|
|
| - CreateEncoder();
|
| + encoder_ = CreateEncoder();
|
| if (!encoder_) {
|
| DLOG(ERROR)
|
| << "GpuVideoEncodeAccelerator::Initialize(): VEA creation failed";
|
| @@ -165,39 +165,29 @@ void GpuVideoEncodeAccelerator::OnWillDestroyStub() {
|
| // static
|
| std::vector<media::VideoEncodeAccelerator::SupportedProfile>
|
| GpuVideoEncodeAccelerator::GetSupportedProfiles() {
|
| - std::vector<media::VideoEncodeAccelerator::SupportedProfile> profiles;
|
| -
|
| -#if defined(OS_CHROMEOS) && defined(USE_X11)
|
| -#if defined(ARCH_CPU_ARMEL)
|
| - profiles = V4L2VideoEncodeAccelerator::GetSupportedProfiles();
|
| -#elif defined(ARCH_CPU_X86_FAMILY)
|
| - profiles = VaapiVideoEncodeAccelerator::GetSupportedProfiles();
|
| -#endif
|
| -#elif defined(OS_ANDROID) && defined(ENABLE_WEBRTC)
|
| - profiles = AndroidVideoEncodeAccelerator::GetSupportedProfiles();
|
| -#endif
|
| -
|
| - // TODO(sheu): return platform-specific profiles.
|
| - return profiles;
|
| + scoped_ptr<media::VideoEncodeAccelerator> encoder = CreateEncoder();
|
| + if (!encoder)
|
| + return std::vector<media::VideoEncodeAccelerator::SupportedProfile>();
|
| + return encoder->GetSupportedProfiles();
|
| }
|
|
|
| -void GpuVideoEncodeAccelerator::CreateEncoder() {
|
| - DCHECK(!encoder_);
|
| +scoped_ptr<media::VideoEncodeAccelerator>
|
| +GpuVideoEncodeAccelerator::CreateEncoder() {
|
| + scoped_ptr<media::VideoEncodeAccelerator> encoder;
|
| #if defined(OS_CHROMEOS) && defined(USE_X11)
|
| #if defined(ARCH_CPU_ARMEL)
|
| scoped_ptr<V4L2Device> device = V4L2Device::Create(V4L2Device::kEncoder);
|
| - if (!device.get())
|
| - return;
|
| -
|
| - encoder_.reset(new V4L2VideoEncodeAccelerator(device.Pass()));
|
| + if (device)
|
| + encoder.reset(new V4L2VideoEncodeAccelerator(device.Pass()));
|
| #elif defined(ARCH_CPU_X86_FAMILY)
|
| const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
|
| if (!cmd_line->HasSwitch(switches::kDisableVaapiAcceleratedVideoEncode))
|
| - encoder_.reset(new VaapiVideoEncodeAccelerator(gfx::GetXDisplay()));
|
| + encoder.reset(new VaapiVideoEncodeAccelerator(gfx::GetXDisplay()));
|
| #endif
|
| #elif defined(OS_ANDROID) && defined(ENABLE_WEBRTC)
|
| - encoder_.reset(new AndroidVideoEncodeAccelerator());
|
| + encoder.reset(new AndroidVideoEncodeAccelerator());
|
| #endif
|
| + return encoder.Pass();
|
| }
|
|
|
| void GpuVideoEncodeAccelerator::OnEncode(int32 frame_id,
|
|
|