Skip to content

Commit 4acad88

Browse files
committed
2008-01-07
1 parent 95a3542 commit 4acad88

10 files changed

+105
-67
lines changed

delogo.rc

+4-4
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ FONT 9, "
115115
// VERSION INFO
116116
//
117117
VS_VIRSION_INFO VERSIONINFO
118-
FILEVERSION 0,0,9,1
119-
PRODUCTVERSION 0,0,9
118+
FILEVERSION 0,1,1,0
119+
PRODUCTVERSION 0,1,1
120120
FILEFLAGSMASK 0x3FL
121121
FILEFLAGS 0x0L
122122
FILEOS VOS__WINDOWS32
@@ -129,12 +129,12 @@ VS_VIRSION_INFO VERSIONINFO
129129
{
130130
// VALUE "Comments", "���S�T���v���񋟎ҕ�W��\0"
131131
VALUE "FileDescription", "���ߐ����S �t�B���^ Plugin for AviUtl 0.98�ȍ~\0"
132-
VALUE "FileVersion", "0.0.9.1\0"
132+
VALUE "FileVersion", "0.1.1.0\0"
133133
VALUE "InternalName", "deLogo\0"
134134
VALUE "LegalCopyright", "(C) MakKi\0"
135135
VALUE "OriginalFilename", "delogo.aup\0"
136136
VALUE "ProductName", "���ߐ����S �t�B���^\0"
137-
VALUE "ProductVersion", "0.09a\0"
137+
VALUE "ProductVersion", "0.11\0"
138138
}
139139
}
140140
BLOCK "VarFileInfo"

filter.c

+40-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*********************************************************************
22
* 透過性ロゴ(BSマークとか)除去フィルタ
3-
* ver 0.10
3+
* ver 0.11
44
*
55
* 2003
66
* 02/01: 製作開始
@@ -66,6 +66,10 @@
6666
* 04/18: フィルタ名、パラメタ名を変更できるようにした。(0.09a)
6767
* 2007
6868
* 11/07: プロファイルの境界をフェードの基点にできるようにした。(0.10)
69+
* 2008
70+
* 01/07: ロゴのサイズ制限を撤廃
71+
* 開始・終了パラメタの範囲変更(負の値も許可)
72+
* ロゴファイルのデータ数を拡張(1byte -> 4byte)
6973
*
7074
*********************************************************************/
7175

@@ -141,6 +145,9 @@ FILTER_DIALOG dialog;
141145
LOGO_HEADER** logodata = NULL;
142146
unsigned int logodata_n = 0;
143147

148+
void *adjdata = NULL; // 位置調節後ロゴデータ用バッファ
149+
unsigned int adjdata_size = 0;
150+
144151
char ex_data[LOGO_MAX_NAME]; // 拡張データ領域
145152

146153
static UINT WM_SEND_LOGO_DATA =0; // ロゴ受信メッセージ
@@ -173,15 +180,21 @@ BOOL func_proc_add_logo(FILTER *fp,FILTER_PROC_INFO *fpip,LOGO_HEADER *lgh,int);
173180
// FILTER_DLL構造体
174181
//----------------------------
175182
char filter_name[] = LOGO_FILTER_NAME;
176-
char filter_info[] = LOGO_FILTER_NAME" ver 0.10 by MakKi";
183+
char filter_info[] = LOGO_FILTER_NAME" ver 0.11 by MakKi";
177184
#define track_N 10
178185
#if track_N
179186
TCHAR *track_name[] = { "位置 X", "位置 Y",
180187
"深度", "Y", "Cb", "Cr",
181188
"開始", "FadeIn", "FadeOut", "終了" }; // トラックバーの名前
182-
int track_default[] = { 0, 0, 128, 0, 0, 0, 0, 0, 0, 0 }; // トラックバーの初期値
183-
int track_s[] = { LOGO_XY_MIN, LOGO_XY_MIN, 0, -100, -100, -100, 0, 0, 0, 0 }; // トラックバーの下限値
184-
int track_e[] = { LOGO_XY_MAX, LOGO_XY_MAX, 256, 100, 100, 100, LOGO_STED_MAX, LOGO_FADE_MAX, LOGO_FADE_MAX, LOGO_STED_MAX }; // トラックバーの上限値
189+
int track_default[] = { 0, 0,
190+
128, 0, 0, 0,
191+
0, 0, 0, 0, 0 }; // トラックバーの初期値
192+
int track_s[] = { LOGO_XY_MIN, LOGO_XY_MIN,
193+
0, -100, -100, -100,
194+
LOGO_STED_MIN, 0, 0, LOGO_STED_MIN }; // トラックバーの下限値
195+
int track_e[] = { LOGO_XY_MAX, LOGO_XY_MAX,
196+
256, 100, 100, 100,
197+
LOGO_STED_MAX, LOGO_FADE_MAX, LOGO_FADE_MAX, LOGO_STED_MAX }; // トラックバーの上限値
185198
#endif
186199
#define check_N 3
187200
#if check_N
@@ -321,6 +334,10 @@ BOOL func_exit( FILTER *fp )
321334
logodata = NULL;
322335
}
323336

337+
free(adjdata);
338+
adjdata = NULL;
339+
adjdata_size = 0;
340+
324341
return TRUE;
325342
}
326343

@@ -329,24 +346,35 @@ BOOL func_exit( FILTER *fp )
329346
*===================================================================*/
330347
BOOL func_proc(FILTER *fp,FILTER_PROC_INFO *fpip)
331348
{
332-
static char adjdata[LOGO_MAXSIZE];
349+
unsigned int size;
333350
int num;
334351
int fade;
335352

336353
// ロゴ検索
337354
num = find_logo(fp->ex_data_ptr);
338355
if(num<0) return FALSE;
339356

357+
size = sizeof(LOGO_HEADER)
358+
+ (logodata[num]->h+1) * (logodata[num]->w+1) * sizeof(LOGO_PIXEL);
359+
if(size > adjdata_size){
360+
adjdata = realloc(adjdata,size);
361+
adjdata_size = size;
362+
}
363+
if(adjdata==NULL){ //確保失敗
364+
adjdata_size = 0;
365+
return FALSE;
366+
}
367+
340368
fade = calc_fade(fp,fpip);
341369

342370
if(fp->track[LOGO_X]%4 || fp->track[LOGO_Y]%4){
343371
// 位置調整が4の倍数でないとき、1/4ピクセル単位調整
344372
if(!create_adj_exdata(fp,(void *)adjdata,logodata[num]))
345373
return FALSE;
346374
}
347-
else {
375+
else{
348376
// 4の倍数のときはx,yのみ書き換え
349-
memcpy(adjdata,logodata[num],LOGO_DATASIZE(logodata[num]));
377+
memcpy(adjdata,logodata[num],size);
350378
((LOGO_HEADER *)adjdata)->x += fp->track[LOGO_X] / 4;
351379
((LOGO_HEADER *)adjdata)->y += fp->track[LOGO_Y] / 4;
352380
}
@@ -708,7 +736,7 @@ static void on_wm_filter_exit(FILTER* fp)
708736
n++;
709737
}
710738

711-
lfh.logonum = n;
739+
lfh.logonum.l = SWAP_ENDIAN(n);
712740
SetFilePointer(hFile,0, 0, FILE_BEGIN); // 先頭へ
713741
dw = 0;
714742
WriteFile(hFile,&lfh,sizeof(lfh),&dw,NULL);
@@ -1044,7 +1072,7 @@ static void read_logo_pack(char *fname,FILTER *fp)
10441072
void* data;
10451073
int i;
10461074
int same;
1047-
// char message[255];
1075+
int logonum;
10481076

10491077
// ファイルオープン
10501078
hFile = CreateFile(fname,GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
@@ -1064,8 +1092,9 @@ static void read_logo_pack(char *fname,FILTER *fp)
10641092

10651093
logodata_n = 0; // 書き込みデータカウンタ
10661094
logodata = NULL;
1095+
logonum = SWAP_ENDIAN(lfh.logonum.l);
10671096

1068-
for(i=0;i<lfh.logonum;i++){
1097+
for(i=0;i<logonum;i++){
10691098

10701099
// LOGO_HEADER 読み込み
10711100
readed = 0;

logo.h

+16-19
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
/*====================================================================
22
* ロゴパターン logo.h
33
*
4-
*
5-
*
64
* [ロゴデータファイル構造]
75
*
8-
* "logo file x.xx\n" // ファイルヘッダ文字列:バージョン情報とか(31byte)
6+
* "<logo file x.xx>" // ファイルヘッダ文字列:バージョン情報(28byte)
97
* +----
10-
* | ファイルに含まれるロゴデータの数(1byte)
8+
* | ファイルに含まれるロゴデータの数(4byte, BigEndian)
119
* +----
1210
* | LOGO_HEADER // データヘッダ
1311
* +----
@@ -25,25 +23,24 @@
2523
#ifndef ___LOGO_H
2624
#define ___LOGO_H
2725

28-
/* ロゴファイルヘッダ
29-
* 31BYTEの文字列
30-
* データ数 1BYTE
31-
*/
32-
#define LOGO_FILE_HEADER_STR "<logo data file ver0.1>\0\0\0\0\0\0\0\0\0\0\0"
33-
#define LOGO_FILE_HEADER_STR_SIZE 31
26+
/* ロゴヘッダ文字列 */
27+
#define LOGO_FILE_HEADER_STR "<logo data file ver0.1>\0\0\0\0\0"
28+
#define LOGO_FILE_HEADER_STR_SIZE 28
3429

30+
/*--------------------------------------------------------------------
31+
* LOGO_FILE_HEADER 構造体
32+
* ファイルヘッダ.
33+
* バージョン情報と含まれるデータ数
34+
*-------------------------------------------------------------------*/
3535
typedef struct {
36-
char str[LOGO_FILE_HEADER_STR_SIZE];
37-
unsigned char logonum;
36+
char str[LOGO_FILE_HEADER_STR_SIZE];
37+
union{
38+
unsigned long l;
39+
unsigned char c[4];
40+
} logonum;
3841
} LOGO_FILE_HEADER;
3942

40-
41-
/* ロゴデータ最大サイズ:
42-
* ロゴデータをプロファイルに保存しないようにしたため、
43-
* サイズ制限は実質なくなった
44-
*/
45-
#define LOGO_MAXPIXEL (21840)
46-
#define LOGO_MAXSIZE (0x40000)
43+
#define SWAP_ENDIAN(x) (((x&0xff)<<24)|((x&0xff00)<<8)|((x&0xff0000)>>8)|((x&0xff000000)>>24))
4744

4845
/* 不透明度最大値 */
4946
#define LOGO_MAX_DP 1000

logodef.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#define LOGO_FADE_MAX 256
88
#define LOGO_XY_MAX 500
99
#define LOGO_XY_MIN -500
10-
#define LOGO_STED_MAX 4096
10+
#define LOGO_STED_MAX 256
11+
#define LOGO_STED_MIN -256
1112

1213
#endif

logoscan/filter.cpp

+10-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*********************************************************************
2-
* ロゴ解析プラグイン ver 0.06b
2+
* ロゴ解析プラグイン ver 0.07
33
*
44
* 2003
55
* 04/06: とりあえず完成。
@@ -44,10 +44,15 @@
4444
* ログファイルのデフォルト名をソースファイル名からつくるようにした。(0.06a)
4545
* 10/23: 有効フレームリスト保存ダイアログでキャンセルすると落ちるバグ修正。
4646
* 妙な記述があったのを修正。(何で動いてたんだろ…
47+
* 2008
48+
* 01/07: ロゴサイズ制限撤廃
49+
* ロゴファイルのデータ数拡張に伴う修正
4750
*
4851
*********************************************************************/
4952
/* TODO:
5053
* ・拡大ツール機能(気まぐれバロンさんのアイディア)
54+
* ・セーブ中は何もしないようにする
55+
* ・結果ダイアログで開始・終了・フェードを書き込めるようにする
5156
*
5257
* MEMO:
5358
* ・背景値計算改善策①:メディアン化してから平均とか
@@ -99,7 +104,7 @@ void SetScanPixel(FILTER*,ScanPixel*&,int,int,int,int,void*,char*);
99104
// FILTER_DLL構造体
100105
//----------------------------
101106
char filter_name[] = "ロゴ解析";
102-
char filter_info[] = "ロゴ解析プラグイン ver 0.06b by MakKi";
107+
char filter_info[] = "ロゴ解析プラグイン ver 0.07 by MakKi";
103108

104109
#define track_N 5
105110
#if track_N
@@ -436,9 +441,9 @@ void ScanLogoData(FILTER* fp,void* editp)
436441
fp->exfunc->get_select_frame(editp,&start,&end);
437442
if(end-start<1) throw "画像の枚数が足りません";
438443

439-
if((fp->track[tLOGOW]+1)*(fp->track[tLOGOH]+1) > LOGO_MAXPIXEL)
440-
// h*wがロゴデータ上限より大きい時
441-
throw "ロゴ領域が広すぎます";
444+
// if((fp->track[tLOGOW]+1)*(fp->track[tLOGOH]+1) > LOGO_MAXPIXEL)
445+
// // h*wがロゴデータ上限より大きい時
446+
// throw "ロゴ領域が広すぎます";
442447

443448
// 画像サイズ
444449
if(!fp->exfunc->get_frame_size(editp,&w,&h))

logoscan/logoscan.rc

+4-5
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ FONT 9, "
7777
// VERSION INFO
7878
//
7979
VS_VIRSION_INFO VERSIONINFO
80-
FILEVERSION 0,0,6,2
81-
PRODUCTVERSION 0,0,6
80+
FILEVERSION 0,0,7,0
81+
PRODUCTVERSION 0,0,7
8282
FILEFLAGSMASK 0x3FL
8383
FILEFLAGS 0x0L
8484
FILEOS VOS__WINDOWS32
@@ -89,14 +89,13 @@ VS_VIRSION_INFO VERSIONINFO
8989
{
9090
BLOCK "041103A4"
9191
{
92-
// VALUE "Comments", "beta version\0"
9392
VALUE "FileDescription", "���S��� Plugin for AviUtl 0.98d\0"
94-
VALUE "FileVersion", "0.06b\0"
93+
VALUE "FileVersion", "0.07\0"
9594
VALUE "InternalName", "LogoScan\0"
9695
VALUE "LegalCopyright", "(C) MakKi\0"
9796
VALUE "OriginalFilename", "logoscan.aup\0"
9897
VALUE "ProductName", "���S��� �v���O�C��\0"
99-
VALUE "ProductVersion", "0.06b\0"
98+
VALUE "ProductVersion", "0.07\0"
10099
}
101100
}
102101
BLOCK "VarFileInfo"

logoscan/readme.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-----------------------------------------------------------------------
2-
���S��� �v���O�C�� ver 0.06b by MakKi
2+
���S��� �v���O�C�� ver 0.07 by MakKi
33
-----------------------------------------------------------------------
44

55
�y�@�\�z
@@ -52,7 +52,8 @@
5252
http://mksoft.hp.infoseek.co.jp/
5353

5454
�y�X�V�����z
55-
55+
2008/01/07 ver 0.07 �E���S�T�C�Y�̐�����P�p
56+
�E���S�t�@�C���̍ő�f�[�^���g���ɑΉ�
5657
2003/10/26 ver 0.06b �E�t���[�����X�g�ۑ��_�C�A���O�ŃL�����Z������Ɨ�����o�O�C���B
5758
2003/10/21 ver 0.06a �E���O��RGB->YCbCr����悤�ɂ����B(SSE2�ł̕s��΍�)
5859
�E�L���t���[�����X�g��ۑ��̃`�F�b�N�������Ă��Ȃ��������Ȃ��o�O�C���B

logoscan/resultdlg.c

+11-16
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,8 @@ static void ExportLogoData(char *fname,void *data,HWND hdlg)
257257
HANDLE hFile;
258258
DWORD dw;
259259
DWORD size;
260-
char c =1;
261260
int s =0;
261+
LOGO_FILE_HEADER lfh;
262262

263263
// ファイルを開く
264264
hFile = CreateFile(fname,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
@@ -267,31 +267,26 @@ static void ExportLogoData(char *fname,void *data,HWND hdlg)
267267
}
268268
SetFilePointer(hFile,0, 0, FILE_BEGIN); // 先頭へ
269269

270+
ZeroMemory(&lfh,sizeof(LOGO_FILE_HEADER));
271+
strcpy(lfh.str,LOGO_FILE_HEADER_STR);
272+
lfh.logonum.l = SWAP_ENDIAN(1);
273+
270274
// ヘッダ書き込み
271275
dw = 0;
272-
WriteFile(hFile,LOGO_FILE_HEADER,31,&dw,NULL);
273-
if(dw!=31){ // 書き込み失敗
276+
WriteFile(hFile,&lfh,sizeof(LOGO_FILE_HEADER),&dw,NULL);
277+
if(dw!=sizeof(LOGO_FILE_HEADER)){ // 書き込み失敗
274278
MessageBox(hdlg,"ロゴデータ保存に失敗しました(1)",filter_name,MB_OK|MB_ICONERROR);
275279
s=1;
276280
}
277281
else{ // 成功
278-
// データ数書き込み(必ず1)
282+
// データ書き込み
283+
size = LOGO_DATASIZE(data); // データサイズ取得
279284
dw = 0;
280-
WriteFile(hFile,&c,1,&dw,NULL);
281-
if(dw!=1){ // 書き込み失敗
285+
WriteFile(hFile,data,size,&dw,NULL);
286+
if(dw!=size){
282287
MessageBox(hdlg,"ロゴデータ保存に失敗しました(2)",filter_name,MB_OK|MB_ICONERROR);
283288
s=1;
284289
}
285-
else{ // 成功
286-
// データ書き込み
287-
size = LOGO_DATASIZE(data); // データサイズ取得
288-
dw = 0;
289-
WriteFile(hFile,data,size,&dw,NULL);
290-
if(dw!=size){
291-
MessageBox(hdlg,"ロゴデータ保存に失敗しました(3)",filter_name,MB_OK|MB_ICONERROR);
292-
s=1;
293-
}
294-
}
295290
}
296291

297292
CloseHandle(hFile);

0 commit comments

Comments
 (0)