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

Audio

开发平台:

Visual C++

  1. /*****************************************************************************
  2.  * macroblock.h: h264 encoder library
  3.  *****************************************************************************
  4.  * Copyright (C) 2003 Laurent Aimar
  5.  * $Id: macroblock.h,v 1.1 2004/06/03 19:27:08 fenrir Exp $
  6.  *
  7.  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  22.  *****************************************************************************/
  23. #ifndef _ENCODER_MACROBLOCK_H
  24. #define _ENCODER_MACROBLOCK_H 1
  25. #include "common/macroblock.h"
  26. void x264_rdo_init( );
  27. int x264_macroblock_probe_skip( x264_t *h, int b_bidir );
  28. static inline int x264_macroblock_probe_pskip( x264_t *h )
  29.     { return x264_macroblock_probe_skip( h, 0 ); }
  30. static inline int x264_macroblock_probe_bskip( x264_t *h )
  31.     { return x264_macroblock_probe_skip( h, 1 ); }
  32. void x264_macroblock_encode      ( x264_t *h );
  33. void x264_macroblock_write_cabac ( x264_t *h, x264_cabac_t *cb );
  34. void x264_macroblock_write_cavlc ( x264_t *h, bs_t *s );
  35. void x264_cabac_mb_skip( x264_t *h, int b_skip );
  36. void x264_quant_4x4_trellis( x264_t *h, int16_t dct[4][4], int i_quant_cat,
  37.                              int i_qp, int i_ctxBlockCat, int b_intra );
  38. void x264_quant_8x8_trellis( x264_t *h, int16_t dct[8][8], int i_quant_cat,
  39.                              int i_qp, int b_intra );
  40. void x264_noise_reduction_update( x264_t *h );
  41. void x264_denoise_dct( x264_t *h, int16_t *dct );
  42. static inline int array_non_zero( int *v, int i_count )
  43. {
  44.     int i;
  45.     for( i = 0; i < i_count; i++ )
  46.         if( v[i] ) return 1;
  47.     return 0;
  48. }
  49. static inline int array_non_zero_count( int *v, int i_count )
  50. {
  51.     int i;
  52.     int i_nz;
  53.     for( i = 0, i_nz = 0; i < i_count; i++ )
  54.         if( v[i] )
  55.             i_nz++;
  56.     return i_nz;
  57. }
  58. #endif