4 |
#include <windows.h> |
#include <windows.h> |
5 |
#include <vfw.h> |
#include <vfw.h> |
6 |
#include "config.h" |
#include "config.h" |
7 |
#include "xvid.h" |
#include "..\..\xvidcore\src\xvid.h" |
8 |
|
|
9 |
#define DEBUG(X) |
#define DEBUG(X) |
10 |
// OutputDebugString(X) |
// OutputDebugString(X) |
11 |
#define DEBUG1(X,A) |
#define DEBUG1(X,A) { char tmp[120]; wsprintf(tmp, "%s %i", (X), (A)); OutputDebugString(tmp); } |
|
// { char tmp[100]; wsprintf(tmp, "%s %i", (X), (A)); OutputDebugString(tmp); } |
|
12 |
#define DEBUG2(X,A,B) |
#define DEBUG2(X,A,B) |
13 |
// { char tmp[100]; wsprintf(tmp, "%s %i %i", (X), (A), (B)); OutputDebugString(tmp); } |
// { char tmp[120]; wsprintf(tmp, "%s %i %i", (X), (A), (B)); OutputDebugString(tmp); } |
14 |
#define DEBUG3(X,A,B,C) |
#define DEBUG3(X,A,B,C) |
15 |
// { char tmp[100]; wsprintf(tmp, "%s %i %i %i", (X), (A), (B), (C)); OutputDebugString(tmp); } |
// { char tmp[120]; wsprintf(tmp, "%s %i %i %i", (X), (A), (B), (C)); OutputDebugString(tmp); } |
16 |
#define DEBUG4(X,A,B,C,D) |
#define DEBUG4(X,A,B,C,D) |
17 |
// { char tmp[100]; wsprintf(tmp, "%s %i %i %i %i", (X), (A), (B), (C), (D)); OutputDebugString(tmp); } |
// { char tmp[120]; wsprintf(tmp, "%s %i %i %i %i", (X), (A), (B), (C), (D)); OutputDebugString(tmp); } |
18 |
#define DEBUG5(X,A,B,C,D,E) |
#define DEBUG5(X,A,B,C,D,E) |
19 |
// { char tmp[100]; wsprintf(tmp, "%s %i %i %i %i %i", (X), (A), (B), (C), (D), (E)); OutputDebugString(tmp); } |
// { char tmp[120]; wsprintf(tmp, "%s %i %i %i %i %i", (X), (A), (B), (C), (D), (E)); OutputDebugString(tmp); } |
20 |
#define DEBUGFOURCC(X,Y) |
#define DEBUGFOURCC(X,Y) |
21 |
// { char tmp[100]; wsprintf(tmp, "%s %c %c %c %c", (X), (Y)&0xff, ((Y)>>8)&0xff, ((Y)>>16)&0xff, ((Y)>>24)&0xff); OutputDebugString(tmp); } |
// { char tmp[120]; wsprintf(tmp, "%s %c %c %c %c", (X), (Y)&0xff, ((Y)>>8)&0xff, ((Y)>>16)&0xff, ((Y)>>24)&0xff); OutputDebugString(tmp); } |
22 |
|
#define DEBUGERR(X) OutputDebugString(X) |
23 |
#define DEBUG2P(X) OutputDebugString(X) |
#define DEBUG2P(X) OutputDebugString(X) |
24 |
#define DEBUG1ST(A,B,C,D,E,F) { char tmp[100]; wsprintf(tmp, "1st-pass: size:%d total-kbytes:%d %s quant:%d kblocks:%d mblocks:%d", (A), (B), (C) ? "intra" : "inter", (D), (E), (F)); OutputDebugString(tmp); } |
#define DEBUG1ST(A,B,C,D,E,F,G) { char tmp[120]; wsprintf(tmp, "1st-pass: size:%d total-kbytes:%d %s quant:%d %s kblocks:%d mblocks:%d", (A), (B), (C) ? "intra" : "inter", (D), (E), (F), (G)); OutputDebugString(tmp); } |
25 |
#define DEBUG2ND(A,B,C,D,E,F,G) { char tmp[100]; wsprintf(tmp, "2nd-pass: quant:%d %s stats1:%d scaled:%d actual:%d overflow:%d %s", (A), (B) ? "intra" : "inter", (C), (D), (E), (F), (G) ? "credits" : "movie"); OutputDebugString(tmp); } |
#define DEBUG2ND(A,B,C,D,E,F,G,H) { char tmp[120]; wsprintf(tmp, "2nd-pass: quant:%d %s %s stats1:%d scaled:%d actual:%d overflow:%d %s", (A), (B), (C) ? "intra" : "inter", (D), (E), (F), (G), (H) ? "credits" : "movie"); OutputDebugString(tmp); } |
26 |
|
|
27 |
|
|
28 |
#define FOURCC_XVID mmioFOURCC('X','V','I','D') |
#define FOURCC_XVID mmioFOURCC('X','V','I','D') |
29 |
#define FOURCC_DIVX mmioFOURCC('D','I','V','X') |
#define FOURCC_DIVX mmioFOURCC('D','I','V','X') |
30 |
|
#define FOURCC_DX50 mmioFOURCC('D','X','5','0') |
31 |
//#define FOURCC_DIV3 mmioFOURCC('D','I','V','3') |
//#define FOURCC_DIV3 mmioFOURCC('D','I','V','3') |
32 |
//#define FOURCC_DIV4 mmioFOURCC('D','I','V','4') |
//#define FOURCC_DIV4 mmioFOURCC('D','I','V','4') |
33 |
|
|
91 |
|
|
92 |
typedef struct |
typedef struct |
93 |
{ |
{ |
94 |
HANDLE * stats1; |
HANDLE hints; |
95 |
HANDLE * stats2; |
HANDLE stats1; |
96 |
|
HANDLE stats2; |
97 |
|
|
98 |
|
void * hintstream; |
99 |
|
|
100 |
int bytes1; |
int bytes1; |
101 |
int bytes2; |
int bytes2; |
102 |
int desired_bytes2; |
int desired_bytes2; |
103 |
|
|
104 |
float movie_curve; |
int keyframe_locations[20480]; |
105 |
float credits_start_curve; |
int max_framesize; |
106 |
float credits_end_curve; |
double movie_curve; |
107 |
|
double credits_start_curve; |
108 |
|
double credits_end_curve; |
109 |
|
|
110 |
double average_frame; |
double average_frame; |
111 |
double curve_comp_scale; |
double curve_comp_scale; |
112 |
int overflow; |
double curve_bias_bonus; |
113 |
|
double alt_curve_low; |
114 |
|
double alt_curve_high; |
115 |
|
double alt_curve_low_diff; |
116 |
|
double alt_curve_high_diff; |
117 |
|
double alt_curve_mid_qual; |
118 |
|
double alt_curve_qual_dev; |
119 |
|
int overflow, KF_idx, KFoverflow, KFoverflow_partial; |
120 |
|
int quant_count[32]; |
121 |
|
|
122 |
NNSTATS nns1; |
NNSTATS nns1; |
123 |
NNSTATS nns2; |
NNSTATS nns2; |
145 |
} CODEC; |
} CODEC; |
146 |
|
|
147 |
|
|
148 |
|
int get_colorspace(BITMAPINFOHEADER *); |
149 |
|
|
150 |
LRESULT compress_query(CODEC *, BITMAPINFO *, BITMAPINFO *); |
LRESULT compress_query(CODEC *, BITMAPINFO *, BITMAPINFO *); |
151 |
LRESULT compress_get_format(CODEC *, BITMAPINFO *, BITMAPINFO *); |
LRESULT compress_get_format(CODEC *, BITMAPINFO *, BITMAPINFO *); |
152 |
LRESULT compress_get_size(CODEC *, BITMAPINFO *, BITMAPINFO *); |
LRESULT compress_get_size(CODEC *, BITMAPINFO *, BITMAPINFO *); |
161 |
LRESULT decompress_end(CODEC *); |
LRESULT decompress_end(CODEC *); |
162 |
LRESULT decompress(CODEC *, ICDECOMPRESS *); |
LRESULT decompress(CODEC *, ICDECOMPRESS *); |
163 |
|
|
|
int codec_2pass_init(CODEC *); |
|
164 |
int codec_get_quant(CODEC *, XVID_ENC_FRAME *); |
int codec_get_quant(CODEC *, XVID_ENC_FRAME *); |
|
int codec_2pass_get_quant(CODEC *, XVID_ENC_FRAME *); |
|
|
int codec_2pass_update(CODEC *, XVID_ENC_FRAME *, XVID_ENC_STATS *); |
|
165 |
int codec_is_in_credits(CONFIG *, int); |
int codec_is_in_credits(CONFIG *, int); |
166 |
int codec_get_vbr_quant(CONFIG *, int); |
int codec_get_vbr_quant(CONFIG *, int); |
167 |
|
|
168 |
|
// added by Koepi for greyscale credits |
169 |
|
int check_greyscale_mode(CONFIG *, XVID_ENC_FRAME* , int); |
170 |
|
// end of koepi's additions |
171 |
|
|
172 |
#endif /* _CODEC_H_ */ |
#endif /* _CODEC_H_ */ |