Welcome to mirror list, hosted at ThFree Co, Russian Federation.

uberblit_ycbcr_generic.h « h « Kasumi « VirtualDub « thirdparty « src - github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3b8af02e8ef199cbf234af38e10a03dc4168a23e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#ifndef f_VD2_KASUMI_UBERBLIT_YCBCR_GENERIC_H
#define f_VD2_KASUMI_UBERBLIT_YCBCR_GENERIC_H

#include "uberblit_ycbcr.h"

struct VDPixmapGenYCbCrBasis {
	float mKr;
	float mKb;
	float mToRGB[2][3];
};

extern const VDPixmapGenYCbCrBasis g_VDPixmapGenYCbCrBasis_601;
extern const VDPixmapGenYCbCrBasis g_VDPixmapGenYCbCrBasis_709;

////////////////////////////////////////////////////////////////////////////

class VDPixmapGenYCbCrToRGB32Generic : public VDPixmapGenYCbCrToRGB32Base {
public:
	VDPixmapGenYCbCrToRGB32Generic(const VDPixmapGenYCbCrBasis& basis, bool studioRGB);

	uint32 GetType(uint32 output) const;

protected:
	virtual void Compute(void *dst0, sint32 y);

	sint32 mCoY;
	sint32 mCoRCr;
	sint32 mCoGCr;
	sint32 mCoGCb;
	sint32 mCoBCb;
	sint32 mBiasR;
	sint32 mBiasG;
	sint32 mBiasB;
};

////////////////////////////////////////////////////////////////////////////

class VDPixmapGenYCbCrToRGB32FGeneric : public VDPixmapGenYCbCrToRGB32FBase {
public:
	VDPixmapGenYCbCrToRGB32FGeneric(const VDPixmapGenYCbCrBasis& basis);

	uint32 GetType(uint32 output) const;

protected:
	void Compute(void *dst0, sint32 y);

	float mCoRCr;
	float mCoGCr;
	float mCoGCb;
	float mCoBCb;
};

////////////////////////////////////////////////////////////////////////////

class VDPixmapGenRGB32ToYCbCrGeneric : public VDPixmapGenRGB32ToYCbCrBase {
public:
	VDPixmapGenRGB32ToYCbCrGeneric(const VDPixmapGenYCbCrBasis& basis, bool studioRGB, uint32 colorSpace);

	uint32 GetType(uint32 output) const;

protected:
	void Compute(void *dst0, sint32 y);

	sint32 mCoYR;
	sint32 mCoYG;
	sint32 mCoYB;
	sint32 mCoCbR;
	sint32 mCoCbG;
	sint32 mCoCbB;
	sint32 mCoCrR;
	sint32 mCoCrG;
	sint32 mCoCrB;
	sint32 mCoYA;
	sint32 mCoCbA;
	sint32 mCoCrA;

	const uint32 mColorSpace;
};

////////////////////////////////////////////////////////////////////////////

class VDPixmapGenRGB32FToYCbCrGeneric : public VDPixmapGenRGB32FToYCbCrBase {
public:
	VDPixmapGenRGB32FToYCbCrGeneric(const VDPixmapGenYCbCrBasis& basis, uint32 colorSpace);

	uint32 GetType(uint32 output) const;

protected:
	void Compute(void *dst0, sint32 y);

	float mCoYR;
	float mCoYG;
	float mCoYB;
	float mCoCb;
	float mCoCr;

	const uint32 mColorSpace;
};

////////////////////////////////////////////////////////////////////////////

class VDPixmapGenYCbCrToYCbCrGeneric : public VDPixmapGenYCbCrToRGBBase {
public:
	VDPixmapGenYCbCrToYCbCrGeneric(const VDPixmapGenYCbCrBasis& dstBasis, bool dstLimitedRange, const VDPixmapGenYCbCrBasis& srcBasis, bool srcLimitedRange, uint32 colorSpace);
	 
	void Start();
	const void *GetRow(sint32 y, uint32 index);
	uint32 GetType(uint32 output) const;

protected:
	void Compute(void *dst0, sint32 ypos);

	sint32 mCoYY;
	sint32 mCoYCb;
	sint32 mCoYCr;
	sint32 mCoYA;
	sint32 mCoCbCb;
	sint32 mCoCbCr;
	sint32 mCoCbA;
	sint32 mCoCrCb;
	sint32 mCoCrCr;
	sint32 mCoCrA;

	const uint32 mColorSpace;
};

////////////////////////////////////////////////////////////////////////////

class VDPixmapGenYCbCrToYCbCrGeneric_32F : public VDPixmapGenYCbCrToRGBBase {
public:
	VDPixmapGenYCbCrToYCbCrGeneric_32F(const VDPixmapGenYCbCrBasis& dstBasis, bool dstLimitedRange, const VDPixmapGenYCbCrBasis& srcBasis, bool srcLimitedRange, uint32 colorSpace);

	void Start();
	const void *GetRow(sint32 y, uint32 index);
	uint32 GetType(uint32 output) const;

protected:
	void Compute(void *dst0, sint32 ypos);

	float mCoYY;
	float mCoYCb;
	float mCoYCr;
	float mCoYA;
	float mCoCbCb;
	float mCoCbCr;
	float mCoCbA;
	float mCoCrCb;
	float mCoCrCr;	
	float mCoCrA;	

	const uint32 mColorSpace;
};

#endif