?? encoder.h
字號:
/*****************************************************************************
*
* XVID MPEG-4 VIDEO CODEC
* - Encoder header -
*
* This program is an implementation of a part of one or more MPEG-4
* Video tools as specified in ISO/IEC 14496-2 standard. Those intending
* to use this software module in hardware or software products are
* advised that its use may infringe existing patents or copyrights, and
* any such use would be at such party's own risk. The original
* developer of this software module and his/her company, and subsequent
* editors and their companies, will have no liability for use of this
* software or modifications or derivatives thereof.
*
* This program is free software ; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
****************************************************************************/
/*****************************************************************************
*
* History
*
* - 13.06.2002 Added legal header
* - 22.08.2001 Added support for EXT_MODE encoding mode
* support for EXTENDED API
* - 22.08.2001 fixed bug in iDQtab
*
* $Id: encoder.h,v 1.13 2002/06/24 09:53:17 suxen_drol Exp $
*
****************************************************************************/
#ifndef _ENCODER_H_
#define _ENCODER_H_
#include "user_macro.h"
#ifndef CORE_DEBUG
#define CORE_DEBUG
#endif
#include "xvid.h"
#include "portab.h"
#include "global.h"
#include "image/image.h"
#include "utils/ratecontrol.h"
#include "user_macro.h"
/*****************************************************************************
* Constants
****************************************************************************/
/* Quatization type */
#define H263_QUANT 0
#define MPEG4_QUANT 1
/* Indicates no quantizer changes in INTRA_Q/INTER_Q modes */
#define NO_CHANGE 64
/*****************************************************************************
* Types
****************************************************************************/
typedef int bool;
/*11-8
typedef enum
{
I_VOP = 0,
P_VOP = 1,
B_VOP = 2
}
VOP_TYPE;*/
#define I_VOP 0
#define P_VOP 1
#define B_VOP 2
/*****************************************************************************
* Structures
****************************************************************************/
typedef struct
{
uint32_t width;
uint32_t height;
uint32_t edged_width;
uint32_t edged_height;
uint32_t mb_width;
uint32_t mb_height;
/* frame rate increment & base */
uint32_t fincr;
uint32_t fbase;
/* rounding type; alternate 0-1 after each interframe */
/* 1 <= fixed_code <= 4
automatically adjusted using motion vector statistics inside
*/
/* vars that not "quite" frame independant */
uint32_t m_quant_type;
uint32_t m_rounding_type;
uint32_t m_fcode;
/* HINTINFO *hint;*/
}
MBParam;
typedef struct
{
uint32_t quant;
/*whq,2002.12.18,add two param,dcscaler for chrom and lum*/
uint32_t chrom_dcscaler;
uint32_t lum_dcscaler;
/*whq,2002.12.18,add two param,dcscaler for chrom and lum*/
uint32_t motion_flags;
uint32_t global_flags;
/* 11-8
VOP_TYPE coding_type;*/
uint32_t coding_type;
uint32_t rounding_type;
uint32_t fcode;
/* uint32_t bcode;*/
IMAGE image;
MACROBLOCK *mbs;
}
FRAMEINFO;
typedef struct
{
int iTextBits;
float fMvPrevSigma;
int iMvSum;
int iMvCount;
int kblks;
int mblks;
int ublks;
}
Statistics;
typedef struct
{
MBParam mbParam;
int iFrameNum;
int iMaxKeyInterval;
int bitrate;
/* images*/
FRAMEINFO *current;
FRAMEINFO *reference;
FRAMEINFO *construct;
#ifdef _DEBUG_PSNR
IMAGE sOriginal;
#endif
IMAGE vInterH;
IMAGE vInterV;
/* IMAGE vInterVf;*//* no use */
IMAGE vInterHV;
/* IMAGE vInterHVf;*//* no use */
Statistics sStat;
int rc_type; /*0-1表示使用位率控制模型0-為高位率模型,1-為低位率模型*/
RCQ2 rc;
RateControl rate_control;
}
Encoder;
/*****************************************************************************
* Inline functions
****************************************************************************/
/*
static __inline uint8_t
get_fcode(uint16_t sr)
{
if (sr <= 16)
return 1;
else if (sr <= 32)
return 2;
else if (sr <= 64)
return 3;
else if (sr <= 128)
return 4;
else if (sr <= 256)
return 5;
else if (sr <= 512)
return 6;
else if (sr <= 1024)
return 7;
else
return 0;
}
*/
/*****************************************************************************
* Prototypes
****************************************************************************/
/*void init_encoder(uint32_t cpu_flags);*/
int encoder_create(XVID_ENC_PARAM * pParam);
int encoder_destroy(Encoder * pEnc);
int encoder_encode(Encoder * pEnc,
XVID_ENC_FRAME * pFrame);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -