x264vfw.h
上传用户:hjq518
上传日期:2021-12-09
资源大小:5084k
文件大小:4k
源码类别:

Audio

开发平台:

Visual C++

  1. #ifndef _X264_VFW_H
  2. #define _X264_VFW_H
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <stdint.h>
  6. #include <windows.h>
  7. #include <vfw.h>
  8. #include <x264.h>
  9. #include "resource.h"
  10. /* Name */
  11. #define X264_NAME_L     L"x264"
  12. #define X264_DESC_L     L"x264 - H264/AVC encoder"
  13. /* Codec fcc */
  14. #define FOURCC_X264 mmioFOURCC('X','2','6','4')
  15. /* yuv 4:2:0 planar */
  16. #define FOURCC_I420 mmioFOURCC('I','4','2','0')
  17. #define FOURCC_IYUV mmioFOURCC('I','Y','U','V')
  18. #define FOURCC_YV12 mmioFOURCC('Y','V','1','2')
  19. /* yuv 4:2:2 packed */
  20. #define FOURCC_YUY2 mmioFOURCC('Y','U','Y','2')
  21. #define FOURCC_YUYV mmioFOURCC('Y','U','Y','V')
  22. #define X264_WEBSITE    "http://videolan.org/x264.html"
  23. /* CONFIG: vfw config
  24.  */
  25. typedef struct
  26. {
  27.     /********** ATTENTION **********/
  28.     int mode;                   /* Vidomi directly accesses these vars */
  29.     int bitrate;
  30.     int desired_size;           /* please try to avoid modifications here */
  31.     char stats[MAX_PATH];
  32.     /*******************************/
  33.     int i_2passbitrate;
  34.     int i_pass;
  35.     int b_fast1pass;    /* turns off some flags during 1st pass */    
  36.     int b_updatestats;  /* updates the statsfile during 2nd pass */
  37.     int i_frame_total;
  38.     /* Our config */
  39.     int i_refmax;
  40.     int i_keyint_max;
  41.     int i_keyint_min;
  42.     int i_scenecut_threshold;
  43.     int i_qp_min;
  44.     int i_qp_max;
  45.     int i_qp_step;
  46.     int i_qp;
  47.     int b_filter;
  48.     int b_cabac;
  49.     int b_i8x8;
  50.     int b_i4x4;
  51.     int b_psub16x16;
  52.     int b_psub8x8;
  53.     int b_bsub16x16;
  54.     int b_dct8x8;
  55.     int b_mixedref;
  56.     int i_bframe;
  57.     int i_subpel_refine;
  58.     int i_me_method;
  59.     int i_me_range;
  60.     int b_chroma_me;
  61.     int i_direct_mv_pred;
  62.     int i_threads;
  63.     int i_inloop_a;
  64.     int i_inloop_b;
  65.     int b_b_refs;
  66.     int b_b_wpred;
  67.     int i_bframe_bias;
  68.     int b_bframe_adaptive;
  69.     int i_key_boost;
  70.     int i_b_red;
  71.     int i_curve_comp;
  72.     int i_sar_width;
  73.     int i_sar_height;
  74.     int i_log_level;
  75.     /* vfw interface */
  76.     int b_save;
  77.     /* fourcc used */
  78.     char fcc[4+1];
  79.     int i_encoding_type;
  80.     int i_trellis;
  81.     int b_bidir_me;
  82.     int i_noise_reduction;
  83. } CONFIG;
  84. /* CODEC: vfw codec instance
  85.  */
  86. typedef struct
  87. {
  88.     CONFIG config;
  89.     /* handle */
  90.     x264_t *h;
  91.     /* error console handle */
  92.     HWND *hCons;
  93.     /* XXX: needed ? */
  94.     unsigned int fincr;
  95.     unsigned int fbase;
  96. } CODEC;
  97. /* Compress functions */
  98. LRESULT compress_query(CODEC *, BITMAPINFO *, BITMAPINFO *);
  99. LRESULT compress_get_format(CODEC *, BITMAPINFO *, BITMAPINFO *);
  100. LRESULT compress_get_size(CODEC *, BITMAPINFO *, BITMAPINFO *);
  101. LRESULT compress_frames_info(CODEC *, ICCOMPRESSFRAMES *);
  102. LRESULT compress_begin(CODEC *, BITMAPINFO *, BITMAPINFO *);
  103. LRESULT compress_end(CODEC *);
  104. LRESULT compress(CODEC *, ICCOMPRESS *);
  105. /* config functions */
  106. void config_reg_load( CONFIG * config );
  107. void config_reg_save( CONFIG * config );
  108. static void tabs_enable_items( HWND hDlg, CONFIG * config );
  109. static void tabs_update_items( HWND hDlg, CONFIG * config );
  110. /* Dialog callbacks */
  111. BOOL CALLBACK callback_main ( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
  112. BOOL CALLBACK callback_tabs( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
  113. BOOL CALLBACK callback_about( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
  114. BOOL CALLBACK callback_err_console( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
  115. /* Dll instance */
  116. extern HINSTANCE g_hInst;
  117. #if defined(_DEBUG)
  118. #include <stdio.h> /* vsprintf */
  119. #define DPRINTF_BUF_SZ  1024
  120. static __inline void DPRINTF(char *fmt, ...)
  121. {
  122.     va_list args;
  123.     char buf[DPRINTF_BUF_SZ];
  124.     va_start(args, fmt);
  125.     vsprintf(buf, fmt, args);
  126.     OutputDebugString(buf);
  127. }
  128. #else
  129. static __inline void DPRINTF(char *fmt, ...) { }
  130. #endif
  131. #endif