Gnash
0.8.11dev
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
libmedia
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 <boost/cstdint.hpp>
25
#include <boost/array.hpp>
26
#include <memory>
27
28
namespace
gnash {
29
namespace
media {
30
31
32
34
//
42
43
struct
ImgBuf
:
public
boost::noncopyable
44
{
45
typedef
boost::uint32_t
Type4CC
;
46
typedef
void (*
FreeFunc
)(
void
*);
47
48
ImgBuf
(
Type4CC
t
, boost::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),
55
dealloc
(
array_delete
)
56
{}
57
58
~ImgBuf
()
59
{
60
dealloc
(
data
);
61
}
62
63
static
void
array_delete
(
void
* voidptr)
64
{
65
boost::uint8_t* ptr =
static_cast<
boost::uint8_t*
>
(voidptr);
66
delete
[] ptr;
67
}
68
69
static
void
noop
(
void
*
/*voidptr*/
)
70
{
71
}
72
73
Type4CC
type
;
74
boost::uint8_t*
data
;
75
76
size_t
size
;
// in bytes
77
size_t
width
;
// in pixels
78
size_t
height
;
// in pixels
79
80
boost::array<size_t, 4>
stride
;
81
82
FreeFunc
dealloc
;
83
};
84
85
87
88
class
VideoConverter
:
public
boost::noncopyable {
89
90
public
:
91
VideoConverter
(
ImgBuf::Type4CC
srcFormat,
ImgBuf::Type4CC
dstFormat)
92
:
_src_fmt
(srcFormat),
93
_dst_fmt
(dstFormat)
94
{
95
}
96
97
virtual
~VideoConverter
()
98
{
99
}
100
102
//
105
virtual
std::auto_ptr<ImgBuf>
convert
(
const
ImgBuf
& src) = 0;
106
107
protected
:
108
ImgBuf::Type4CC
_src_fmt
;
109
ImgBuf::Type4CC
_dst_fmt
;
110
};
111
112
113
}
// gnash.media namespace
114
}
// gnash namespace
115
116
#endif // __VIDEOCONVERTER_H__
Generated on Tue Jan 28 2014 17:18:08 for Gnash by
1.8.4