Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

526 lines
19 KiB

  1. /*
  2. * @DEC_COPYRIGHT@
  3. */
  4. /*
  5. * HISTORY
  6. * $Log: SV.h,v $
  7. * Revision 1.1.10.6 1996/10/28 17:32:21 Hans_Graves
  8. * MME-01402. Added TimeStamp support to Callbacks.
  9. * [1996/10/28 17:05:52 Hans_Graves]
  10. *
  11. * Revision 1.1.10.5 1996/10/12 17:18:18 Hans_Graves
  12. * Rearranged PARAMs. Added SV_PARAM_HALFPEL and SV_PARAM_SKIPPEL.
  13. * [1996/10/12 16:55:44 Hans_Graves]
  14. *
  15. * Revision 1.1.10.4 1996/09/18 23:45:53 Hans_Graves
  16. * More PARAMs
  17. * [1996/09/18 21:56:45 Hans_Graves]
  18. *
  19. * Revision 1.1.10.3 1996/07/19 02:11:02 Hans_Graves
  20. * Added SV_PARAM_DEBUG
  21. * [1996/07/19 01:23:39 Hans_Graves]
  22. *
  23. * Revision 1.1.10.2 1996/05/07 19:55:54 Hans_Graves
  24. * Added SV_HUFF_DECODE and SV_HUFF_ENCODE
  25. * [1996/05/07 17:23:47 Hans_Graves]
  26. *
  27. * Revision 1.1.8.6 1996/04/10 21:47:20 Hans_Graves
  28. * Added PARAMs. Replaced externs with EXTERN.
  29. * [1996/04/10 21:22:51 Hans_Graves]
  30. *
  31. * Revision 1.1.8.5 1996/04/04 23:35:03 Hans_Graves
  32. * Added SV_PARAM_FINALFORMAT enum
  33. * [1996/04/04 23:02:48 Hans_Graves]
  34. *
  35. * Revision 1.1.8.4 1996/04/01 15:17:45 Bjorn_Engberg
  36. * Replace include mmsystem.h with windows.h and mmreg.h for NT.
  37. * [1996/04/01 14:58:57 Bjorn_Engberg]
  38. *
  39. * Revision 1.1.8.3 1996/03/29 22:21:06 Hans_Graves
  40. * Include <mmsystem.h> here only
  41. * [1996/03/29 21:48:59 Hans_Graves]
  42. *
  43. * Revision 1.1.8.2 1996/03/16 19:22:55 Karen_Dintino
  44. * added H261 NT includes
  45. * [1996/03/16 18:39:31 Karen_Dintino]
  46. *
  47. * Revision 1.1.6.4 1996/02/06 22:53:54 Hans_Graves
  48. * Added PARAM enums
  49. * [1996/02/06 22:18:07 Hans_Graves]
  50. *
  51. * Revision 1.1.6.3 1996/01/02 18:31:16 Bjorn_Engberg
  52. * Added and improved function prototypes.
  53. * [1996/01/02 15:03:05 Bjorn_Engberg]
  54. *
  55. * Revision 1.1.6.2 1995/12/07 19:31:23 Hans_Graves
  56. * Added defs for SV_MPEG_ENCODE,SV_MPEG2_DECODE,SV_MPEG2_ENCODE,IT_FULL,FULL_WIDTH,FULL_HEIGHT
  57. * [1995/12/07 17:59:38 Hans_Graves]
  58. *
  59. * Revision 1.1.2.18 1995/09/22 18:17:02 Hans_Graves
  60. * Remove MPEG_SUPPORT, H261_SUPPORT, and JPEG_SUPPORT
  61. * [1995/09/22 18:14:14 Hans_Graves]
  62. *
  63. * Revision 1.1.2.17 1995/09/22 15:04:40 Hans_Graves
  64. * Added definitions for MPEG_SUPPORT, H261_SUPPORT, and JPEG_SUPPORT
  65. * [1995/09/22 15:04:22 Hans_Graves]
  66. *
  67. * Revision 1.1.2.16 1995/09/20 14:59:39 Bjorn_Engberg
  68. * Port to NT
  69. * [1995/09/20 14:40:10 Bjorn_Engberg]
  70. *
  71. * Add ICMODE_OLDQ flag on ICOpen for softjpeg to use old quant tables
  72. * [1995/08/31 20:57:52 Paul_Gauthier]
  73. *
  74. * Revision 1.1.2.15 1995/09/05 14:52:39 Hans_Graves
  75. * Removed BI_* definitions - moved to SC.h
  76. * [1995/09/05 14:50:45 Hans_Graves]
  77. *
  78. * Revision 1.1.2.14 1995/08/31 21:13:27 Paul_Gauthier
  79. * Add SV_JPEG_QUANT_NEW/OLD definitions
  80. * [1995/08/31 21:13:04 Paul_Gauthier]
  81. *
  82. * Revision 1.1.2.12 1995/08/08 13:21:17 Hans_Graves
  83. * Added Motion Estimation types
  84. * [1995/08/07 22:03:30 Hans_Graves]
  85. *
  86. * Revision 1.1.2.11 1995/07/31 21:11:02 Karen_Dintino
  87. * Add yuv12 definition
  88. * [1995/07/31 19:27:58 Karen_Dintino]
  89. *
  90. * Revision 1.1.2.10 1995/07/26 17:48:56 Hans_Graves
  91. * Added prototypes for sv_GetMpegImageInfo() and sv_GetH261ImageInfo().
  92. * [1995/07/26 17:45:14 Hans_Graves]
  93. *
  94. * Revision 1.1.2.9 1995/07/21 17:41:03 Hans_Graves
  95. * Moved Callback related stuff to SC.h
  96. * [1995/07/21 17:27:31 Hans_Graves]
  97. *
  98. * Revision 1.1.2.8 1995/07/17 22:01:33 Hans_Graves
  99. * Defined SvBufferInfo_t as ScBufferInfo_t.
  100. * [1995/07/17 21:45:06 Hans_Graves]
  101. *
  102. * Revision 1.1.2.7 1995/07/17 16:12:05 Hans_Graves
  103. * Added extern's to prototypes.
  104. * [1995/07/17 15:56:16 Hans_Graves]
  105. *
  106. * Revision 1.1.2.6 1995/07/01 18:43:17 Karen_Dintino
  107. * {** Merge Information **}
  108. * {** Command used: bsubmit **}
  109. * {** Ancestor revision: 1.1.2.4 **}
  110. * {** Merge revision: 1.1.2.5 **}
  111. * {** End **}
  112. * Add H.261 Decompress support
  113. * [1995/07/01 18:27:43 Karen_Dintino]
  114. *
  115. * Revision 1.1.2.5 1995/06/22 21:35:06 Hans_Graves
  116. * Moved filetypes to SC.h
  117. * [1995/06/22 21:29:42 Hans_Graves]
  118. *
  119. * Added TimeCode parameter to SvPictureInfo struct
  120. * [1995/04/26 19:23:55 Hans_Graves]
  121. *
  122. * Revision 1.1.2.4 1995/06/19 20:30:48 Karen_Dintino
  123. * Added support for H.261
  124. * [1995/06/19 20:13:47 Karen_Dintino]
  125. *
  126. * Revision 1.1.2.3 1995/06/09 18:33:31 Hans_Graves
  127. * Added SvGetInputBitstream() prototype.
  128. * [1995/06/09 16:36:52 Hans_Graves]
  129. *
  130. * Revision 1.1.2.2 1995/05/31 18:09:38 Hans_Graves
  131. * Inclusion in new SLIB location.
  132. * [1995/05/31 15:28:39 Hans_Graves]
  133. *
  134. * Revision 1.1.2.9 1995/01/17 16:40:30 Paul_Gauthier
  135. * Use Modified Adjust LUTs for Indeo video
  136. * [1995/01/17 16:38:31 Paul_Gauthier]
  137. *
  138. * Revision 1.1.2.8 1994/12/12 15:39:28 Paul_Gauthier
  139. * Merge changes from other SLIB versions
  140. * [1994/12/12 15:34:59 Paul_Gauthier]
  141. *
  142. * Revision 1.1.2.7 1994/11/18 18:48:26 Paul_Gauthier
  143. * Cleanup & bug fixes
  144. * [1994/11/18 18:45:02 Paul_Gauthier]
  145. *
  146. * Revision 1.1.2.6 1994/11/08 21:58:59 Paul_Gauthier
  147. * Changed <mmsystem.h> to <mme/mmsystem.h>
  148. * [1994/11/08 21:47:58 Paul_Gauthier]
  149. *
  150. * Revision 1.1.2.5 1994/10/25 19:17:47 Paul_Gauthier
  151. * Changes for random access
  152. * [1994/10/25 19:09:07 Paul_Gauthier]
  153. *
  154. * Revision 1.1.2.4 1994/10/13 20:34:55 Paul_Gauthier
  155. * MPEG cleanup
  156. * [1994/10/12 21:08:45 Paul_Gauthier]
  157. *
  158. * Revision 1.1.2.3 1994/10/10 21:45:43 Tom_Morris
  159. * Rename Status to not conflict with X11
  160. * [1994/10/10 21:44:59 Tom_Morris]
  161. *
  162. * Revision 1.1.2.2 1994/10/07 14:51:19 Paul_Gauthier
  163. * SLIB v3.0 incl. MPEG Decode
  164. * [1994/10/07 13:56:05 Paul_Gauthier]
  165. *
  166. * $EndLog$
  167. */
  168. /*
  169. **++
  170. ** FACILITY: Workstation Multimedia (WMM) v1.0
  171. **
  172. ** FILE NAME:
  173. ** MODULE NAME:
  174. **
  175. ** MODULE DESCRIPTION:
  176. **
  177. ** DESIGN OVERVIEW:
  178. **
  179. **--
  180. */
  181. /* "%Z% %M% revision %I%; last modified %G%"; */
  182. /*
  183. ** SV.h
  184. **
  185. ** User required data structures for Software Video Codec
  186. **
  187. */
  188. /*****************************************************************************
  189. ** Copyright (c) Digital Equipment Corporation, 1993 **
  190. ** **
  191. ** All Rights Reserved. Unpublished rights reserved under the copyright **
  192. ** laws of the United States. **
  193. ** **
  194. ** The software contained on this media is proprietary to and embodies **
  195. ** the confidential technology of Digital Equipment Corporation. **
  196. ** Possession, use, duplication or dissemination of the software and **
  197. ** media is authorized only pursuant to a valid written license from **
  198. ** Digital Equipment Corporation. **
  199. ** **
  200. ** RESTRICTED RIGHTS LEGEND Use, duplication, or disclosure by the U.S. **
  201. ** Government is subject to restrictions as set forth in Subparagraph **
  202. ** (c)(1)(ii) of DFARS 252.227-7013, or in FAR 52.227-19, as applicable. **
  203. ******************************************************************************/
  204. /*---------------------------------------------------------------------------
  205. * Modification History: SV.h
  206. *
  207. * 08-Sep-1994 PSG Modified to include MPEG decoder
  208. * 10-Jan-1994 VB Created for SLIB
  209. *--------------------------------------------------------------------------*/
  210. #ifndef _SV_H_
  211. #define _SV_H_
  212. #ifndef _SV_COMMON_
  213. #define _SV_COMMON_
  214. #include <sys/types.h>
  215. #include "SC.h"
  216. #define SV_CONTINUE 0
  217. #define SV_ABORT 1
  218. typedef void *SvHandle_t; /* Identifies a codec or renderer */
  219. typedef ScStatus_t SvStatus_t; /* Return status code */
  220. #ifdef WIN32
  221. #include <windows.h>
  222. #include <mmreg.h>
  223. #else /* !WIN32 */
  224. #include <mmsystem.h>
  225. #endif /* !WIN32 */
  226. #endif /* _SV_COMMON_ */
  227. #define SV_USE_BUFFER STREAM_USE_BUFFER
  228. #define SV_USE_BUFFER_QUEUE STREAM_USE_QUEUE
  229. #define SV_USE_FILE STREAM_USE_FILE
  230. typedef enum {
  231. SV_JPEG_DECODE = 100,
  232. SV_JPEG_ENCODE = 101,
  233. SV_MPEG_DECODE = 102,
  234. SV_MPEG_ENCODE = 103,
  235. SV_MPEG2_DECODE = 104,
  236. SV_MPEG2_ENCODE = 105,
  237. SV_H261_DECODE = 106,
  238. SV_H261_ENCODE = 107,
  239. SV_H263_DECODE = 108,
  240. SV_H263_ENCODE = 109,
  241. SV_HUFF_DECODE = 110,
  242. SV_HUFF_ENCODE = 111
  243. } SvCodecType_e;
  244. /*
  245. ** Parameters
  246. */
  247. typedef enum {
  248. /* General params */
  249. SV_PARAM_WIDTH = 0x10, /* image width */
  250. SV_PARAM_HEIGHT, /* image height */
  251. SV_PARAM_BITRATE, /* bit rate (bits per second) */
  252. SV_PARAM_NATIVEFORMAT, /* native decompressed format (FOURCC) */
  253. SV_PARAM_FINALFORMAT, /* Final format (format returned by codec) */
  254. SV_PARAM_BITSPERPIXEL, /* Average bits per pixel */
  255. SV_PARAM_FPS, /* frames per second */
  256. SV_PARAM_ASPECTRATIO, /* Aspect ratio: height/width */
  257. SV_PARAM_BITSTREAMING, /* is this a bitstreaming CODEC */
  258. /* Frame params */
  259. SV_PARAM_FRAME = 0x30, /* current frame number */
  260. SV_PARAM_KEYSPACING, /* I frames */
  261. SV_PARAM_SUBKEYSPACING, /* P frames */
  262. /* Timecode/length */
  263. SV_PARAM_TIMECODE = 0x50, /* Actual frame timecode */
  264. SV_PARAM_CALCTIMECODE, /* Calculated frame timecode for start of seq */
  265. SV_PARAM_LENGTH, /* total video length in miliiseconds */
  266. SV_PARAM_FRAMES, /* total video frames */
  267. /* Decode params */
  268. SV_PARAM_FRAMETYPE = 0x70, /* I, P, B or D frame */
  269. /* Encode params */
  270. SV_PARAM_ALGFLAGS, /* Algorithm flags */
  271. SV_PARAM_MOTIONALG, /* Motion estimation algorithm */
  272. SV_PARAM_MOTIONSEARCH, /* Motion search limit */
  273. SV_PARAM_MOTIONTHRESH, /* Motion threshold */
  274. SV_PARAM_QUANTI, /* Intra-frame Quantization Step */
  275. SV_PARAM_QUANTP, /* Inter-frame Quantization Step */
  276. SV_PARAM_QUANTB, /* Bi-drectional frame Quantization Step */
  277. SV_PARAM_QUANTD, /* D (preview) frame Quantization Step */
  278. /* Encode/Decode params */
  279. SV_PARAM_QUALITY=0x90, /* Quality: 0=worst 99>=best */
  280. SV_PARAM_FASTDECODE, /* Fast decode desired */
  281. SV_PARAM_FASTENCODE, /* Fast decode desired */
  282. SV_PARAM_VBVBUFFERSIZE, /* Video Buffer Verifier buffer size in bytes */
  283. SV_PARAM_VBVDELAY, /* Video Buffer Verifier delay */
  284. SV_PARAM_FORMATEXT, /* format extensions (i.e. rtp) */
  285. SV_PARAM_PACKETSIZE, /* packet size in bytes (rtp) */
  286. SV_PARAM_DEBUG, /* Setup debug info */
  287. } SvParameter_t;
  288. /*
  289. ** Old & new quantization modes for use by the "convertjpeg" program
  290. ** that converts JPEG clips using old quantiztion algorithm to new algorithm
  291. */
  292. typedef enum {
  293. SV_JPEG_QUANT_NEW = 0,
  294. SV_JPEG_QUANT_OLD = 1
  295. } SvQuantMode_e;
  296. /*
  297. ** Store basic info for user about the codec
  298. */
  299. typedef struct SV_INFO_s {
  300. u_int Version; /* Codec version number */
  301. int CodecStarted; /* SvDecompressBegin/End */
  302. u_int NumOperations; /* Current # of decompresses */
  303. } SV_INFO_t;
  304. /*
  305. ** Image types
  306. */
  307. #define IT_NTSC 0
  308. #define IT_CIF 1
  309. #define IT_QCIF 2
  310. #define IT_FULL 3
  311. /*
  312. ** Algorithms (Motion Estimation)
  313. */
  314. #define ME_CRAWL 1
  315. #define ME_BRUTE 2
  316. #define ME_TEST1 3
  317. #define ME_TEST2 4
  318. #define ME_FASTEST ME_CRAWL
  319. /*
  320. ** Standard Image sizes
  321. */
  322. #define FULL_WIDTH 640
  323. #define FULL_HEIGHT 480
  324. #define NTSC_WIDTH 320
  325. #define NTSC_HEIGHT 240
  326. #define SIF_WIDTH 352
  327. #define SIF_HEIGHT 240
  328. #define CIF_WIDTH 352
  329. #define CIF_HEIGHT 288
  330. #define SQCIF_WIDTH 128
  331. #define SQCIF_HEIGHT 96
  332. #define QCIF_WIDTH 176
  333. #define QCIF_HEIGHT 144
  334. #define CIF4_WIDTH (CIF_WIDTH*2)
  335. #define CIF4_HEIGHT (CIF_HEIGHT*2)
  336. #define CIF16_WIDTH (CIF_WIDTH*4)
  337. #define CIF16_HEIGHT (CIF_HEIGHT*4)
  338. /******************** MPEG structures & constants ***************************/
  339. /*
  340. ** Picture types
  341. */
  342. #define SV_I_PICTURE 1
  343. #define SV_P_PICTURE 2
  344. #define SV_B_PICTURE 4
  345. #define SV_D_PICTURE 8
  346. #define SV_ANY_PICTURE SV_I_PICTURE | SV_P_PICTURE | SV_B_PICTURE
  347. #define SV_ALL_PICTURES SV_ANY_PICTURE | SV_D_PICTURE
  348. /*
  349. ** Status values returned by SvFindNextPicture
  350. */
  351. #define SV_CAN_DECOMPRESS 1
  352. #define SV_CANNOT_DECOMPRESS 2
  353. /*
  354. ** SvPictureInfo_t describes picture found by CODEC
  355. */
  356. typedef struct SvPictureInfo_s {
  357. int Type; /* SV_I_PICTURE | SV_P_PICTURE | */
  358. /* SV_B_PICTURE | SV_D_PICTURE */
  359. int myStatus; /* CAN_DECOMPRESS or CANNOT_DECOMPRESS */
  360. int TemporalRef; /* Temporal reference # from picture header */
  361. int PicNumber; /* Cummulative picture num from stream start */
  362. qword ByteOffset; /* Cummulative byte offset from stream start */
  363. qword TimeCode; /* TimeCode: hours (5 bits), min (6 bits), */
  364. /* sec (6 bits), frame (6 bits) */
  365. } SvPictureInfo_t;
  366. /*
  367. ** SvCallbackInfo_t passes info back & forth during callback
  368. */
  369. typedef ScCallbackInfo_t SvCallbackInfo_t;
  370. /*
  371. ** Structure used in sv_GetMpegImageInfo call
  372. */
  373. typedef struct SvImageInfo_s {
  374. int len; /* Meaning depends on file format */
  375. int precision; /* Bits per pixel */
  376. int height; /* Height of images in pixels */
  377. int width; /* Width of images in pixels */
  378. int numcomps; /* Number of color components present */
  379. float picture_rate; /* Picture rate decoded from seq header */
  380. } SvImageInfo_t;
  381. /******************** End of MPEG structures & constants *********************/
  382. /******************** JPEG structures & constants ****************************/
  383. /*
  384. ** Huffman Tables (JPEG)
  385. */
  386. typedef struct SvHTable_s {
  387. u_int bits[16];
  388. u_int value[256];
  389. } SvHTable_t;
  390. typedef struct SvHuffmanTables_s {
  391. SvHTable_t DcY;
  392. SvHTable_t DcUV;
  393. SvHTable_t AcY;
  394. SvHTable_t AcUV;
  395. } SvHuffmanTables_t;
  396. /*
  397. ** Quantization Tables (JPEG)
  398. */
  399. typedef u_int SvQTable_t;
  400. typedef struct SvQuantTables_s {
  401. SvQTable_t c1[64];
  402. SvQTable_t c2[64];
  403. SvQTable_t c3[64];
  404. } SvQuantTables_t;
  405. /******************** End of JPEG structures & constants *********************/
  406. /*
  407. ** Table of contents structure
  408. */
  409. typedef struct SvToc_s {
  410. u_int offset; /* Byte offset of start of video frame */
  411. u_int size; /* Size in bytes of frame */
  412. u_int type; /* Type of frame (SV_I_PICTURE, ...) */
  413. } SvToc_t;
  414. typedef struct IndexStr { /* AVI-format table of contents entry */
  415. size_t size;
  416. unsigned long offset;
  417. } IndexStr, indexStr;
  418. #define SvSetRate(Svh, Rate) SvSetParamInt(Svh, SV_PARAM_BITRATE, Rate)
  419. #define SvSetFrameRate(Svh, FrameRate) SvSetParamFloat(Svh, SV_PARAM_FPS, FrameRate)
  420. EXTERN SvStatus_t SvOpenCodec (SvCodecType_e CodecType, SvHandle_t *Svh);
  421. EXTERN SvStatus_t SvCloseCodec (SvHandle_t Svh);
  422. EXTERN SvStatus_t SvDecompressQuery(SvHandle_t Svh, BITMAPINFOHEADER *ImgIn,
  423. BITMAPINFOHEADER *ImgOut);
  424. EXTERN SvStatus_t SvDecompressBegin (SvHandle_t Svh, BITMAPINFOHEADER *ImgIn,
  425. BITMAPINFOHEADER *ImgOut);
  426. EXTERN SvStatus_t SvGetDecompressSize (SvHandle_t Svh, int *MinSize);
  427. EXTERN SvStatus_t SvDecompress (SvHandle_t Svh, u_char *CompData, int MaxCompLen,
  428. u_char *DcmpImage, int MaxOutLen);
  429. EXTERN SvStatus_t SvDecompressEnd (SvHandle_t Svh);
  430. EXTERN SvStatus_t SvSetDataSource (SvHandle_t Svh, int Source, int Fd,
  431. void *Buffer_UserData, int BufSize);
  432. EXTERN SvStatus_t SvSetDataDestination (SvHandle_t Svh, int Source, int Fd,
  433. void *Buffer_UserData, int BufSize);
  434. EXTERN ScBitstream_t *SvGetDataSource (SvHandle_t Svh);
  435. EXTERN ScBitstream_t *SvGetDataDestination (SvHandle_t Svh);
  436. EXTERN ScBitstream_t *SvGetInputBitstream (SvHandle_t Svh);
  437. EXTERN SvStatus_t SvFlush(SvHandle_t Svh);
  438. EXTERN SvStatus_t SvAddBuffer (SvHandle_t Svh, SvCallbackInfo_t *BufferInfo);
  439. EXTERN SvStatus_t SvFindNextPicture (SvHandle_t Svh,
  440. SvPictureInfo_t *PictureInfo);
  441. #ifdef JPEG_SUPPORT
  442. EXTERN SvStatus_t SvSetDcmpHTables (SvHandle_t Svh, SvHuffmanTables_t *Ht);
  443. EXTERN SvStatus_t SvGetDcmpHTables (SvHandle_t Svh, SvHuffmanTables_t *Ht);
  444. EXTERN SvStatus_t SvSetCompHTables (SvHandle_t Svh, SvHuffmanTables_t *Ht);
  445. EXTERN SvStatus_t SvGetCompHTables (SvHandle_t Svh, SvHuffmanTables_t *Ht);
  446. EXTERN SvStatus_t SvSetDcmpQTables (SvHandle_t Svh, SvQuantTables_t *Qt);
  447. EXTERN SvStatus_t SvGetDcmpQTables (SvHandle_t Svh, SvQuantTables_t *Qt);
  448. EXTERN SvStatus_t SvSetCompQTables (SvHandle_t Svh, SvQuantTables_t *Qt);
  449. EXTERN SvStatus_t SvGetCompQTables (SvHandle_t Svh, SvQuantTables_t *Qt);
  450. EXTERN SvStatus_t SvSetQuantMode (SvHandle_t Svh, int QuantMode);
  451. EXTERN SvStatus_t SvGetQuality (SvHandle_t Svh, int *Quality);
  452. EXTERN SvStatus_t SvSetQuality (SvHandle_t Svh, int Quality);
  453. #endif /* JPEG_SUPPORT */
  454. EXTERN SvStatus_t SvSetParamBoolean(SvHandle_t Svh, SvParameter_t param,
  455. ScBoolean_t value);
  456. EXTERN SvStatus_t SvSetParamInt(SvHandle_t Svh, SvParameter_t param,
  457. qword value);
  458. EXTERN SvStatus_t SvSetParamFloat(SvHandle_t Svh, SvParameter_t param,
  459. float value);
  460. EXTERN ScBoolean_t SvGetParamBoolean(SvHandle_t Svh, SvParameter_t param);
  461. EXTERN qword SvGetParamInt(SvHandle_t Svh, SvParameter_t param);
  462. EXTERN float SvGetParamFloat(SvHandle_t Svh, SvParameter_t param);
  463. EXTERN SvStatus_t SvCompressBegin (SvHandle_t Svh, BITMAPINFOHEADER *ImgIn,
  464. BITMAPINFOHEADER *ImgOut);
  465. EXTERN SvStatus_t SvCompressEnd (SvHandle_t Svh);
  466. EXTERN SvStatus_t SvCompress (SvHandle_t Svh, u_char *CompData, int MaxCompLen,
  467. u_char *InputImage, int InLen, int *CmpBytes);
  468. EXTERN SvStatus_t SvCompressQuery (SvHandle_t Svh, BITMAPINFOHEADER *ImgIn,
  469. BITMAPINFOHEADER *ImgOut);
  470. EXTERN SvStatus_t SvGetCompressSize (SvHandle_t Svh, int *MaxSize);
  471. EXTERN SvStatus_t SvGetInfo (SvHandle_t Svh, SV_INFO_t *lpinfo,
  472. BITMAPINFOHEADER *ImgOut);
  473. EXTERN SvStatus_t SvRegisterCallback (SvHandle_t,
  474. int (*Callback)(SvHandle_t, SvCallbackInfo_t *, SvPictureInfo_t *),
  475. void *UserData);
  476. #ifdef MPEG_SUPPORT
  477. EXTERN SvStatus_t SvDecompressMPEG (SvHandle_t Svh, u_char *MultiBuf,
  478. int MaxMultiSize, u_char **ImagePtr);
  479. EXTERN SvStatus_t sv_GetMpegImageInfo(int fd, SvImageInfo_t *iminfo);
  480. #endif /* MPEG_SUPPORT */
  481. #ifdef H261_SUPPORT
  482. EXTERN SvStatus_t SvDecompressH261 (SvHandle_t Svh, u_char *MultiBuf,
  483. int MaxMultiSize, u_char **ImagePtr);
  484. EXTERN SvStatus_t sv_GetH261ImageInfo(int fd, SvImageInfo_t *iminfo);
  485. #endif /* H261_SUPPORT */
  486. #endif /* _SV_H_ */