| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/media/webmediaplayer_impl.h" | 5 #include "content/renderer/media/webmediaplayer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged), | 207 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnNaturalSizeChanged), |
| 208 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))), | 208 BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnOpacityChanged))), |
| 209 text_track_index_(0), | 209 text_track_index_(0), |
| 210 web_cdm_(NULL) { | 210 web_cdm_(NULL) { |
| 211 media_log_->AddEvent( | 211 media_log_->AddEvent( |
| 212 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); | 212 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); |
| 213 | 213 |
| 214 // |gpu_factories_| requires that its entry points be called on its | 214 // |gpu_factories_| requires that its entry points be called on its |
| 215 // |GetTaskRunner()|. Since |pipeline_| will own decoders created from the | 215 // |GetTaskRunner()|. Since |pipeline_| will own decoders created from the |
| 216 // factories, require that their message loops are identical. | 216 // factories, require that their message loops are identical. |
| 217 DCHECK(!gpu_factories_ || (gpu_factories_->GetTaskRunner() == media_loop_)); | 217 DCHECK(!gpu_factories_.get() || |
| 218 (gpu_factories_->GetTaskRunner() == media_loop_.get())); |
| 218 | 219 |
| 219 // Let V8 know we started new thread if we did not do it yet. | 220 // Let V8 know we started new thread if we did not do it yet. |
| 220 // Made separate task to avoid deletion of player currently being created. | 221 // Made separate task to avoid deletion of player currently being created. |
| 221 // Also, delaying GC until after player starts gets rid of starting lag -- | 222 // Also, delaying GC until after player starts gets rid of starting lag -- |
| 222 // collection happens in parallel with playing. | 223 // collection happens in parallel with playing. |
| 223 // | 224 // |
| 224 // TODO(enal): remove when we get rid of per-audio-stream thread. | 225 // TODO(enal): remove when we get rid of per-audio-stream thread. |
| 225 main_loop_->PostTask( | 226 main_loop_->PostTask( |
| 226 FROM_HERE, | 227 FROM_HERE, |
| 227 base::Bind(&WebMediaPlayerImpl::IncrementExternallyAllocatedMemory, | 228 base::Bind(&WebMediaPlayerImpl::IncrementExternallyAllocatedMemory, |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 unsigned int level, | 624 unsigned int level, |
| 624 unsigned int internal_format, | 625 unsigned int internal_format, |
| 625 unsigned int type, | 626 unsigned int type, |
| 626 bool premultiply_alpha, | 627 bool premultiply_alpha, |
| 627 bool flip_y) { | 628 bool flip_y) { |
| 628 TRACE_EVENT0("media", "WebMediaPlayerImpl:copyVideoTextureToPlatformTexture"); | 629 TRACE_EVENT0("media", "WebMediaPlayerImpl:copyVideoTextureToPlatformTexture"); |
| 629 | 630 |
| 630 scoped_refptr<media::VideoFrame> video_frame = | 631 scoped_refptr<media::VideoFrame> video_frame = |
| 631 GetCurrentFrameFromCompositor(); | 632 GetCurrentFrameFromCompositor(); |
| 632 | 633 |
| 633 if (!video_frame) | 634 if (!video_frame.get()) |
| 634 return false; | 635 return false; |
| 635 if (video_frame->format() != media::VideoFrame::NATIVE_TEXTURE) | 636 if (video_frame->format() != media::VideoFrame::NATIVE_TEXTURE) |
| 636 return false; | 637 return false; |
| 637 | 638 |
| 638 const gpu::MailboxHolder* mailbox_holder = video_frame->mailbox_holder(); | 639 const gpu::MailboxHolder* mailbox_holder = video_frame->mailbox_holder(); |
| 639 if (mailbox_holder->texture_target != GL_TEXTURE_2D) | 640 if (mailbox_holder->texture_target != GL_TEXTURE_2D) |
| 640 return false; | 641 return false; |
| 641 | 642 |
| 642 web_graphics_context->waitSyncPoint(mailbox_holder->sync_point); | 643 web_graphics_context->waitSyncPoint(mailbox_holder->sync_point); |
| 643 uint32 source_texture = web_graphics_context->createAndConsumeTextureCHROMIUM( | 644 uint32 source_texture = web_graphics_context->createAndConsumeTextureCHROMIUM( |
| (...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1423 compositor_task_runner_->PostTask(FROM_HERE, | 1424 compositor_task_runner_->PostTask(FROM_HERE, |
| 1424 base::Bind(&GetCurrentFrameAndSignal, | 1425 base::Bind(&GetCurrentFrameAndSignal, |
| 1425 base::Unretained(compositor_), | 1426 base::Unretained(compositor_), |
| 1426 &video_frame, | 1427 &video_frame, |
| 1427 &event)); | 1428 &event)); |
| 1428 event.Wait(); | 1429 event.Wait(); |
| 1429 return video_frame; | 1430 return video_frame; |
| 1430 } | 1431 } |
| 1431 | 1432 |
| 1432 } // namespace content | 1433 } // namespace content |
| OLD | NEW |