| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_ms_compositor.h" | 5 #include "content/renderer/media/webmediaplayer_ms_compositor.h" |
| 6 | 6 |
| 7 #include <stdint.h> |
| 8 |
| 7 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 8 #include "base/hash.h" | 10 #include "base/hash.h" |
| 9 #include "base/single_thread_task_runner.h" | 11 #include "base/single_thread_task_runner.h" |
| 10 #include "cc/blink/context_provider_web_context.h" | 12 #include "cc/blink/context_provider_web_context.h" |
| 11 #include "content/renderer/media/webmediaplayer_ms.h" | 13 #include "content/renderer/media/webmediaplayer_ms.h" |
| 12 #include "content/renderer/render_thread_impl.h" | 14 #include "content/renderer/render_thread_impl.h" |
| 13 #include "media/base/media_switches.h" | 15 #include "media/base/media_switches.h" |
| 14 #include "media/base/video_frame.h" | 16 #include "media/base/video_frame.h" |
| 15 #include "media/base/video_util.h" | 17 #include "media/base/video_util.h" |
| 16 #include "media/filters/video_renderer_algorithm.h" | 18 #include "media/filters/video_renderer_algorithm.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 54 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
| 53 if (provider) { | 55 if (provider) { |
| 54 const media::Context3D context_3d = | 56 const media::Context3D context_3d = |
| 55 media::Context3D(provider->ContextGL(), provider->GrContext()); | 57 media::Context3D(provider->ContextGL(), provider->GrContext()); |
| 56 DCHECK(context_3d.gl); | 58 DCHECK(context_3d.gl); |
| 57 video_renderer->Copy(frame.get(), &canvas, context_3d); | 59 video_renderer->Copy(frame.get(), &canvas, context_3d); |
| 58 } else { | 60 } else { |
| 59 // GPU Process crashed. | 61 // GPU Process crashed. |
| 60 bitmap.eraseColor(SK_ColorTRANSPARENT); | 62 bitmap.eraseColor(SK_ColorTRANSPARENT); |
| 61 } | 63 } |
| 62 libyuv::ARGBToI420(reinterpret_cast<uint8*>(bitmap.getPixels()), | 64 libyuv::ARGBToI420(reinterpret_cast<uint8_t*>(bitmap.getPixels()), |
| 63 bitmap.rowBytes(), | 65 bitmap.rowBytes(), |
| 64 new_frame->data(media::VideoFrame::kYPlane), | 66 new_frame->data(media::VideoFrame::kYPlane), |
| 65 new_frame->stride(media::VideoFrame::kYPlane), | 67 new_frame->stride(media::VideoFrame::kYPlane), |
| 66 new_frame->data(media::VideoFrame::kUPlane), | 68 new_frame->data(media::VideoFrame::kUPlane), |
| 67 new_frame->stride(media::VideoFrame::kUPlane), | 69 new_frame->stride(media::VideoFrame::kUPlane), |
| 68 new_frame->data(media::VideoFrame::kVPlane), | 70 new_frame->data(media::VideoFrame::kVPlane), |
| 69 new_frame->stride(media::VideoFrame::kVPlane), | 71 new_frame->stride(media::VideoFrame::kVPlane), |
| 70 size.width(), size.height()); | 72 size.width(), size.height()); |
| 71 } else { | 73 } else { |
| 72 DCHECK(frame->IsMappable()); | 74 DCHECK(frame->IsMappable()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 if (remote_video && | 119 if (remote_video && |
| 118 !base::CommandLine::ForCurrentProcess()->HasSwitch( | 120 !base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 119 switches::kDisableRTCSmoothnessAlgorithm)) { | 121 switches::kDisableRTCSmoothnessAlgorithm)) { |
| 120 base::AutoLock auto_lock(current_frame_lock_); | 122 base::AutoLock auto_lock(current_frame_lock_); |
| 121 rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( | 123 rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( |
| 122 base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, | 124 base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, |
| 123 base::Unretained(this)))); | 125 base::Unretained(this)))); |
| 124 } | 126 } |
| 125 | 127 |
| 126 // Just for logging purpose. | 128 // Just for logging purpose. |
| 127 const uint32 hash_value = base::Hash(url.string().utf8()); | 129 const uint32_t hash_value = base::Hash(url.string().utf8()); |
| 128 serial_ = (hash_value << 1) | (remote_video ? 1 : 0); | 130 serial_ = (hash_value << 1) | (remote_video ? 1 : 0); |
| 129 } | 131 } |
| 130 | 132 |
| 131 WebMediaPlayerMSCompositor::~WebMediaPlayerMSCompositor() { | 133 WebMediaPlayerMSCompositor::~WebMediaPlayerMSCompositor() { |
| 132 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); | 134 DCHECK(compositor_task_runner_->BelongsToCurrentThread()); |
| 133 if (video_frame_provider_client_) | 135 if (video_frame_provider_client_) |
| 134 video_frame_provider_client_->StopUsingProvider(); | 136 video_frame_provider_client_->StopUsingProvider(); |
| 135 } | 137 } |
| 136 | 138 |
| 137 gfx::Size WebMediaPlayerMSCompositor::GetCurrentSize() { | 139 gfx::Size WebMediaPlayerMSCompositor::GetCurrentSize() { |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 } | 383 } |
| 382 | 384 |
| 383 if (!rendering_frame_buffer_) { | 385 if (!rendering_frame_buffer_) { |
| 384 rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( | 386 rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( |
| 385 base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, | 387 base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, |
| 386 base::Unretained(this)))); | 388 base::Unretained(this)))); |
| 387 } | 389 } |
| 388 } | 390 } |
| 389 | 391 |
| 390 } // namespace content | 392 } // namespace content |
| OLD | NEW |