OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "media/tools/player_x11/gl_video_renderer.h" | 5 #include "media/tools/player_x11/gl_video_renderer.h" |
6 | 6 |
7 #include <X11/Xutil.h> | 7 #include <X11/Xutil.h> |
8 | 8 |
9 #include "app/gfx/gl/gl_implementation.h" | 9 #include "app/gfx/gl/gl_implementation.h" |
10 #include "media/base/buffers.h" | 10 #include "media/base/buffers.h" |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 // Create our YUV->RGB shader. | 162 // Create our YUV->RGB shader. |
163 GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER); | 163 GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER); |
164 const char* vs_source = kVertexShader; | 164 const char* vs_source = kVertexShader; |
165 int vs_size = sizeof(kVertexShader); | 165 int vs_size = sizeof(kVertexShader); |
166 glShaderSource(vertex_shader, 1, &vs_source, &vs_size); | 166 glShaderSource(vertex_shader, 1, &vs_source, &vs_size); |
167 glCompileShader(vertex_shader); | 167 glCompileShader(vertex_shader); |
168 int result = GL_FALSE; | 168 int result = GL_FALSE; |
169 glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &result); | 169 glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &result); |
170 if (!result) { | 170 if (!result) { |
171 char log[kErrorSize]; | 171 char log[kErrorSize]; |
172 int len; | 172 int len = 0; |
173 glGetShaderInfoLog(vertex_shader, kErrorSize - 1, &len, log); | 173 glGetShaderInfoLog(vertex_shader, kErrorSize - 1, &len, log); |
174 log[kErrorSize - 1] = 0; | 174 log[kErrorSize - 1] = 0; |
175 LOG(FATAL) << log; | 175 LOG(FATAL) << log; |
176 } | 176 } |
177 glAttachShader(program, vertex_shader); | 177 glAttachShader(program, vertex_shader); |
178 glDeleteShader(vertex_shader); | 178 glDeleteShader(vertex_shader); |
179 | 179 |
180 GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); | 180 GLuint fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); |
181 const char* ps_source = kFragmentShader; | 181 const char* ps_source = kFragmentShader; |
182 int ps_size = sizeof(kFragmentShader); | 182 int ps_size = sizeof(kFragmentShader); |
183 glShaderSource(fragment_shader, 1, &ps_source, &ps_size); | 183 glShaderSource(fragment_shader, 1, &ps_source, &ps_size); |
184 glCompileShader(fragment_shader); | 184 glCompileShader(fragment_shader); |
185 result = GL_FALSE; | 185 result = GL_FALSE; |
186 glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &result); | 186 glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &result); |
187 if (!result) { | 187 if (!result) { |
188 char log[kErrorSize]; | 188 char log[kErrorSize]; |
189 int len; | 189 int len = 0; |
190 glGetShaderInfoLog(fragment_shader, kErrorSize - 1, &len, log); | 190 glGetShaderInfoLog(fragment_shader, kErrorSize - 1, &len, log); |
191 log[kErrorSize - 1] = 0; | 191 log[kErrorSize - 1] = 0; |
192 LOG(FATAL) << log; | 192 LOG(FATAL) << log; |
193 } | 193 } |
194 glAttachShader(program, fragment_shader); | 194 glAttachShader(program, fragment_shader); |
195 glDeleteShader(fragment_shader); | 195 glDeleteShader(fragment_shader); |
196 | 196 |
197 glLinkProgram(program); | 197 glLinkProgram(program); |
198 result = GL_FALSE; | 198 result = GL_FALSE; |
199 glGetProgramiv(program, GL_LINK_STATUS, &result); | 199 glGetProgramiv(program, GL_LINK_STATUS, &result); |
200 if (!result) { | 200 if (!result) { |
201 char log[kErrorSize]; | 201 char log[kErrorSize]; |
202 int len; | 202 int len = 0; |
203 glGetProgramInfoLog(program, kErrorSize - 1, &len, log); | 203 glGetProgramInfoLog(program, kErrorSize - 1, &len, log); |
204 log[kErrorSize - 1] = 0; | 204 log[kErrorSize - 1] = 0; |
205 LOG(FATAL) << log; | 205 LOG(FATAL) << log; |
206 } | 206 } |
207 glUseProgram(program); | 207 glUseProgram(program); |
208 glDeleteProgram(program); | 208 glDeleteProgram(program); |
209 | 209 |
210 // Bind parameters. | 210 // Bind parameters. |
211 glUniform1i(glGetUniformLocation(program, "y_tex"), 0); | 211 glUniform1i(glGetUniformLocation(program, "y_tex"), 0); |
212 glUniform1i(glGetUniformLocation(program, "u_tex"), 1); | 212 glUniform1i(glGetUniformLocation(program, "u_tex"), 1); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 glActiveTexture(GL_TEXTURE0 + i); | 270 glActiveTexture(GL_TEXTURE0 + i); |
271 glPixelStorei(GL_UNPACK_ROW_LENGTH, video_frame->stride(i)); | 271 glPixelStorei(GL_UNPACK_ROW_LENGTH, video_frame->stride(i)); |
272 glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, width, height, 0, | 272 glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, width, height, 0, |
273 GL_LUMINANCE, GL_UNSIGNED_BYTE, video_frame->data(i)); | 273 GL_LUMINANCE, GL_UNSIGNED_BYTE, video_frame->data(i)); |
274 } | 274 } |
275 PutCurrentFrame(video_frame); | 275 PutCurrentFrame(video_frame); |
276 | 276 |
277 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); | 277 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); |
278 glXSwapBuffers(display_, window_); | 278 glXSwapBuffers(display_, window_); |
279 } | 279 } |
OLD | NEW |