📄 h264_enc.h
字号:
#ifndef _H264_ENC_H
#define _H264_ENC_H 1
#ifdef __cplusplus
extern "C" {
#endif
#define X264_CSP_I420 0x0001 // yuv 4:2:0 planar
#define X264_CSP_I422 0x0002 // yuv 4:2:2 planar
#define X264_CSP_I444 0x0003 // yuv 4:4:4 planar
#define X264_CSP_YV12 0x0004 // yuv 4:2:0 planar
#define X264_CSP_YUYV 0x0005 // yuv 4:2:2 packed
#define X264_CSP_RGB 0x0006 // rgb 24bits
#define X264_CSP_BGR 0x0007 // bgr 24bits
#define X264_CSP_BGRA 0x0008 // bgr 32bits
#define X264_CSP_VFLIP 0x1000 // 图像是否倒立
// 颜色设置举例:
// 如果图像的颜色空间 YUV420, 则设置 csp = X264_CSP_I420
// 如果图像的颜色空间 RGB24, 则设置 csp = X264_CSP_RGB
// 如果输入RGB的图像解码出来颜色不对,则请尝试 X264_CSP_BGR
// 如果图像的颜色空间 RGB24, 并且图像是倒立的,则设置 csp = (X264_CSP_RGB | X264_CSP_VFLIP);
//
typedef struct CodecContext
{
int width; // in: 图像宽
int height; // in: 图像高
int csp; // in: 设置颜色空间
unsigned char * data_in; // in: 原始数据
int data_in_size; // in: 一帧原始数据的大小
unsigned char * buffer; // out: 编码数据缓冲区
int buffer_in_size; // in: 编码数据缓冲区空间大小
int buffer_out_size; // out: 编码后码流的有效长度
int frame_rate; // in: 帧率
int key_frame_interval; // in: 设置最大关键帧间距,若等于0则取默认值
int rc_mode; // in: 0:vbr, 1: cbr
int bit_rate; // in: 设置比特率,仅在 cbr 模式下有效
int quality; // in: 设置质量,仅在 vbr 模式下有效
int key_frame; // out: 是否关键帧,0为非关键帧,1为是关键帧
void * private_data; // 内部私有数据
} CodecContext;
int H264EncoderOpen(CodecContext * ctx);
int H264EncoderEncode(CodecContext * ctx);
void H264EncoderClose(CodecContext * ctx);
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -