| Index: media/remoting/interstitial.cc
|
| diff --git a/media/remoting/remoting_interstitial_ui.cc b/media/remoting/interstitial.cc
|
| similarity index 72%
|
| rename from media/remoting/remoting_interstitial_ui.cc
|
| rename to media/remoting/interstitial.cc
|
| index 5a703db8bf80ba254babaa22f810c98bf34f0ae6..0a33e22470ef0371375d2b642b61be95df4109ed 100644
|
| --- a/media/remoting/remoting_interstitial_ui.cc
|
| +++ b/media/remoting/interstitial.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "media/remoting/remoting_interstitial_ui.h"
|
| +#include "media/remoting/interstitial.h"
|
|
|
| #include <algorithm> // for std::max()
|
|
|
| @@ -11,6 +11,7 @@
|
| #include "media/base/video_renderer_sink.h"
|
| #include "media/base/video_util.h"
|
| #include "skia/ext/image_operations.h"
|
| +#include "third_party/skia/include/core/SkBitmap.h"
|
| #include "third_party/skia/include/core/SkCanvas.h"
|
| #include "third_party/skia/include/core/SkTypeface.h"
|
| #include "third_party/skia/include/effects/SkBlurImageFilter.h"
|
| @@ -21,6 +22,7 @@
|
| #include "ui/gfx/vector_icons_public.h"
|
|
|
| namespace media {
|
| +namespace remoting {
|
|
|
| namespace {
|
|
|
| @@ -43,16 +45,16 @@ SkBitmap ResizeImage(const SkBitmap& image, const gfx::Size& scaled_size) {
|
| }
|
|
|
| void RenderCastMessage(const gfx::Size& canvas_size,
|
| - RemotingInterstitialType type,
|
| + InterstitialType type,
|
| SkCanvas* canvas) {
|
| DCHECK(canvas);
|
| - if (type == RemotingInterstitialType::BETWEEN_SESSIONS)
|
| + if (type == InterstitialType::BETWEEN_SESSIONS)
|
| return;
|
|
|
| // Blur the background image.
|
| - SkScalar sigma = SkDoubleToScalar(10);
|
| + constexpr SkScalar kSigma = SkIntToScalar(10);
|
| SkPaint paint_blur;
|
| - paint_blur.setImageFilter(SkBlurImageFilter::Make(sigma, sigma, nullptr));
|
| + paint_blur.setImageFilter(SkBlurImageFilter::Make(kSigma, kSigma, nullptr));
|
| canvas->saveLayer(0, &paint_blur);
|
| canvas->restore();
|
|
|
| @@ -69,30 +71,31 @@ void RenderCastMessage(const gfx::Size& canvas_size,
|
| // Both text and icon are centered horizontally. Together, they are
|
| // centered vertically.
|
| SkPaint paint;
|
| - int text_size = SkIntToScalar(canvas_size.height() / 18);
|
| paint.setAntiAlias(true);
|
| paint.setFilterQuality(kHigh_SkFilterQuality);
|
| paint.setColor(SK_ColorLTGRAY);
|
| paint.setTypeface(SkTypeface::MakeFromName(
|
| "sans", SkFontStyle::FromOldStyle(SkTypeface::kNormal)));
|
| - paint.setTextSize(text_size);
|
| + const SkScalar text_height = SkIntToScalar(canvas_size.height() / 18);
|
| + paint.setTextSize(text_height);
|
|
|
| // Draw the appropriate text.
|
| - const std::string remote_playback_message =
|
| - (type == RemotingInterstitialType::IN_SESSION
|
| + const std::string message =
|
| + (type == InterstitialType::IN_SESSION
|
| ? GetLocalizedStringUTF8(MEDIA_REMOTING_CASTING_VIDEO_TEXT)
|
| : GetLocalizedStringUTF8(MEDIA_REMOTING_CAST_ERROR_TEXT));
|
| - size_t display_text_width = paint.measureText(remote_playback_message.data(),
|
| - remote_playback_message.size());
|
| - SkScalar sk_text_offset_x = (canvas_size.width() - display_text_width) / 2.0;
|
| - SkScalar sk_text_offset_y = (canvas_size.height() / 2.0) + text_size;
|
| - canvas->drawText(remote_playback_message.data(),
|
| - remote_playback_message.size(), sk_text_offset_x,
|
| + SkScalar display_text_width =
|
| + paint.measureText(message.data(), message.size());
|
| + SkScalar sk_text_offset_x =
|
| + SkScalarFloorToScalar((canvas_size.width() - display_text_width) / 2.0);
|
| + SkScalar sk_text_offset_y =
|
| + SkScalarFloorToScalar((canvas_size.height() / 2.0) + text_height);
|
| + canvas->drawText(message.data(), message.size(), sk_text_offset_x,
|
| sk_text_offset_y, paint);
|
|
|
| // Draw the appropriate Cast icon.
|
| gfx::VectorIconId current_icon =
|
| - (type == RemotingInterstitialType::IN_SESSION
|
| + (type == InterstitialType::IN_SESSION
|
| ? gfx::VectorIconId::MEDIA_ROUTER_ACTIVE
|
| : gfx::VectorIconId::MEDIA_ROUTER_WARNING);
|
| gfx::ImageSkia icon_image = gfx::CreateVectorIcon(
|
| @@ -117,10 +120,9 @@ gfx::Size GetCanvasSize(const gfx::Size& image_size,
|
| : result;
|
| }
|
|
|
| -scoped_refptr<VideoFrame> RenderInterstitialFrame(
|
| - const SkBitmap& image,
|
| - const gfx::Size& natural_size,
|
| - RemotingInterstitialType type) {
|
| +scoped_refptr<VideoFrame> RenderInterstitialFrame(const SkBitmap& image,
|
| + const gfx::Size& natural_size,
|
| + InterstitialType type) {
|
| gfx::Size canvas_size =
|
| GetCanvasSize(gfx::Size(image.width(), image.height()), natural_size);
|
| SkBitmap canvas_bitmap;
|
| @@ -133,7 +135,7 @@ scoped_refptr<VideoFrame> RenderInterstitialFrame(
|
| gfx::Rect centered_rect = ComputeLetterboxRegion(
|
| gfx::Rect(canvas_size), gfx::Size(image.width(), image.height()));
|
| SkBitmap processed_image = ResizeImage(image, centered_rect.size());
|
| - if (type != RemotingInterstitialType::BETWEEN_SESSIONS) {
|
| + if (type != InterstitialType::BETWEEN_SESSIONS) {
|
| color_utils::HSL shift = {-1, 0, 0.2}; // Make monochromatic.
|
| processed_image =
|
| SkBitmapOperations::CreateHSLShiftedBitmap(processed_image, shift);
|
| @@ -144,24 +146,24 @@ scoped_refptr<VideoFrame> RenderInterstitialFrame(
|
| RenderCastMessage(canvas_size, type, &canvas);
|
|
|
| // Create a new VideoFrame, copy the bitmap, then return it.
|
| - scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame(
|
| - media::PIXEL_FORMAT_I420, canvas_size, gfx::Rect(canvas_size),
|
| - canvas_size, base::TimeDelta());
|
| + scoped_refptr<VideoFrame> video_frame = VideoFrame::CreateFrame(
|
| + PIXEL_FORMAT_I420, canvas_size, gfx::Rect(canvas_size), canvas_size,
|
| + base::TimeDelta());
|
| canvas_bitmap.lockPixels();
|
| - media::CopyRGBToVideoFrame(
|
| - reinterpret_cast<uint8_t*>(canvas_bitmap.getPixels()),
|
| - canvas_bitmap.rowBytes(),
|
| - gfx::Rect(canvas_size.width(), canvas_size.height()), video_frame.get());
|
| + CopyRGBToVideoFrame(reinterpret_cast<uint8_t*>(canvas_bitmap.getPixels()),
|
| + canvas_bitmap.rowBytes(),
|
| + gfx::Rect(canvas_size.width(), canvas_size.height()),
|
| + video_frame.get());
|
| canvas_bitmap.unlockPixels();
|
| return video_frame;
|
| }
|
|
|
| } // namespace
|
|
|
| -void PaintRemotingInterstitial(const SkBitmap& image,
|
| - const gfx::Size& natural_size,
|
| - RemotingInterstitialType interstitial_type,
|
| - VideoRendererSink* video_renderer_sink) {
|
| +void PaintInterstitial(const SkBitmap& image,
|
| + const gfx::Size& natural_size,
|
| + InterstitialType interstitial_type,
|
| + VideoRendererSink* video_renderer_sink) {
|
| if (!video_renderer_sink)
|
| return;
|
|
|
| @@ -171,4 +173,5 @@ void PaintRemotingInterstitial(const SkBitmap& image,
|
| video_renderer_sink->PaintSingleFrame(interstitial);
|
| }
|
|
|
| +} // namespace remoting
|
| } // namespace media
|
|
|