Gnash  0.8.11dev
VideoConverter.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2008, 2009, 2010, 2011, 2012
3 // 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 #ifndef GNASH_VIDEOCONVERTER_H
21 #define GNASH_VIDEOCONVERTER_H
22 
23 #include <boost/noncopyable.hpp>
24 #include <cstdint>
25 #include <array>
26 #include <memory>
27 
28 namespace gnash {
29 namespace media {
30 
31 
32 
34 //
42 
43 struct ImgBuf : public boost::noncopyable
44 {
45  typedef std::uint32_t Type4CC;
46  typedef void (*FreeFunc)(void*);
47 
48  ImgBuf(Type4CC t, std::uint8_t* dataptr, size_t datasize, size_t w,
49  size_t h)
50  : type(t),
51  data(dataptr),
52  size(datasize),
53  width(w),
54  height(h),
56  {}
57 
59  {
60  dealloc(data);
61  }
62 
63  static void array_delete(void* voidptr)
64  {
65  std::uint8_t* ptr = static_cast<std::uint8_t*>(voidptr);
66  delete [] ptr;
67  }
68 
69  static void noop(void* /*voidptr*/)
70  {
71  }
72 
73  Type4CC type;
74  std::uint8_t* data;
75 
76  size_t size; // in bytes
77  size_t width; // in pixels
78  size_t height; // in pixels
79 
80  std::array<size_t, 4> stride;
81 
83 };
84 
85 
87 
88 class VideoConverter : public boost::noncopyable {
89 
90 public:
92  : _src_fmt(srcFormat),
93  _dst_fmt(dstFormat)
94  {
95  }
96 
97  virtual ~VideoConverter()
98  {
99  }
100 
102  //
105  virtual std::unique_ptr<ImgBuf> convert(const ImgBuf& src) = 0;
106 
107 protected:
110 };
111 
112 
113 } // gnash.media namespace
114 } // gnash namespace
115 
116 #endif // __VIDEOCONVERTER_H__
void(* FreeFunc)(void *)
Definition: VideoConverter.h:46
ImgBuf::Type4CC _dst_fmt
Definition: VideoConverter.h:109
static void array_delete(void *voidptr)
Definition: VideoConverter.h:63
ImgBuf(Type4CC t, std::uint8_t *dataptr, size_t datasize, size_t w, size_t h)
Definition: VideoConverter.h:48
std::uint32_t Type4CC
Definition: VideoConverter.h:45
ImgBuf::Type4CC _src_fmt
Definition: VideoConverter.h:108
Anonymous namespace for callbacks, local functions, event handlers etc.
Definition: dbus_ext.cpp:40
std::uint8_t * data
Definition: VideoConverter.h:74
size_t size
Definition: VideoConverter.h:76
FreeFunc dealloc
Definition: VideoConverter.h:82
Definition: GnashKey.h:166
~ImgBuf()
Definition: VideoConverter.h:58
static void noop(void *)
Definition: VideoConverter.h:69
size_t width
Definition: VideoConverter.h:77
Definition: GnashKey.h:154
w
Definition: test.py:8
size_t height
Definition: VideoConverter.h:78
Abstract base class for video image space conversion.
Definition: VideoConverter.h:88
virtual ~VideoConverter()
Definition: VideoConverter.h:97
Type4CC type
Definition: VideoConverter.h:73
std::array< size_t, 4 > stride
Definition: VideoConverter.h:80
VideoConverter(ImgBuf::Type4CC srcFormat, ImgBuf::Type4CC dstFormat)
Definition: VideoConverter.h:91
Image buffer wrapper.
Definition: VideoConverter.h:43