H.264 解码器函数流程
来源:互联网 发布:c语言null包含头文件 编辑:程序博客网 时间:2024/05/29 06:50
..........
while (decode_one_frame(img, input, snr) != EOS)
..........//进入解码阶段,对每一帧进行解码
.
.
.while ((currSlice->next_header != EOS && currSlice->next_header != SOP))
{
current_header = read_new_slice();
if (current_header == EOS)
{
exit_picture();
return EOS;
}
decode_slice(img, inp, current_header);
img->newframe = 0;
img->current_slice_nr++;
}//对每一帧的slice进行解码,silce是由宏块构成的,接下来,应该是对以宏块的单元进行解码
.
.
.
.........
// decode main slice information
if ((current_header == SOP || current_header == SOS) && currSlice->ei_flag == 0)
decode_one_slice(img,inp);
........
.
.
.
.......
while (end_of_slice == FALSE) // loop over macroblocks
{
#if TRACE
fprintf(p_trace,"/n*********** POC: %i (I/P) MB: %i Slice: %i Type %d **********/n", img->ThisPOC, img->current_mb_nr, img->current_slice_nr, img->type);
#endif
// Initializes the current macroblock
start_macroblock(img,inp, img->current_mb_nr);
// Get the syntax elements from the NAL
read_flag = read_one_macroblock(img,inp);
decode_one_macroblock(img,inp);
if(img->MbaffFrameFlag && dec_picture->mb_field[img->current_mb_nr])
{
img->num_ref_idx_l0_active >>= 1;
img->num_ref_idx_l1_active >>= 1;
}
ercWriteMBMODEandMV(img,inp);
end_of_slice=exit_macroblock(img,inp,(!img->MbaffFrameFlag||img->current_mb_nr%2));
}
.......
while (decode_one_frame(img, input, snr) != EOS)
..........//进入解码阶段,对每一帧进行解码
.
.
.while ((currSlice->next_header != EOS && currSlice->next_header != SOP))
{
current_header = read_new_slice();
if (current_header == EOS)
{
exit_picture();
return EOS;
}
decode_slice(img, inp, current_header);
img->newframe = 0;
img->current_slice_nr++;
}//对每一帧的slice进行解码,silce是由宏块构成的,接下来,应该是对以宏块的单元进行解码
.
.
.
.........
// decode main slice information
if ((current_header == SOP || current_header == SOS) && currSlice->ei_flag == 0)
decode_one_slice(img,inp);
........
.
.
.
.......
while (end_of_slice == FALSE) // loop over macroblocks
{
#if TRACE
fprintf(p_trace,"/n*********** POC: %i (I/P) MB: %i Slice: %i Type %d **********/n", img->ThisPOC, img->current_mb_nr, img->current_slice_nr, img->type);
#endif
// Initializes the current macroblock
start_macroblock(img,inp, img->current_mb_nr);
// Get the syntax elements from the NAL
read_flag = read_one_macroblock(img,inp);
decode_one_macroblock(img,inp);
if(img->MbaffFrameFlag && dec_picture->mb_field[img->current_mb_nr])
{
img->num_ref_idx_l0_active >>= 1;
img->num_ref_idx_l1_active >>= 1;
}
ercWriteMBMODEandMV(img,inp);
end_of_slice=exit_macroblock(img,inp,(!img->MbaffFrameFlag||img->current_mb_nr%2));
}
.......
- H.264 解码器函数流程
- 缺少 H.264解码器
- H.264解码器原理
- H.264开源解码器评测
- 转: H.264开源解码器评测
- 【转】H.264开源解码器评测
- H.264开源解码器评测
- 【zz】H.264开源解码器评测
- 基于H.264解码器的软件优化
- H.264开源解码器评测
- H.264开源解码器评测
- H.264开源解码器评测
- H.264开源解码器评测
- [转]H.264开源解码器评测
- H.264开源解码器评测
- H.264开源解码器评测
- FFmpeg的H.264解码器源代码简单分析:解码器主干部分
- H.264解码器中参考图像的管理
- C++之赋值操作符
- C++之类型转换构造函数
- linq 基本操作(删除、更新、插入)
- 08/03/22
- 类C语言词法分析器的设计--c++实现
- H.264 解码器函数流程
- 用MASM32写的 HttpRead 0.0.0001 beta3
- JavaScript 中变态的 parseInt
- 【爆笑】洋腔洋调讲中文
- 正则表达式
- 用OpenInventor实现的NeHe OpenGL教程-第二十二课
- LinQ的级联操作
- 函数传指针
- 实创个人理财系统 最新破解版 随官方更新