📄 initial.c
字号:
#include "initial.h"
short InitialEncoder(Encoder* pEncoder)
{
int iSize;
short iMBWidth, iMBHeight;
short iWidth, iHeight;
short iExtWidth, iExtHeight;
short iExtWidthHalf;
iWidth = pEncoder->iWidth;
iHeight = pEncoder->iHeight;
iExtWidth = iWidth + 2 * IMAGE_EDGE;
iExtHeight = iHeight + 2 * IMAGE_EDGE;
iExtWidthHalf = iExtWidth/2;
pEncoder->pForFrameInfo = &pEncoder->frameinfo[0];
pEncoder->pCurFrameInfo = &pEncoder->frameinfo[1];
pEncoder->pVol = &pEncoder->vol;
iSize = iWidth * iHeight + iWidth * iHeight/2;
iSize = iExtWidth * iExtHeight;
//临时数据空间******************************************************
pEncoder->pForImage8 = &pEncoder->image8[0];
pEncoder->pCurImage8 = &pEncoder->image8[1];
pEncoder->pCurImage8->Y = malloc(sizeof(unsigned char ) * iSize);
pEncoder->pCurImage8->Cb = malloc(sizeof(unsigned char) * iSize/4);
pEncoder->pCurImage8->Cr = malloc(sizeof(unsigned char) * iSize/4);
if (pEncoder->pCurImage8->Y == NULL || pEncoder->pCurImage8->Cb == NULL || pEncoder->pCurImage8->Cr == NULL)
{
printf("pEncoder->pCurImage8 Memory Allocate Error!\n");
exit(-1);
}
//将扩边前
pEncoder->pCurImage8->Y += IMAGE_EDGE * iExtWidth + IMAGE_EDGE;
pEncoder->pCurImage8->Cb += IMAGE_EDGE_HALF * iExtWidthHalf + IMAGE_EDGE_HALF;
pEncoder->pCurImage8->Cr += IMAGE_EDGE_HALF * iExtWidthHalf + IMAGE_EDGE_HALF;
pEncoder->pForImage8->Y = malloc(sizeof(unsigned char) * iSize);
pEncoder->pForImage8->Cb = malloc(sizeof(unsigned char) * iSize/4);
pEncoder->pForImage8->Cr = malloc(sizeof(unsigned char) * iSize/4);
if (pEncoder->pForImage8->Y == NULL || pEncoder->pForImage8->Cb == NULL || pEncoder->pForImage8->Cr == NULL)
{
printf("pEncoder->pForImage8 Memory Allocate Error!\n");
exit(-1);
}
pEncoder->pForImage8->Y += IMAGE_EDGE * iExtWidth + IMAGE_EDGE;
pEncoder->pForImage8->Cb += IMAGE_EDGE_HALF * iExtWidthHalf + IMAGE_EDGE_HALF;
pEncoder->pForImage8->Cr += IMAGE_EDGE_HALF * iExtWidthHalf + IMAGE_EDGE_HALF;
iMBWidth = iWidth / 16;
iMBHeight = iHeight / 16;
iSize = iMBWidth * iMBHeight;
pEncoder->pCurFrameInfo->pMB = (MacroBlock*)malloc(sizeof(MacroBlock)* iSize);
if (pEncoder->pCurFrameInfo->pMB == NULL)
{
printf("pEncoder->pCurFrameInfo->pMB Memory Allocate Error!\n");
exit(-1);
}
pEncoder->pForFrameInfo->pMB = (MacroBlock*)malloc(sizeof(MacroBlock)* iSize);
if (pEncoder->pForFrameInfo->pMB == NULL)
{
printf("pEncoder->pForFrameInfo->pMB Memory Allocate Error!\n");
exit(-1);
}
/* initial encoder information */
pEncoder->iFrameNo = 0;
pEncoder->pVol->profile_and_level_indication = 1;
pEncoder->pVol->is_visual_object_identifier = 0;
pEncoder->pVol->visual_object_verid = 0;
pEncoder->pVol->visual_object_priority = 0;
pEncoder->pVol->visual_object_type = Visual_Object_Type_Video;
pEncoder->pVol->random_accessible_vol = 0;
pEncoder->pVol->video_object_type_indication = 1;
pEncoder->pVol->is_object_layer_identifier = 0;
pEncoder->pVol->video_object_layer_verid = 1;
pEncoder->pVol->video_object_layer_priority = 0;
pEncoder->pVol->aspect_ratio_info = 1;
// pEncoder->pVol->par_width =
// pEncoder->pVol->par_height =
pEncoder->pVol->vol_control_parameters = 1;
pEncoder->pVol->chroma_format = 1;
pEncoder->pVol->low_delay = 1;
pEncoder->pVol->vbv_parameters = 0;
// pEncoder->pVol->video_object_layer_shape_extension =
pEncoder->pVol->vop_time_increment_resolution = pEncoder->iFrameRate;
pEncoder->pVol->fixed_vop_rate = 1;
pEncoder->pVol->fixed_vop_time_increment = 1;
pEncoder->pVol->interlaced = 0;
pEncoder->pVol->obmc_disable = 1;
pEncoder->pVol->sprite_enable = 0;
pEncoder->pVol->not_8_bit = 0;
pEncoder->pVol->quant_precion = 5;
pEncoder->pVol->bits_per_pixel = 8;
pEncoder->pVol->scalability = 0;
pEncoder->pVol->quant_type = 0;
pEncoder->pVol->load_intra_quant_mat = 0;
pEncoder->pVol->load_inter_quant_mat = 0;
pEncoder->pVol->quarter_sample = 0;
pEncoder->pVol->complexity_estimation_disable = 1;
pEncoder->pVol->resync_marker_disable = 1;
pEncoder->pVol->data_partitioned = 0;
pEncoder->pVol->reversible_vlc = 0;
pEncoder->pVol->video_object_layer_width = iWidth;
pEncoder->pVol->video_object_layer_height = iHeight;
pEncoder->pVol->iExtWidth = pEncoder->pVol->video_object_layer_width + 2 * IMAGE_EDGE;
pEncoder->pVol->iExtHeight = pEncoder->pVol->video_object_layer_height + 2 * IMAGE_EDGE;
/* initial time information */
pEncoder->iCurEncodeTime = 0;
pEncoder->iLastRefEncodeTime = 0;
pEncoder->iNewRefDisplayTime = 0;
pEncoder->iNewRefDisplayTimeBase = 0;
pEncoder->iOldRefDisplayTime = 0;
pEncoder->iOldRefDisplayTimeBase = 0;
pEncoder->pForFrameInfo->vop_time_increment = 0;
pEncoder->pForFrameInfo->dCurEncodeTime = 0.0;
pEncoder->pForFrameInfo->iCurDisplayTime = 0;
pEncoder->pForFrameInfo->iCurEncodeTime = 0;
pEncoder->pCurFrameInfo->dCurEncodeTime = 0.0;
pEncoder->pCurFrameInfo->iCurDisplayTime = 0;
pEncoder->pCurFrameInfo->iCurEncodeTime = 0;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -