diff options
author | sheu@chromium.org <sheu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-09 22:01:21 +0000 |
---|---|---|
committer | sheu@chromium.org <sheu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-09 22:01:21 +0000 |
commit | d418203614fe5aacf0f2e03fe21644218c1e4f10 (patch) | |
tree | 86ce1fc632d7c258f677fabbfa435491afdf1083 /content/renderer/media | |
parent | 309ad6ae56d328c58867bed9567d2045cfa49673 (diff) | |
download | chromium_src-d418203614fe5aacf0f2e03fe21644218c1e4f10.zip chromium_src-d418203614fe5aacf0f2e03fe21644218c1e4f10.tar.gz chromium_src-d418203614fe5aacf0f2e03fe21644218c1e4f10.tar.bz2 |
Plumb through cropped output size for VideoFrame
The video playback path needs to be able to handle cropped video frames,
e.g. for HW decoders that output to macroblock-rounded buffer sizes.
* Composite only the visible subrect from WebVideoFrame in
cc::VideoLayerImpl
* Remove some extraneous cropping logic from cc::VideoLayerImpl now that
we have exact cropping info.
* media::VideoFrame replaces "data_size_" member with "coded_size_", and
adds a "visible_rect_" gfx::Rect to indicate the sub-rect of the
entire frame that should be visible (after cropping)
* Associated changes to various decoder/capture pipelines to plumb this
through.
TEST=build, run on x86, ARM
BUG=155416,140509,chrome-os-partner:15230
Change-Id: I284bc893959db427bc9ae677aed8b07292d228ae
Review URL: https://chromiumcodereview.appspot.com/11269017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166988 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/media')
-rw-r--r-- | content/renderer/media/local_video_capture.cc | 4 | ||||
-rw-r--r-- | content/renderer/media/rtc_video_decoder.cc | 1 | ||||
-rw-r--r-- | content/renderer/media/rtc_video_decoder_unittest.cc | 16 | ||||
-rw-r--r-- | content/renderer/media/rtc_video_renderer.cc | 1 |
4 files changed, 16 insertions, 6 deletions
diff --git a/content/renderer/media/local_video_capture.cc b/content/renderer/media/local_video_capture.cc index b08f221..f4bc376 100644 --- a/content/renderer/media/local_video_capture.cc +++ b/content/renderer/media/local_video_capture.cc @@ -128,8 +128,8 @@ void LocalVideoCapture::OnBufferReady( gfx::Size natural_size(buf->width, buf->height); scoped_refptr<media::VideoFrame> current_frame = - media::VideoFrame::CreateFrame(media::VideoFrame::YV12, - natural_size, natural_size, + media::VideoFrame::CreateFrame(media::VideoFrame::YV12, natural_size, + gfx::Rect(natural_size), natural_size, buf->timestamp - base::Time()); uint8* buffer = buf->memory_pointer; diff --git a/content/renderer/media/rtc_video_decoder.cc b/content/renderer/media/rtc_video_decoder.cc index 2ca2379..d795daf 100644 --- a/content/renderer/media/rtc_video_decoder.cc +++ b/content/renderer/media/rtc_video_decoder.cc @@ -147,6 +147,7 @@ void RTCVideoDecoder::RenderFrame(const cricket::VideoFrame* frame) { scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame(media::VideoFrame::YV12, visible_size_, + gfx::Rect(visible_size_), visible_size_, timestamp - start_time_); last_frame_timestamp_ = timestamp; diff --git a/content/renderer/media/rtc_video_decoder_unittest.cc b/content/renderer/media/rtc_video_decoder_unittest.cc index c13b255..ab54037 100644 --- a/content/renderer/media/rtc_video_decoder_unittest.cc +++ b/content/renderer/media/rtc_video_decoder_unittest.cc @@ -251,12 +251,20 @@ const int RTCVideoDecoderTest::kHeight = 480; const PipelineStatistics RTCVideoDecoderTest::kStatistics; MATCHER_P2(HasSize, width, height, "") { - EXPECT_EQ(arg->data_size().width(), width); - EXPECT_EQ(arg->data_size().height(), height); + EXPECT_EQ(arg->coded_size().width(), width); + EXPECT_EQ(arg->coded_size().height(), height); + EXPECT_EQ(arg->visible_rect().x(), 0); + EXPECT_EQ(arg->visible_rect().y(), 0); + EXPECT_EQ(arg->visible_rect().width(), width); + EXPECT_EQ(arg->visible_rect().height(), height); EXPECT_EQ(arg->natural_size().width(), width); EXPECT_EQ(arg->natural_size().height(), height); - return (arg->data_size().width() == width) && - (arg->data_size().height() == height) && + return (arg->coded_size().width() == width) && + (arg->coded_size().height() == height) && + (arg->visible_rect().x() == 0) && + (arg->visible_rect().y() == 0) && + (arg->visible_rect().width() == width) && + (arg->visible_rect().height() == height) && (arg->natural_size().width() == width) && (arg->natural_size().height() == height); } diff --git a/content/renderer/media/rtc_video_renderer.cc b/content/renderer/media/rtc_video_renderer.cc index 14444fa..68d1c97 100644 --- a/content/renderer/media/rtc_video_renderer.cc +++ b/content/renderer/media/rtc_video_renderer.cc @@ -75,6 +75,7 @@ void RTCVideoRenderer::RenderFrame(const cricket::VideoFrame* frame) { scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame(media::VideoFrame::YV12, size, + gfx::Rect(size), size, timestamp); |