Gnash  0.8.11dev
gtk_glue_agg_vaapi.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010,
3 // 2011 Free Software Foundation, Inc.
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 //
19 
20 #ifdef HAVE_CONFIG_H
21 #include "gnashconfig.h"
22 #endif
23 
24 #include "gtk_glue.h"
25 
26 #include <gtk/gtk.h>
27 #include <gdk/gdk.h>
28 #include <memory>
29 #include "vaapi/VaapiImageFormat.h"
30 
31 namespace gnash
32 {
33 
34 // Forward declarations
35 class VaapiImage;
36 class VaapiSurface;
37 class VaapiSubpicture;
38 class VaapiRectangle;
39 class VaapiVideoWindow;
40 class Renderer_agg_base;
41 class movie_root;
42 
43 class GtkAggVaapiGlue : public GtkGlue
44 {
45 public:
48 
49  bool init(int argc, char **argv[]);
50  void prepDrawingArea(GtkWidget *drawing_area);
52  void setRenderHandlerSize(int width, int height);
53  virtual void beforeRendering(movie_root* stage);
54  void render();
55  void render(GdkRegion * const);
56  void configure(GtkWidget *const widget, GdkEventConfigure *const event);
57 
58 private:
59  VaapiVideoWindow *getVideoWindow(std::shared_ptr<VaapiSurface> surface,
60  GdkWindow *parent_window,
61  VaapiRectangle const & rect);
62 
63  void resetRenderSurface(unsigned int width, unsigned int height);
64 
65 private:
66  Renderer_agg_base *_agg_renderer;
67  VaapiImageFormat _vaapi_image_format;
68  std::shared_ptr<VaapiImage> _vaapi_image;
69  unsigned int _vaapi_image_width;
70  unsigned int _vaapi_image_height;
71  std::shared_ptr<VaapiSubpicture> _vaapi_subpicture;
72  std::unique_ptr<VaapiSurface> _vaapi_surface;
73  unsigned int _window_width;
74  unsigned int _window_height;
75  bool _window_is_setup;
76 };
77 
78 } // namespace gnash
Renderer * createRenderHandler()
Definition: gtk_glue_agg_vaapi.cpp:183
void prepDrawingArea(GtkWidget *drawing_area)
Definition: gtk_glue_agg_vaapi.cpp:170
VA rectangle abstraction.
Definition: VaapiSurface.h:35
VaapiImageFormat
Image types.
Definition: VaapiImageFormat.h:34
void setRenderHandlerSize(int width, int height)
Definition: gtk_glue_agg_vaapi.cpp:251
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
Definition: klash_part.cpp:329
Base class for render handlers.
Definition: Renderer.h:188
~GtkAggVaapiGlue()
Definition: gtk_glue_agg_vaapi.cpp:154
Definition: klash_part.cpp:329
Definition: gtk_glue.h:40
Definition: Renderer_agg.h:29
GtkAggVaapiGlue()
Definition: gtk_glue_agg_vaapi.cpp:143
Definition: gtk_glue_agg_vaapi.h:43
void render()
Definition: gtk_glue_agg_vaapi.cpp:312
void configure(GtkWidget *const widget, GdkEventConfigure *const event)
Definition: gtk_glue_agg_vaapi.cpp:410
virtual void beforeRendering(movie_root *stage)
Definition: gtk_glue_agg_vaapi.cpp:260
bool init(int argc, char **argv[])
Definition: gtk_glue_agg_vaapi.cpp:159
This class represents the &#39;Stage&#39; and top-level movie.
Definition: movie_root.h:150