OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. Use of this | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. Use of this |
2 // source code is governed by a BSD-style license that can be found in the | 2 // source code is governed by a BSD-style license that can be found in the |
3 // LICENSE file. | 3 // LICENSE file. |
4 | 4 |
5 #ifndef MEDIA_TOOLS_PLAYER_X11_X11_VIDEO_RENDERER_H_ | 5 #ifndef MEDIA_TOOLS_PLAYER_X11_X11_VIDEO_RENDERER_H_ |
6 #define MEDIA_TOOLS_PLAYER_X11_X11_VIDEO_RENDERER_H_ | 6 #define MEDIA_TOOLS_PLAYER_X11_X11_VIDEO_RENDERER_H_ |
7 | 7 |
8 #include <GL/glew.h> | |
9 #include <GL/glxew.h> | |
10 #include <X11/Xlib.h> | 8 #include <X11/Xlib.h> |
11 | 9 |
12 #include "base/lock.h" | 10 #include "base/lock.h" |
13 #include "base/scoped_ptr.h" | 11 #include "base/scoped_ptr.h" |
14 #include "media/base/factory.h" | 12 #include "media/base/factory.h" |
15 #include "media/filters/video_renderer_base.h" | 13 #include "media/filters/video_renderer_base.h" |
16 | 14 |
17 class X11VideoRenderer : public media::VideoRendererBase { | 15 class X11VideoRenderer : public media::VideoRendererBase { |
18 public: | 16 public: |
19 static media::FilterFactory* CreateFactory(Display* display, | 17 static media::FilterFactory* CreateFactory(Display* display, |
20 Window window) { | 18 Window window) { |
21 return new media::FilterFactoryImpl2< | 19 return new media::FilterFactoryImpl2< |
22 X11VideoRenderer, Display*, Window>(display, window); | 20 X11VideoRenderer, Display*, Window>(display, window); |
23 } | 21 } |
24 | 22 |
25 X11VideoRenderer(Display* display, Window window); | 23 X11VideoRenderer(Display* display, Window window); |
26 | 24 |
27 // This method is called to paint the current video frame to the assigned | 25 // This method is called to paint the current video frame to the assigned |
28 // window. | 26 // window. |
29 void Paint(); | 27 virtual void Paint(); |
scherkus (not reviewing)
2010/02/12 01:04:20
this no longers need to be virtual
| |
30 | 28 |
31 // media::FilterFactoryImpl2 Implementation. | 29 // media::FilterFactoryImpl2 Implementation. |
32 static bool IsMediaFormatSupported(const media::MediaFormat& media_format); | 30 static bool IsMediaFormatSupported(const media::MediaFormat& media_format); |
33 | 31 |
34 // Returns the instance of this class. | |
35 static X11VideoRenderer* instance() { return instance_; } | 32 static X11VideoRenderer* instance() { return instance_; } |
36 | 33 |
37 protected: | 34 protected: |
38 // VideoRendererBase implementation. | 35 // VideoRendererBase implementation. |
39 virtual bool OnInitialize(media::VideoDecoder* decoder); | 36 virtual bool OnInitialize(media::VideoDecoder* decoder); |
40 virtual void OnStop(); | 37 virtual void OnStop(); |
41 virtual void OnFrameAvailable(); | 38 virtual void OnFrameAvailable(); |
42 | 39 |
43 private: | 40 private: |
44 // Only allow to be deleted by reference counting. | 41 // Only allow to be deleted by reference counting. |
(...skipping 12 matching lines...) Expand all Loading... | |
57 // Protects |new_frame_|. | 54 // Protects |new_frame_|. |
58 Lock lock_; | 55 Lock lock_; |
59 bool new_frame_; | 56 bool new_frame_; |
60 | 57 |
61 // Picture represents the paint target. This is a picture located | 58 // Picture represents the paint target. This is a picture located |
62 // in the server. | 59 // in the server. |
63 unsigned long picture_; | 60 unsigned long picture_; |
64 | 61 |
65 bool use_render_; | 62 bool use_render_; |
66 | 63 |
67 bool use_gl_; | |
68 | |
69 // GL context. | |
70 GLXContext gl_context_; | |
71 | |
72 // 3 textures, one for each plane. | |
73 GLuint textures_[3]; | |
74 | |
75 // Shaders and program for YUV->RGB conversion. | |
76 GLuint vertex_shader_; | |
77 GLuint fragment_shader_; | |
78 GLuint program_; | |
79 | |
80 static X11VideoRenderer* instance_; | 64 static X11VideoRenderer* instance_; |
81 | 65 |
82 DISALLOW_COPY_AND_ASSIGN(X11VideoRenderer); | 66 DISALLOW_COPY_AND_ASSIGN(X11VideoRenderer); |
83 }; | 67 }; |
84 | 68 |
85 #endif // MEDIA_TOOLS_PLAYER_X11_X11_VIDEO_RENDERER_H_ | 69 #endif // MEDIA_TOOLS_PLAYER_X11_X11_VIDEO_RENDERER_H_ |
OLD | NEW |