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 |