Index: content/common/gpu/media/vt_video_decode_accelerator.cc |
diff --git a/content/common/gpu/media/vt_video_decode_accelerator.cc b/content/common/gpu/media/vt_video_decode_accelerator.cc |
index d4ad116c39304c12eca8c2894220897269aa7b20..a3764e8cde8476e2f13aca0848c0aabf9c044c35 100644 |
--- a/content/common/gpu/media/vt_video_decode_accelerator.cc |
+++ b/content/common/gpu/media/vt_video_decode_accelerator.cc |
@@ -32,6 +32,11 @@ using content_common_gpu_media::StubPathMap; |
namespace content { |
+// Track VideoToolbox loaded to make sure that loading is attempted once and |
DaleCurtis
2014/12/04 01:57:31
Seems instead you should be using a LazyInstance::
sandersd (OOO until July 31)
2014/12/04 02:05:48
That seems rather complicated for this use case, s
|
+// only once, regardless of the --no-sandbox flag. |
+static bool vt_init_attempted = false; |
+static bool vt_init_successful = false; |
+ |
// Size to use for NALU length headers in AVC format (can be 1, 2, or 4). |
static const int kNALUHeaderLength = 4; |
@@ -86,6 +91,8 @@ BuildImageConfig(CMVideoDimensions coded_dimensions) { |
// internally. If that happens, the likely solution is to expand the scope of |
// this initialization. |
void InitializeVideoToolbox() { |
+ vt_init_attempted = true; |
+ |
if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
switches::kDisableAcceleratedVideoDecode)) { |
return; |
@@ -159,6 +166,8 @@ void InitializeVideoToolbox() { |
content_common_gpu_media::UninitializeVt(); |
return; |
} |
+ |
+ vt_init_successful = true; |
} |
// Route decoded frame callbacks back into the VTVideoDecodeAccelerator. |
@@ -229,7 +238,10 @@ bool VTVideoDecodeAccelerator::Initialize( |
DCHECK(gpu_thread_checker_.CalledOnValidThread()); |
client_ = client; |
- if (!IsVtInitialized()) |
+ if (!vt_init_attempted) |
+ InitializeVideoToolbox(); |
+ |
+ if (!vt_init_successful) |
return false; |
// Only H.264 is supported. |
@@ -474,8 +486,8 @@ void VTVideoDecodeAccelerator::DecodeTask( |
return; |
} |
- // If there are no non-configuration units, drop the bitstream buffer by |
- // returning an empty frame. |
+ // If there are no image slices, drop the bitstream buffer by returning an |
+ // empty frame. |
if (!data_size) { |
if (!FinishDelayedFrames()) |
return; |