Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Unified Diff: media/tools/player_x11/gl_video_renderer.cc

Issue 11269017: Plumb through cropped output size for VideoFrame (Closed) Base URL: https://git.chromium.org/git/chromium/src@git-svn
Patch Set: Found the windows failure, and fixed it. Thanks akalin@ Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/tools/player_x11/gl_video_renderer.h ('k') | media/tools/player_x11/x11_video_renderer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/tools/player_x11/gl_video_renderer.cc
diff --git a/media/tools/player_x11/gl_video_renderer.cc b/media/tools/player_x11/gl_video_renderer.cc
index 50abdd911f2c42f33461a3cac05023273d88b817..334dfadb555111904dca20076fa8bb5f462f61f8 100644
--- a/media/tools/player_x11/gl_video_renderer.cc
+++ b/media/tools/player_x11/gl_video_renderer.cc
@@ -121,8 +121,7 @@ GlVideoRenderer::~GlVideoRenderer() {
void GlVideoRenderer::Paint(media::VideoFrame* video_frame) {
if (!gl_context_)
- Initialize(video_frame->data_size().width(),
- video_frame->data_size().height());
+ Initialize(video_frame->coded_size(), video_frame->visible_rect());
// Convert YUV frame to RGB.
DCHECK(video_frame->format() == media::VideoFrame::YV12 ||
@@ -147,12 +146,12 @@ void GlVideoRenderer::Paint(media::VideoFrame* video_frame) {
glXSwapBuffers(display_, window_);
}
-void GlVideoRenderer::Initialize(int width, int height) {
+void GlVideoRenderer::Initialize(gfx::Size coded_size, gfx::Rect visible_rect) {
CHECK(!gl_context_);
LOG(INFO) << "Initializing GL Renderer...";
// Resize the window to fit that of the video.
- XResizeWindow(display_, window_, width, height);
+ XResizeWindow(display_, window_, visible_rect.width(), visible_rect.height());
gl_context_ = InitGLContext(display_, window_);
CHECK(gl_context_) << "Failed to initialize GL context";
@@ -241,8 +240,16 @@ void GlVideoRenderer::Initialize(int width, int height) {
int tc_location = glGetAttribLocation(program, "in_tc");
glEnableVertexAttribArray(tc_location);
- glVertexAttribPointer(tc_location, 2, GL_FLOAT, GL_FALSE, 0,
- kTextureCoords);
+ float verts[8];
+ float x0 = static_cast<float>(visible_rect.x()) / coded_size.width();
+ float y0 = static_cast<float>(visible_rect.y()) / coded_size.height();
+ float x1 = static_cast<float>(visible_rect.right()) / coded_size.width();
+ float y1 = static_cast<float>(visible_rect.bottom()) / coded_size.height();
+ verts[0] = x0; verts[1] = y0;
+ verts[2] = x0; verts[3] = y1;
+ verts[4] = x1; verts[5] = y0;
+ verts[6] = x1; verts[7] = y1;
+ glVertexAttribPointer(tc_location, 2, GL_FLOAT, GL_FALSE, 0, verts);
// We are getting called on a thread. Release the context so that it can be
// made current on the main thread.
« no previous file with comments | « media/tools/player_x11/gl_video_renderer.h ('k') | media/tools/player_x11/x11_video_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698