filter.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:21k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #pragma once
  2. typedef struct {short y, cb, cr;} PIXEL_YC;
  3. typedef struct {unsigned char b, g, r;} PIXEL;
  4. // 僼傿儖僞PROC梡峔憿懱
  5. typedef struct {
  6. int flag; // 僼傿儖僞偺僼儔僌
  7. PIXEL_YC *ycp_edit; // 夋憸僨乕僞傊偺億僀儞僞
  8. PIXEL_YC *ycp_temp; // 僥儞億儔儕椞堟傊偺億僀儞僞
  9. int w,h; // 尰嵼偺夋憸偺僒僀僘
  10. int max_w,max_h; // 夋憸椞堟偺僒僀僘
  11. int frame; // 尰嵼偺僼儗乕儉斣崋(斣崋偼0偐傜)
  12. int frame_n; // 憤僼儗乕儉悢
  13. int org_w,org_h; // 尦偺夋憸偺僒僀僘
  14. short *audiop; // 僆乕僨傿僆僨乕僞傊偺億僀儞僞 ( 僆乕僨傿僆僼傿儖僞偺帪偺傒 )
  15. // 僆乕僨傿僆宍幃偼PCM16bit偱偡 ( 1僒儞僾儖偼 mono = 2byte , stereo = 4byte )
  16. int audio_n; // 僆乕僨傿僆僒儞僾儖偺憤悢
  17. int audio_ch; // 僆乕僨傿僆僠儍儞僱儖悢
  18. PIXEL *pixelp; // DIB宍幃偺僨乕僞傊偺億僀儞僞( 昞帵僼傿儖僞偺帪偺傒 )
  19. void *editp; // 僄僨傿僢僩僴儞僪儖
  20. int reserve[10]; // 奼挘梡偵梊栺偝傟偰傑偡
  21. } FILTER_PROC_INFO;
  22. #define FILTER_PROC_INFO_FLAG_FILL_OVERAREA 1
  23. #define FILTER_PROC_INFO_FLAG_MASK 0x0fffffff
  24. // 僼儗乕儉僗僥乕僞僗峔憿懱
  25. typedef struct {
  26. int video; // 幚嵺偺塮憸僨乕僞斣崋
  27. int audio; // 幚嵺偺壒惡僨乕僞斣崋
  28. int inter; // 僼儗乕儉偺僀儞僞乕儗乕僗
  29. // FRAME_STATUS_INTER_NORMAL : 昗弨
  30. // FRAME_STATUS_INTER_REVERSE : 斀揮
  31. // FRAME_STATUS_INTER_ODD : 婏悢
  32. // FRAME_STATUS_INTER_EVEN : 嬼悢
  33. // FRAME_STATUS_INTER_MIX : 擇廳壔
  34. // FRAME_STATUS_INTER_AUTO : 帺摦
  35. int index24fps; // 24fp偺廃婜
  36. int config; // 僼儗乕儉偺愝掕娐嫬偺斣崋
  37. int vcm; // 僼儗乕儉偺埑弅愝掕偺斣崋
  38. int edit_flag; // 曇廤僼儔僌
  39. // EDIT_FRAME_EDIT_FLAG_KEYFRAME : 僉乕僼儗乕儉
  40. // EDIT_FRAME_EDIT_FLAG_MARKFRAME : 儅乕僋僼儗乕儉
  41. // EDIT_FRAME_EDIT_FLAG_DELFRAME : 桪愭娫堷偒僼儗乕儉
  42. // EDIT_FRAME_EDIT_FLAG_NULLFRAME : 僐僺乕僼儗乕儉
  43. int reserve[9]; // 奼挘梡偵梊栺偝傟偰傑偡
  44. } FRAME_STATUS;
  45. #define FRAME_STATUS_INTER_NORMAL 0
  46. #define FRAME_STATUS_INTER_REVERSE 1
  47. #define FRAME_STATUS_INTER_ODD 2
  48. #define FRAME_STATUS_INTER_EVEN 3
  49. #define FRAME_STATUS_INTER_MIX 4
  50. #define FRAME_STATUS_INTER_AUTO 5
  51. #define EDIT_FRAME_EDIT_FLAG_KEYFRAME 1
  52. #define EDIT_FRAME_EDIT_FLAG_MARKFRAME 2
  53. #define EDIT_FRAME_EDIT_FLAG_DELFRAME 4
  54. #define EDIT_FRAME_EDIT_FLAG_NULLFRAME 8
  55. // 僼傽僀儖僀儞僼僅儊乕僔儑儞峔憿懱
  56. typedef struct {
  57. int flag; // 僼傽僀儖偺僼儔僌
  58. // FILE_INFO_FLAG_VIDEO : 塮憸偑懚嵼偡傞
  59. // FILE_INFO_FLAG_AUDIO : 壒惡偑懚嵼偡傞
  60. LPSTR name; // 曇廤僼傽僀儖柤
  61. int w,h; // 尦偺僒僀僘
  62. int video_rate,video_scale; // 僼儗乕儉儗乕僩
  63. int audio_rate; // 壒惡僒儞僾儕儞僌儗乕僩
  64. int audio_ch; // 壒惡僠儍儞僱儖悢
  65. int reserve[8]; // 奼挘梡偵梊栺偝傟偰傑偡
  66. } FILE_INFO;
  67. #define FILE_INFO_FLAG_VIDEO 1
  68. #define FILE_INFO_FLAG_AUDIO 2
  69. // 僔僗僥儉僀儞僼僅儊乕僔儑儞峔憿懱
  70. typedef struct {
  71. int flag; // 僔僗僥儉僼儔僌
  72. // SYS_INFO_FLAG_EDIT : 曇廤拞
  73. // SYS_INFO_FLAG_VFAPI : VFAPI摦嶌帪
  74. LPSTR info; // 僶乕僕儑儞忣曬
  75. int filter_n; // 搊榐偝傟偰傞僼傿儖僞偺悢
  76. int min_w,min_h; // 曇廤弌棃傞嵟彫夋憸僒僀僘
  77. int max_w,max_h; // 曇廤弌棃傞嵟戝夋憸僒僀僘
  78. int max_frame; // 曇廤弌棃傞嵟戝僼儗乕儉悢
  79. LPSTR edit_name; // 曇廤僼傽僀儖柤 (僼傽僀儖柤偑寛傑偭偰偄側偄帪偼壗傕擖偭偰偄傑偣傫)
  80. LPSTR project_name; // 僾儘僕僃僋僩僼傽僀儖柤 (僼傽僀儖柤偑寛傑偭偰偄側偄帪偼壗傕擖偭偰偄傑偣傫)
  81. LPSTR output_name; // 弌椡僼傽僀儖柤 (僼傽僀儖柤偑寛傑偭偰偄側偄帪偼壗傕擖偭偰偄傑偣傫)
  82. int reserve[8]; // 奼挘梡偵梊栺偝傟偰傑偡
  83. } SYS_INFO;
  84. #define SYS_INFO_FLAG_EDIT 1
  85. #define SYS_INFO_FLAG_VFAPI 2
  86. // 奜晹娭悢峔憿懱
  87. typedef struct {
  88. void *(*get_ycp_ofs)( void *editp,int n,int ofs );
  89. // 巜掕偟偨僼儗乕儉偺AVI僼傽僀儖忋偱偺僆僼僙僢僩暘堏摦偟偨
  90. // 僼儗乕儉偺夋憸僨乕僞偺億僀儞僞傪庢摼偟傑偡
  91. // 僨乕僞偼僼傿儖僞慜偺傕偺偱偡
  92. // editp  : 僄僨傿僢僩僴儞僪儖
  93. // n   : 僼儗乕儉斣崋
  94. // ofs   : 僼儗乕儉偐傜偺僆僼僙僢僩
  95. //  栠傝抣 : 夋憸僨乕僞傊偺億僀儞僞 (NULL側傜幐攕)
  96. void *(*get_ycp)( void *editp,int n );
  97. // 巜掕偟偨僼儗乕儉偺夋憸僨乕僞偺億僀儞僞傪庢摼偟傑偡
  98. // 僨乕僞偼僼傿儖僞慜偺傕偺偱偡
  99. // editp  : 僄僨傿僢僩僴儞僪儖
  100. // n   : 僼儗乕儉斣崋
  101. //  栠傝抣 : 夋憸僨乕僞傊偺億僀儞僞 (NULL側傜幐攕)
  102. void *(*get_pixelp)( void *editp,int n );
  103. // 巜掕偟偨僼儗乕儉偺DIB宍幃(RGB24bit)偺夋憸僨乕僞偺億僀儞僞傪庢摼偟傑偡
  104. // 僨乕僞偼僼傿儖僞慜偺傕偺偱偡
  105. // editp  : 僄僨傿僢僩僴儞僪儖
  106. // n : 僼儗乕儉斣崋
  107. //  栠傝抣 : DIB宍幃僨乕僞傊偺億僀儞僞 (NULL側傜幐攕)
  108. int (*get_audio)( void *editp,int n,void *buf );
  109. // 巜掕偟偨僼儗乕儉偺僆乕僨傿僆僨乕僞傪撉傒崬傒傑偡
  110. // 僨乕僞偼僼傿儖僞慜偺傕偺偱偡
  111. // editp*  : 僄僨傿僢僩僴儞僪儖
  112. // n : 僼儗乕儉斣崋
  113. // buf  : 奿擺偡傞僶僢僼傽
  114. //  栠傝抣 : 撉傒崬傫偩僒儞僾儖悢
  115. BOOL (*is_editing)( void *editp );
  116. // 尰嵼曇廤拞偐挷傋傑偡
  117. // editp  : 僄僨傿僢僩僴儞僪儖
  118. //  栠傝抣 : TRUE側傜曇廤拞
  119. BOOL (*is_saving)( void *editp );
  120. // 尰嵼曐懚拞偐挷傋傑偡
  121. // editp  : 僄僨傿僢僩僴儞僪儖
  122. //  栠傝抣 : TRUE側傜曐懚拞
  123. int (*get_frame)( void *editp );
  124. // 尰嵼偺昞帵僼儗乕儉傪庢摼偟傑偡
  125. // editp  : 僄僨傿僢僩僴儞僪儖
  126. //  栠傝抣 : 尰嵼偺僼儗乕儉斣崋
  127. int (*get_frame_n)( void *editp );
  128. // 憤僼儗乕儉悢傪庢摼偟傑偡
  129. // editp  : 僄僨傿僢僩僴儞僪儖
  130. //  栠傝抣 : 尰嵼偺憤僼儗乕儉悢
  131. BOOL (*get_frame_size)( void *editp,int *w,int *h );
  132. // 僼傿儖僞慜偺僼儗乕儉偺僒僀僘傪庢摼偟傑偡
  133. // editp  : 僄僨傿僢僩僴儞僪儖
  134. // w,h  : 夋憸僒僀僘偺奿擺億僀儞僞
  135. //  栠傝抣 : TRUE側傜惉岟
  136. int (*set_frame)( void *editp,int n );
  137. // 尰嵼偺昞帵僼儗乕儉傪曄峏偟傑偡
  138. // editp  : 僄僨傿僢僩僴儞僪儖
  139. //  n : 僼儗乕儉斣崋
  140. //  栠傝抣 : 愝掕偝傟偨僼儗乕儉斣崋
  141. int (*set_frame_n)( void *editp,int n );
  142. // 憤僼儗乕儉悢傪曄峏偟傑偡
  143. // editp  : 僄僨傿僢僩僴儞僪儖
  144. //  n : 僼儗乕儉悢
  145. //  栠傝抣 : 愝掕偝傟偨憤僼儗乕儉悢
  146. BOOL (*copy_frame)( void *editp,int d,int s );
  147. // 僼儗乕儉傪懠偺僼儗乕儉偵僐僺乕偟傑偡
  148. // editp  : 僄僨傿僢僩僴儞僪儖
  149. // d   : 僐僺乕愭僼儗乕儉斣崋
  150. // s   : 僐僺乕尦僼儗乕儉斣崋
  151. //  栠傝抣 : TRUE側傜惉岟
  152. BOOL (*copy_video)( void *editp,int d,int s );
  153. // 僼儗乕儉偺塮憸偩偗傪懠偺僼儗乕儉偵僐僺乕偟傑偡
  154. // editp  : 僄僨傿僢僩僴儞僪儖
  155. // d   : 僐僺乕愭僼儗乕儉斣崋
  156. // s   : 僐僺乕尦僼儗乕儉斣崋
  157. //  栠傝抣 : TRUE側傜惉岟
  158. BOOL (*copy_audio)( void *editp,int d,int s );
  159. // 僼儗乕儉偺壒惡偩偗傪懠偺僼儗乕儉偵僐僺乕偟傑偡
  160. // editp  : 僄僨傿僢僩僴儞僪儖
  161. // d   : 僐僺乕愭僼儗乕儉斣崋
  162. // s   : 僐僺乕尦僼儗乕儉斣崋
  163. //  栠傝抣 : TRUE側傜惉岟
  164. BOOL (*copy_clip)( HWND hwnd,void *pixelp,int w,int h );
  165. // 僋儕僢僾儃乕僪偵DIB宍幃(RGB24bit)偺夋憸傪僐僺乕偟傑偡
  166. // hwnd  : 僂傿儞僪僂僴儞僪儖
  167. // pixelp : DIB宍幃僨乕僞傊偺億僀儞僞
  168. // w,h  : 夋憸僒僀僘
  169. //  栠傝抣 : TRUE側傜惉岟
  170. BOOL (*paste_clip)( HWND hwnd,void *editp,int n );
  171. // 僋儕僢僾儃乕僪偐傜夋憸傪挘傝偮偗傑偡
  172. // hwnd  : 僂傿儞僪僂僴儞僪儖
  173. // editp  : 僄僨傿僢僩僴儞僪儖
  174. //  n : 僼儗乕儉斣崋
  175. //  栠傝抣 : TRUE側傜惉岟
  176. BOOL (*get_frame_status)( void *editp,int n,FRAME_STATUS *fsp );
  177. // 僼儗乕儉偺僗僥乕僞僗傪庢摼偟傑偡
  178. // editp  : 僄僨傿僢僩僴儞僪儖
  179. //  n : 僼儗乕儉斣崋
  180. //  fps : 僼儗乕儉僗僥乕僞僗傊偺億僀儞僞
  181. //  栠傝抣 : TRUE側傜惉岟
  182. BOOL (*set_frame_status)( void *editp,int n,FRAME_STATUS *fsp );
  183. // 僼儗乕儉偺僗僥乕僞僗傪曄峏偟傑偡
  184. // editp  : 僄僨傿僢僩僴儞僪儖
  185. //  n : 僼儗乕儉斣崋
  186. //  fps : 僼儗乕儉僗僥乕僞僗傊偺億僀儞僞
  187. //  栠傝抣 : TRUE側傜惉岟
  188. BOOL (*is_saveframe)( void *editp,int n );
  189. // 幚嵺偵曐懚偝傟傞僼儗乕儉偐挷傋傑偡
  190. // editp  : 僄僨傿僢僩僴儞僪儖
  191. //  n : 僼儗乕儉斣崋
  192. //  栠傝抣 : TRUE側傜曐懚偝傟傑偡
  193. BOOL (*is_keyframe)( void *editp,int n );
  194. // 僉乕僼儗乕儉偐偳偆偐挷傋傑偡
  195. // editp  : 僄僨傿僢僩僴儞僪儖
  196. //  n : 僼儗乕儉斣崋
  197. //  栠傝抣 : TRUE側傜僉乕僼儗乕儉
  198. BOOL (*is_recompress)( void *editp,int n );
  199. // 嵞埑弅偑昁梫偐挷傋傑偡
  200. // editp  : 僄僨傿僢僩僴儞僪儖
  201. //  n : 僼儗乕儉斣崋
  202. //  栠傝抣 : TRUE側傜嵞埑弅偑昁梫
  203. BOOL (*filter_window_update)( void *fp );
  204. // 愝掕僂傿儞僪僂偺僩儔僢僋僶乕偲僠僃僢僋儃僢僋僗傪嵞昤夋偟傑偡
  205. // fp   : 僼傿儖僞峔憿懱偺億僀儞僞
  206. //  栠傝抣 : TRUE側傜惉岟
  207. BOOL (*is_filter_window_disp)( void *fp );
  208. // 愝掕僂傿儞僪僂偑昞帵偝傟偰偄傞偐挷傋傑偡
  209. // fp   : 僼傿儖僞峔憿懱偺億僀儞僞
  210. //  栠傝抣 : TRUE側傜昞帵偝傟偰偄傞
  211. BOOL (*get_file_info)( void *editp,FILE_INFO *fip );
  212. // 曇廤僼傽僀儖偺忣曬傪庢摼偟傑偡
  213. // editp  : 僄僨傿僢僩僴儞僪儖
  214. //  fip : 僼傽僀儖僀儞僼僅儊乕僔儑儞峔憿懱傊偺億僀儞僞
  215. //  栠傝抣 : TRUE側傜惉岟
  216. LPSTR (*get_config_name)( void *editp,int n );
  217. // 愝掕娐嫬偺柤慜傪庢摼偟傑偡
  218. // editp  : 僄僨傿僢僩僴儞僪儖
  219. //  n : 愝掕娐嫬偺斣崋
  220. //  栠傝抣 : 愝掕娐嫬偺柤慜傊偺億僀儞僞
  221. BOOL (*is_filter_active)( void *fp );
  222. // 僼傿儖僞偑桳岠偵側偭偰偄傞偐挷傋傑偡
  223. // fp   : 僼傿儖僞峔憿懱偺億僀儞僞
  224. //  栠傝抣 : TRUE側傜僼傿儖僞桳岠
  225. BOOL (*get_pixel_filtered)( void *editp,int n,void *pixelp,int *w,int *h );
  226. // 巜掕偟偨僼儗乕儉偺DIB宍幃(RGB24bit)偺夋憸僨乕僞傪撉傒崬傒傑偡
  227. // 僨乕僞偼僼傿儖僞屻偺傕偺偱偡
  228. // editp  : 僄僨傿僢僩僴儞僪儖
  229. // n : 僼儗乕儉斣崋
  230. //  pixelp : DIB宍幃僨乕僞傪奿擺偡傞億僀儞僞 (NULL側傜夋憸僒僀僘偩偗傪曉偟傑偡)
  231. // w,h : 夋憸偺僒僀僘 (NULL側傜DIB宍幃僨乕僞偩偗傪曉偟傑偡)
  232. //  栠傝抣 : TRUE側傜惉岟
  233. int (*get_audio_filtered)( void *editp,int n,void *buf );
  234. // 巜掕偟偨僼儗乕儉偺僆乕僨傿僆僨乕僞傪撉傒崬傒傑偡
  235. // 僨乕僞偼僼傿儖僞屻偺傕偺偱偡
  236. // editp*  : 僄僨傿僢僩僴儞僪儖
  237. // n : 僼儗乕儉斣崋
  238. // buf  : 奿擺偡傞僶僢僼傽
  239. //  栠傝抣 : 撉傒崬傫偩僒儞僾儖悢
  240. BOOL (*get_select_frame)( void *editp,int *s,int *e );
  241. // 慖戰奐巒廔椆僼儗乕儉傪庢摼偟傑偡
  242. // editp  : 僄僨傿僢僩僴儞僪儖
  243. // s : 慖戰奐巒僼儗乕儉
  244. // e : 慖戰廔椆僼儗乕儉
  245. //  栠傝抣 : TRUE側傜惉岟
  246. BOOL (*set_select_frame)( void *editp,int s,int e );
  247. // 慖戰奐巒廔椆僼儗乕儉傪愝掕偟傑偡
  248. // editp  : 僄僨傿僢僩僴儞僪儖
  249. // s : 慖戰奐巒僼儗乕儉
  250. // e : 慖戰廔椆僼儗乕儉
  251. //  栠傝抣 : TRUE側傜惉岟
  252. BOOL (*rgb2yc)( PIXEL_YC *ycp,PIXEL *pixelp,int w );
  253. // PIXEL偐傜PIXEL_YC偵曄姺偟傑偡
  254. // ycp : PIXEL_YC峔憿懱傊偺億僀儞僞
  255. // pixelp  : PIXEL峔憿懱傊偺億僀儞僞
  256. // w : 峔憿懱偺悢
  257. //  栠傝抣 : TRUE側傜惉岟
  258. BOOL (*yc2rgb)( PIXEL *pixelp,PIXEL_YC *ycp,int w );
  259. // PIXEL_YC偐傜PIXEL偵曄姺偟傑偡
  260. // pixelp  : PIXEL峔憿懱傊偺億僀儞僞
  261. // ycp : PIXEL_YC峔憿懱傊偺億僀儞僞
  262. // w : 峔憿懱偺悢
  263. //  栠傝抣 : TRUE側傜惉岟
  264. BOOL (*dlg_get_load_name)( LPSTR name,LPSTR filter,LPSTR def );
  265. // 僼傽僀儖僟僀傾儘僌傪巊偭偰撉傒崬傓僼傽僀儖柤傪庢摼偟傑偡
  266. // name : 僼傽僀儖柤傪奿擺偡傞億僀儞僞
  267. // filter : 僼傽僀儖僼傿儖僞
  268. //  def : 僨僼僅儖僩偺僼傽僀儖柤
  269. //  栠傝抣 : TRUE側傜惉岟 FALSE側傜僉儍儞僙儖
  270. BOOL (*dlg_get_save_name)( LPSTR name,LPSTR filter,LPSTR def );
  271. // 僼傽僀儖僟僀傾儘僌傪巊偭偰彂偒崬傓僼傽僀儖柤傪庢摼偟傑偡
  272. // name : 僼傽僀儖柤傪奿擺偡傞億僀儞僞
  273. // filter : 僼傽僀儖僼傿儖僞
  274. //  def : 僨僼僅儖僩偺僼傽僀儖柤
  275. //  栠傝抣 : TRUE側傜惉岟 FALSE側傜僉儍儞僙儖
  276. int (*ini_load_int)( void *fp,LPSTR key,int n );
  277. // INI僼傽僀儖偐傜悢抣傪撉傒崬傓
  278. // fp   : 僼傿儖僞峔憿懱偺億僀儞僞
  279. // key : 傾僋僙僗梡偺僉乕偺柤慜
  280. //  n : 僨僼僅儖僩偺悢抣
  281. //  栠傝抣 : 撉傒崬傫偩悢抣
  282. int (*ini_save_int)( void *fp,LPSTR key,int n );
  283. // INI僼傽僀儖偵悢抣傪彂偒崬傓
  284. // fp   : 僼傿儖僞峔憿懱偺億僀儞僞
  285. // key : 傾僋僙僗梡偺僉乕偺柤慜
  286. //  n : 彂偒崬傓悢抣
  287. //  栠傝抣 : 彂偒崬傫偩悢抣
  288. BOOL (*ini_load_str)( void *fp,LPSTR key,LPSTR str,LPSTR def );
  289. // INI僼傽僀儖偐傜暥帤楍傪撉傒崬傓
  290. // fp   : 僼傿儖僞峔憿懱偺億僀儞僞
  291. // key : 傾僋僙僗梡偺僉乕偺柤慜
  292. //  str : 暥帤楍傪撉傒崬傓僶僢僼傽
  293. //  def : 僨僼僅儖僩偺暥帤楍
  294. //  栠傝抣 : TRUE側傜惉岟
  295. BOOL (*ini_save_str)( void *fp,LPSTR key,LPSTR str );
  296. // INI僼傽僀儖偵暥帤楍傪彂偒崬傓
  297. // fp   : 僼傿儖僞峔憿懱偺億僀儞僞
  298. // key : 傾僋僙僗梡偺僉乕偺柤慜
  299. //  n : 彂偒崬傓暥帤楍
  300. //  栠傝抣 : TRUE側傜惉岟
  301. BOOL (*get_source_file_info)( void *editp,FILE_INFO *fip,int source_file_id );
  302. // 巜掕偟偨僼傽僀儖ID偺僼傽僀儖偺忣曬傪庢摼偟傑偡
  303. // editp  : 僄僨傿僢僩僴儞僪儖
  304. //  fip : 僼傽僀儖僀儞僼僅儊乕僔儑儞峔憿懱傊偺億僀儞僞
  305. // souce_file_id
  306. // : 僼傽僀儖ID
  307. //  栠傝抣 : TRUE側傜惉岟
  308. BOOL (*get_source_video_number)( void *editp,int n,int *source_file_id,int *source_video_number );
  309. // 巜掕偟偨僼儗乕儉偺僜乕僗偺僼傽僀儖ID偲僼儗乕儉斣崋傪庢摼偟傑偡
  310. // editp  : 僄僨傿僢僩僴儞僪儖
  311. // n : 僼儗乕儉斣崋
  312. // souce_file_id
  313. // : 僼傽僀儖ID傪奿擺偡傞億僀儞僞
  314. // souce_video_number
  315. // : 僼儗乕儉斣崋傪奿擺偡傞億僀儞僞
  316. //  栠傝抣 : TRUE側傜惉岟
  317. BOOL (*get_sys_info)( void *editp,SYS_INFO *sip );
  318. // 僔僗僥儉偺忣曬傪庢摼偟傑偡
  319. // editp  : 僄僨傿僢僩僴儞僪儖
  320. //  sip : 僔僗僥儉僀儞僼僅儊乕僔儑儞峔憿懱傊偺億僀儞僞
  321. //  栠傝抣 : TRUE側傜惉岟
  322. void  *(*get_filterp)( int filter_id );
  323. // 巜掕偺僼傿儖僞ID偺僼傿儖僞峔憿懱傊偺億僀儞僞傪庢摼偟傑偡
  324. // filter_id
  325. //   : 僼傿儖僞ID (0乣搊榐偝傟偰傞僼傿儖僞偺悢-1傑偱偺抣)
  326. //  栠傝抣 : 僼傿儖僞峔憿懱傊偺億僀儞僞 (NULL側傜幐攕)
  327. int reserve[6];
  328. } EXFUNC;
  329. // 僼傿儖僞峔憿懱
  330. typedef struct {
  331. int flag; // 僼傿儖僞偺僼儔僌
  332. // FILTER_FLAG_ALWAYS_ACTIVE : 僼傿儖僞傪忢偵傾僋僥傿僽偵偟傑偡
  333. // FILTER_FLAG_CONFIG_POPUP : 愝掕傪億僢僾傾僢僾儊僯儏乕偵偟傑偡
  334. // FILTER_FLAG_CONFIG_CHECK : 愝掕傪僠僃僢僋儃僢僋僗儊僯儏乕偵偟傑偡
  335. // FILTER_FLAG_CONFIG_RADIO : 愝掕傪儔僕僆儃僞儞儊僯儏乕偵偟傑偡
  336. // FILTER_FLAG_EX_DATA : 奼挘僨乕僞傪曐懚弌棃傞傛偆偵偟傑偡
  337. // FILTER_FLAG_PRIORITY_HIGHEST : 僼傿儖僞偺僾儔僀僆儕僥傿傪忢偵嵟忋埵偵偟傑偡
  338. // FILTER_FLAG_PRIORITY_LOWEST : 僼傿儖僞偺僾儔僀僆儕僥傿傪忢偵嵟壓埵偵偟傑偡
  339. // FILTER_FLAG_WINDOW_THICKFRAME : 僒僀僘曄峏壜擻側僂傿儞僪僂傪嶌傝傑偡
  340. // FILTER_FLAG_WINDOW_SIZE : 愝掕僂傿儞僪僂偺僒僀僘傪巜掕弌棃傞傛偆偵偟傑偡
  341. // FILTER_FLAG_DISP_FILTER : 昞帵僼傿儖僞偵偟傑偡
  342. // FILTER_FLAG_REDRAW : 嵞昤夋傪plugin懁偱張棟偡傞傛偆偵偟傑偡
  343. // FILTER_FLAG_EX_INFORMATION : 僼傿儖僞偺奼挘忣曬傪愝掕偱偒傞傛偆偵偟傑偡
  344. // FILTER_FLAG_INFORMATION : FILTER_FLAG_EX_INFORMATION 傪巊偆傛偆偵偟偰壓偝偄
  345. // FILTER_FLAG_NO_CONFIG : 愝掕僂傿儞僪僂傪昞帵偟側偄傛偆偵偟傑偡
  346. // FILTER_FLAG_AUDIO_FILTER : 僆乕僨傿僆僼傿儖僞偵偟傑偡
  347. // FILTER_FLAG_RADIO_BUTTON : 僠僃僢僋儃僢僋僗傪儔僕僆儃僞儞偵偟傑偡
  348. // FILTER_FLAG_WINDOW_HSCROLL : 悈暯僗僋儘乕儖僶乕傪帩偮僂傿儞僪僂傪嶌傝傑偡
  349. // FILTER_FLAG_WINDOW_VSCROLL : 悅捈僗僋儘乕儖僶乕傪帩偮僂傿儞僪僂傪嶌傝傑偡
  350. // FILTER_FLAG_IMPORT : 僀儞億乕僩儊僯儏乕傪嶌傝傑偡
  351. // FILTER_FLAG_EXPORT : 僄僋僗億乕僩儊僯儏乕傪嶌傝傑偡
  352. int x,y; // 愝掕僂僀儞僪僂偺僒僀僘 (FILTER_FLAG_WINDOW_SIZE偑棫偭偰偄傞帪偵桳岠)
  353. TCHAR *name; // 僼傿儖僞偺柤慜
  354. int track_n; // 僩儔僢僋僶乕偺悢
  355. TCHAR **track_name; // 僩儔僢僋僶乕偺柤慜孲傊偺億僀儞僞(僩儔僢僋僶乕悢偑0側傜NULL偱傛偄)
  356. int *track_default; // 僩儔僢僋僶乕偺弶婜抣孲傊偺億僀儞僞(僩儔僢僋僶乕悢偑0側傜NULL偱傛偄)
  357. int *track_s,*track_e; // 僩儔僢僋僶乕偺悢抣偺壓尷忋尷 (NULL側傜慡偰0乣256)
  358. int check_n; // 僠僃僢僋儃僢僋僗偺悢
  359. TCHAR **check_name; // 僠僃僢僋儃僢僋僗偺柤慜孲傊偺億僀儞僞(僠僃僢僋儃僢僋僗悢偑0側傜NULL偱傛偄)
  360. int *check_default; // 僠僃僢僋儃僢僋僗偺弶婜抣孲傊偺億僀儞僞(僠僃僢僋儃僢僋僗悢偑0側傜NULL偱傛偄)
  361. BOOL (*func_proc)( void *fp,FILTER_PROC_INFO *fpip );
  362. // 僼傿儖僞張棟娭悢傊偺億僀儞僞 (NULL側傜屇偽傟傑偣傫)
  363. BOOL (*func_init)( void *fp );
  364. // 奐巒帪偵屇偽傟傞娭悢傊偺億僀儞僞 (NULL側傜屇偽傟傑偣傫)
  365. BOOL (*func_exit)( void *fp );
  366. // 廔椆帪偵屇偽傟傞娭悢傊偺億僀儞僞 (NULL側傜屇偽傟傑偣傫)
  367. BOOL (*func_update)( void *fp );
  368. // 愝掕偑曄峏偝傟偨偲偒偵屇偽傟傞娭悢傊偺億僀儞僞 (NULL側傜屇偽傟傑偣傫)
  369. BOOL  (*func_WndProc)( HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam,void *editp,void *fp );
  370. // 愝掕僂傿儞僪僂偵僂傿儞僪僂儊僢僙乕僕偑棃偨帪偵屇偽傟傞娭悢傊偺億僀儞僞 (NULL側傜屇偽傟傑偣傫)
  371. // 捠忢偺儊僢僙乕僕埲奜偵埲壓偺奼挘儊僢僙乕僕偑憲傜傟傑偡
  372. // WM_FILTER_UPDATE : 僼傿儖僞愝掕傗曇廤撪梕偑曄峏偝傟偨捈屻偵憲傜傟傑偡
  373. // WM_FILTER_FILE_OPEN : 曇廤僼傽僀儖偑僆乕僾儞偝傟偨捈屻偵憲傜傟傑偡
  374. // WM_FILTER_FILE_CLOSE : 曇廤僼傽僀儖偑僋儘乕僘偝傟傞捈慜偵憲傜傟傑偡
  375. // WM_FILTER_INIT : 奐巒捈屻偵憲傜傟傑偡
  376. // WM_FILTER_EXIT : 廔椆捈慜偵憲傜傟傑偡
  377. // WM_FILTER_SAVE_START : 僙乕僽偑奐巒偝傟傞捈慜偵憲傜傟傑偡
  378. // WM_FILTER_SAVE_END : 僙乕僽偑廔椆偝傟偨捈屻偵憲傜傟傑偡
  379. // WM_FILTER_IMPORT : 僀儞億乕僩偑慖戰偝傟偨捈屻偵憲傜傟傑偡
  380. // WM_FILTER_EXPORT : 僄僋僗億乕僩偑慖戰偝傟偨捈屻偵憲傜傟傑偡
  381. // 栠傝抣傪TRUE偵偡傞偲曇廤撪梕偑峏怴偝傟偨偲偟偰慡懱偑嵞昤夋偝傟傑偡
  382. int *track,*check; // 僔僗僥儉偱巊偄傑偡偺偱巊梡偟側偄偱偔偩偝偄
  383. void *ex_data_ptr; // 奼挘僨乕僞椞堟傊偺億僀儞僞 (FILTER_FLAG_EX_DATA偑棫偭偰偄傞帪偵桳岠)
  384. int ex_data_size; // 奼挘僨乕僞僒僀僘 (FILTER_FLAG_EX_DATA偑棫偭偰偄傞帪偵桳岠)
  385. TCHAR *information; // 僼傿儖僞忣曬傊偺億僀儞僞 (FILTER_FLAG_EX_INFORMATION偑棫偭偰偄傞帪偵桳岠)
  386. BOOL (*func_save_start)( void *fp,int s,int e,void *editp );
  387. // 僙乕僽偑奐巒偝傟傞捈慜偵屇偽傟傞娭悢傊偺億僀儞僞 (NULL側傜屇偽傟傑偣傫)
  388. BOOL (*func_save_end)( void *fp,void *editp );
  389. // 僙乕僽偑廔椆偟偨捈慜偵屇偽傟傞娭悢傊偺億僀儞僞 (NULL側傜屇偽傟傑偣傫)
  390. EXFUNC *exfunc; // 奜晹娭悢僥乕僽儖傊偺億僀儞僞
  391. HWND hwnd; // 僂傿儞僪僂僴儞僪儖
  392. HINSTANCE dll_hinst; // DLL偺僀儞僗僞儞僗僴儞僪儖
  393. int reserve[8]; // 奼挘梡偵梊栺偝傟偰傑偡
  394. } FILTER;
  395. #define FILTER_FLAG_ACTIVE 1
  396. #define FILTER_FLAG_ALWAYS_ACTIVE 4
  397. #define FILTER_FLAG_CONFIG_POPUP 8
  398. #define FILTER_FLAG_CONFIG_CHECK 16
  399. #define FILTER_FLAG_CONFIG_RADIO 32
  400. #define FILTER_FLAG_EX_DATA 1024
  401. #define FILTER_FLAG_PRIORITY_HIGHEST 2048
  402. #define FILTER_FLAG_PRIORITY_LOWEST 4096
  403. #define FILTER_FLAG_WINDOW_THICKFRAME 8192
  404. #define FILTER_FLAG_WINDOW_SIZE 16384
  405. #define FILTER_FLAG_DISP_FILTER 32768
  406. #define FILTER_FLAG_REDRAW 0x20000
  407. #define FILTER_FLAG_EX_INFORMATION 0x40000
  408. #define FILTER_FLAG_INFORMATION 0x80000
  409. #define FILTER_FLAG_NO_CONFIG 0x100000
  410. #define FILTER_FLAG_AUDIO_FILTER 0x200000
  411. #define FILTER_FLAG_RADIO_BUTTON 0x400000
  412. #define FILTER_FLAG_WINDOW_HSCROLL 0x800000
  413. #define FILTER_FLAG_WINDOW_VSCROLL 0x1000000
  414. #define FILTER_FLAG_IMPORT 0x10000000
  415. #define FILTER_FLAG_EXPORT 0x20000000
  416. #define WM_FILTER_UPDATE (WM_USER+100)
  417. #define WM_FILTER_FILE_OPEN (WM_USER+101)
  418. #define WM_FILTER_FILE_CLOSE (WM_USER+102)
  419. #define WM_FILTER_INIT (WM_USER+103)
  420. #define WM_FILTER_EXIT (WM_USER+104)
  421. #define WM_FILTER_SAVE_START (WM_USER+105)
  422. #define WM_FILTER_SAVE_END (WM_USER+106)
  423. #define WM_FILTER_IMPORT (WM_USER+107)
  424. #define WM_FILTER_EXPORT (WM_USER+108)
  425. // 僼傿儖僞DLL梡峔憿懱
  426. typedef struct {
  427. int flag;
  428. int x,y;
  429. TCHAR *name;
  430. int track_n;
  431. TCHAR **track_name;
  432. int *track_default;
  433. int *track_s,*track_e;
  434. int check_n;
  435. TCHAR **check_name;
  436. int *check_default;
  437. BOOL (*func_proc)( FILTER *fp,FILTER_PROC_INFO *fpip );
  438. BOOL (*func_init)( FILTER *fp );
  439. BOOL (*func_exit)( FILTER *fp );
  440. BOOL (*func_update)( FILTER *fp );
  441. BOOL  (*func_WndProc)( HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam,void *editp,FILTER *fp );
  442. int *track,*check;
  443. void *ex_data_ptr;
  444. int ex_data_size;
  445. TCHAR *information;
  446. BOOL (*func_save_start)( void *fp,int s,int e,void *editp );
  447. BOOL (*func_save_end)( void *fp,void *editp );
  448. EXFUNC *exfunc;
  449. HWND hwnd;
  450. HINSTANCE dll_hinst;
  451. int reserve[8];
  452. } FILTER_DLL;
  453. #define MID_FILTER_BUTTON 12004
  454. BOOL func_proc( FILTER *fp,FILTER_PROC_INFO *fpip );
  455. BOOL func_init( FILTER *fp );
  456. BOOL func_exit( FILTER *fp );
  457. BOOL func_update( FILTER *fp );
  458. BOOL func_WndProc( HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam,void *editp,FILTER *fp );
  459. BOOL func_save_start( FILTER *fp,int s,int e,void *editp );
  460. BOOL func_save_end( FILTER *fp,void *editp );