DECORE.H
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif 
  4. #ifndef _DECORE_H_
  5. #define _DECORE_H_
  6. #ifdef WIN32
  7. #define STDCALL _stdcall
  8. #else
  9. #define STDCALL
  10. #endif
  11. #if ( (! defined (WIN32)) && (! defined (LINUX)) )
  12. #define BIG_ENDIAN
  13. #endif
  14. /**
  15.  *
  16. **/
  17. // 解码器选项
  18. #define DEC_OPT_MEMORY_REQS 0x00004000
  19. #define DEC_OPT_INIT 0x00008000
  20. #define DEC_OPT_RELEASE 0x00010000
  21. #define DEC_OPT_SETPP 0x00020000 // 设置后处理模式
  22. #define DEC_OPT_SETOUT 0x00040000 // 设置输出模式
  23. // 解码器返回值
  24. #define DEC_OK 0
  25. #define DEC_MEMORY 1
  26. #define DEC_BAD_FORMAT 2
  27. #define DEC_EXIT 3
  28. // 解码器YUV色彩格式
  29. #define DEC_YUV2 1
  30. #define DEC_UYVY 2
  31. #define DEC_420 3
  32. // 解码器RGB色彩格式
  33. #define DEC_RGB32 4 
  34. #define DEC_RGB24 5 
  35. #define DEC_RGB555 6 
  36. #define DEC_RGB565 7
  37. #define DEC_RGB32_INV 8
  38. #define DEC_RGB24_INV 9
  39. #define DEC_RGB555_INV 10
  40. #define DEC_RGB565_INV 11
  41. #define DEC_MBC         45
  42. #define DEC_MBR         36
  43. /**
  44.  *
  45. **/
  46. //解码器需要的内存格式
  47. typedef struct _DEC_MEM_REQS_
  48. {
  49. unsigned long mp4_edged_ref_buffers_size;
  50. unsigned long mp4_edged_for_buffers_size;
  51. unsigned long mp4_display_buffers_size;
  52. unsigned long mp4_state_size;
  53. unsigned long mp4_tables_size;
  54. unsigned long mp4_stream_size;
  55. } DEC_MEM_REQS;
  56. // 解码器的存储器格式
  57. typedef struct _DEC_BUFFERS_ 
  58. {
  59. void * mp4_edged_ref_buffers;  
  60. void * mp4_edged_for_buffers;  
  61. void * mp4_display_buffers;
  62. void * mp4_state;
  63. void * mp4_tables;
  64. void * mp4_stream;
  65. } DEC_BUFFERS;
  66. //解码器的参数
  67. typedef struct _DEC_PARAM_ 
  68. {
  69. int x_dim; // 被解码的帧的x轴的尺度
  70. int y_dim; // 被解码的帧的y轴的尺度
  71. int output_format; // 输出色彩的格式
  72. int time_incr;
  73. DEC_BUFFERS buffers;
  74. } DEC_PARAM;
  75. //解码器帧
  76. typedef struct _DEC_FRAME_
  77. {
  78. void *bmp; // 被解码的位图 
  79. void *bitstream; // 解码器的缓冲
  80. long length; // 解码器流的长度
  81. int render_flag; // 1: 帧正在被渲染
  82. unsigned int stride; // 被解码的位图的跨度
  83. } DEC_FRAME;
  84. // 解码器设置
  85. typedef struct _DEC_SET_
  86. {
  87. int postproc_level; // 有效间隔在[0..100]内
  88. } DEC_SET;
  89. /**
  90.  *
  91. **/
  92. // decore()函数的原型,是主要的解码器引擎的入口
  93. int STDCALL decore(
  94. unsigned long handle, // 调用实体的句柄,必需是唯一的
  95. unsigned long dec_opt, // 解码器的项,参见下列参数
  96. void *param1, // 依赖于dec_opt
  97. void *param2); // 依赖于dec_opt
  98. #endif // _DECORE_H_
  99. #ifdef __cplusplus
  100. }
  101. #endif