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, |