⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp4v.h

📁 经典的MP4编解码核心库
💻 H
字号:
#ifndef _MP4V_H_
#define _MP4V_H_

#ifdef __cplusplus
extern "C" {
#endif 

// API Version: 1.01
#define API_VERSION ((1 << 16) | 1)

// Quant type
#define MP4V_H263QUANT			0
#define MP4V_MPEGQUANT			1

// colorspaces
#define MP4V_CSP_YV12	0
#define MP4V_CSP_YUY2	1
#define MP4V_CSP_UYVY	2
#define MP4V_CSP_I420	3
#define MP4V_CSP_RGB24 	4
#define MP4V_CSP_YVYU	5
#define MP4V_CSP_RGB32 	6
#define MP4V_CSP_RGB555 7
#define MP4V_CSP_RGB565 8
#define MP4V_CSP_NULL 	-1

#define MP4V_CSP_HFLIP	0x40000000	// horizontal flip flag
#define MP4V_CSP_VFLIP	0x80000000	// vertical flip flag

// processing is fine
#define MP4V_OK				0
// error message
#define MP4V_ERR_FAIL		-1
#define	MP4V_ERR_MEMORY		1
#define MP4V_ERR_FORMAT		2
#define MP4V_ERR_DONTDRAW	3

// Rate Control mode
#define CONSTANT_BITRATE				0
#define VBR_SIZE						1
#define VBR_QUALITY						2
#define VBR_QUANTIZER					3

typedef struct 
{
	int cpu_flags;
	char cpu_brand[64];
	int api_version;
} MP4V_INIT_PARAM;

int RMP4_codec_initialize(void *handle, int opt,
						  void *param1, void *param2);

int RMP4_decoder(void * handle,	int opt, void * param1);

int RMP4_encoder(void * handle,	int opt, void * param);


// ==========================================
//	decoder
// ==========================================
typedef struct 
{
	void *handle;
	int width;
	int height;
	int colorspace;
} MP4V_DEC_PARAM;


typedef struct
{
	int colorspace;		// [in]
	int stride;			// [in] width of output frame
	int length;			// [in] bitstream length

	void * bitstream;	// [in] bitstream length
	void * image;		// [in]/[out] image pointer
} MP4V_DEC_FRAME;		// to decode one frame


// decoder options
#define MP4V_DEC_CREATE		0
#define MP4V_DEC_DECODE		1
#define MP4V_DEC_DESTROY	2


// ==========================================
//	encoder
// ==========================================
typedef struct
{
	void * handle;			// [out] encoder instance handle
	int width;
	int height;

	int quant_type;			// H.263 || MPEG

	int quant;				// [in] use for vbr_quantizer
	int quality;			// [in] use for vbr_quality

	int deinterlacing_enable;
	int bidirectional_encoding;

	int interlaced_coding;
	int top_field_first;
	int alternative_scan;

	int rc_mode;
	double rc_max_delay;	// maximum vbv_delay
	int adapt_quant;

	int fincr, fbase;		// frame increment, fbase. each frame = "fincr/fbase" seconds
	int bitrate;			// the bitrate of the target encoded stream, in bits/second
	int rc_buffersize;		// the rate control buffersize
	int max_quantizer;		// the upper limit of the quantizer
	int min_quantizer;		// the lower limit of the quantizer
	int max_key_interval;	// the maximum interval between key frames
						
} MP4V_ENC_PARAM;


typedef struct
{

	void * image;			// [in] image pointer, where the image is encoded
    int colorspace;			// [in] source colorspace

    int quant;				// [in] preset quantizer, for VBR/quantizer/quality
	void * bitstream;		// [in] bitstream pointer
    int intra;				// [in]	force intra frame 
							
	int length;				// [out] bitstream length (bytes)

} MP4V_ENC_FRAME;


#define MP4V_ENC_CREATE		0
#define MP4V_ENC_ENCODE		1
#define MP4V_ENC_DESTROY	2


#ifdef __cplusplus

}
#endif 

#endif /* _MP4V_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -