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

Audio

开发平台:

Visual C++

  1. /*****************************************************************************
  2.  * frame.h: h264 encoder library
  3.  *****************************************************************************
  4.  * Copyright (C) 2003 Laurent Aimar
  5.  * $Id: frame.h,v 1.1 2004/06/03 19:27:06 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 _FRAME_H
  24. #define _FRAME_H 1
  25. //#include <inttypes.h>  //lsp060308
  26. typedef struct
  27. {
  28.     /* */
  29.     int     i_poc;
  30.     int     i_type;
  31.     int     i_qpplus1;
  32.     int64_t i_pts;
  33.     int     i_frame;    /* Presentation frame number */
  34.     int     i_frame_num; /* Coded frame number */
  35.     int     b_kept_as_ref;
  36.     /* YUV buffer */
  37.     int     i_plane;
  38.     int     i_stride[4];
  39.     int     i_lines[4];
  40.     int     i_stride_lowres;
  41.     int     i_lines_lowres;
  42.     uint8_t *plane[4];
  43.     uint8_t *filtered[4]; /* plane[0], H, V, HV */
  44.     uint8_t *lowres[4]; /* half-size copy of input frame: Orig, H, V, HV */
  45.     uint16_t *integral;
  46.     /* for unrestricted mv we allocate more data than needed
  47.      * allocated data are stored in buffer */
  48.     void    *buffer[12];
  49.     /* motion data */
  50.     int8_t  *mb_type;
  51.     int16_t (*mv[2])[2];
  52.     int8_t  *ref[2];
  53.     int     i_ref[2];
  54.     int     ref_poc[2][16];
  55.     /* for adaptive B-frame decision.
  56.      * contains the SATD cost of the lowres frame encoded in various modes
  57.      * FIXME: how big an array do we need? */
  58.     int     i_cost_est[16][16];
  59.     int     i_intra_mbs[16];
  60. } x264_frame_t;
  61. typedef void (*x264_deblock_inter_t)( uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0 );
  62. typedef void (*x264_deblock_intra_t)( uint8_t *pix, int stride, int alpha, int beta );
  63. typedef struct
  64. {
  65.     x264_deblock_inter_t deblock_v_luma;
  66.     x264_deblock_inter_t deblock_h_luma;
  67.     x264_deblock_inter_t deblock_v_chroma;
  68.     x264_deblock_inter_t deblock_h_chroma;
  69.     x264_deblock_intra_t deblock_v_luma_intra;
  70.     x264_deblock_intra_t deblock_h_luma_intra;
  71.     x264_deblock_intra_t deblock_v_chroma_intra;
  72.     x264_deblock_intra_t deblock_h_chroma_intra;
  73. } x264_deblock_function_t;
  74. x264_frame_t *x264_frame_new( x264_t *h );
  75. void          x264_frame_delete( x264_frame_t *frame );
  76. void          x264_frame_copy_picture( x264_t *h, x264_frame_t *dst, x264_picture_t *src );
  77. void          x264_frame_expand_border( x264_frame_t *frame );
  78. void          x264_frame_expand_border_filtered( x264_frame_t *frame );
  79. void          x264_frame_expand_border_lowres( x264_frame_t *frame );
  80. void          x264_frame_expand_border_mod16( x264_t *h, x264_frame_t *frame );
  81. void          x264_frame_deblocking_filter( x264_t *h, int i_slice_type );
  82. void          x264_frame_filter( int cpu, x264_frame_t *frame );
  83. void          x264_frame_init_lowres( int cpu, x264_frame_t *frame );
  84. void          x264_deblock_init( int cpu, x264_deblock_function_t *pf );
  85. #endif