summaryrefslogtreecommitdiffstats
path: root/content/renderer/media
diff options
context:
space:
mode:
authorperkj@chromium.org <perkj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-14 12:25:48 +0000
committerperkj@chromium.org <perkj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-14 12:25:48 +0000
commitd869cf2c8da8b6ffbdcc78b16659a641a6581cba (patch)
tree4dfd646784b734c8d4d6dd3ccda15f5edead118d /content/renderer/media
parentf1c8312aad8aebd7382d9e00a46343bed43e41ea (diff)
downloadchromium_src-d869cf2c8da8b6ffbdcc78b16659a641a6581cba.zip
chromium_src-d869cf2c8da8b6ffbdcc78b16659a641a6581cba.tar.gz
chromium_src-d869cf2c8da8b6ffbdcc78b16659a641a6581cba.tar.bz2
MediaStreamVideoSource: don't crop NATIVE_TEXTURE-backed frames.
The use of VideoFrame::WrapVideoFrame() is not supported for NATIVE_TEXTURES, The problem is tracked in crbug/362521 Also: - use Rect::ClampToCenteredSize() instead of reinventing the wheel. BUG=362007,362521 Review URL: https://codereview.chromium.org/233733006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263614 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/media')
-rw-r--r--content/renderer/media/media_stream_video_source.cc31
1 files changed, 12 insertions, 19 deletions
diff --git a/content/renderer/media/media_stream_video_source.cc b/content/renderer/media/media_stream_video_source.cc
index 31448b4..28d47d2 100644
--- a/content/renderer/media/media_stream_video_source.cc
+++ b/content/renderer/media/media_stream_video_source.cc
@@ -291,7 +291,7 @@ MediaStreamVideoSource* MediaStreamVideoSource::GetVideoSource(
return static_cast<MediaStreamVideoSource*>(source.extraData());
}
-//static
+// static
bool MediaStreamVideoSource::IsConstraintSupported(const std::string& name) {
for (size_t i = 0; i < arraysize(kSupportedConstraints); ++i) {
if (kSupportedConstraints[i] == name)
@@ -395,26 +395,20 @@ void MediaStreamVideoSource::DeliverVideoFrame(
if (frame->visible_rect().size().width() > max_frame_output_size_.width() ||
frame->visible_rect().size().height() > max_frame_output_size_.height()) {
-
// If |frame| is not the size that is expected, we need to crop it by
// providing a new |visible_rect|. The new visible rect must be within the
// original |visible_rect|.
- const int visible_width = std::min(max_frame_output_size_.width(),
- frame->visible_rect().width());
-
- const int visible_height = std::min(max_frame_output_size_.height(),
- frame->visible_rect().height());
-
- // Find a new horizontal offset within |frame|.
- const int horiz_crop = frame->visible_rect().x() +
- ((frame->visible_rect().width() - visible_width) / 2);
- // Find a new vertical offset within |frame|.
- const int vert_crop = frame->visible_rect().y() +
- ((frame->visible_rect().height() - visible_height) / 2);
-
- gfx::Rect rect(horiz_crop, vert_crop, visible_width, visible_height);
- video_frame = media::VideoFrame::WrapVideoFrame(
- frame, rect, rect.size(), base::Bind(&ReleaseOriginalFrame, frame));
+ gfx::Rect output_rect = frame->visible_rect();
+ output_rect.ClampToCenteredSize(max_frame_output_size_);
+ // TODO(perkj): Allow cropping of textures once http://crbug/362521 is
+ // fixed.
+ if (frame->format() != media::VideoFrame::NATIVE_TEXTURE) {
+ video_frame = media::VideoFrame::WrapVideoFrame(
+ frame,
+ output_rect,
+ output_rect.size(),
+ base::Bind(&ReleaseOriginalFrame, frame));
+ }
}
if ((frame->format() == media::VideoFrame::I420 ||
@@ -506,7 +500,6 @@ void MediaStreamVideoSource::FinalizeAddTrack() {
callbacks.swap(requested_constraints_);
for (std::vector<RequestedConstraints>::iterator it = callbacks.begin();
it != callbacks.end(); ++it) {
-
bool success = state_ == STARTED &&
!FilterFormats(it->constraints, formats).empty();
DVLOG(3) << "FinalizeAddTrack() success " << success;