设为首页 加入收藏

TOP

14.2.1 MPEG-4编/解码设计与剖析(11)
2013-10-07 00:42:10 来源: 作者: 【 】 浏览:60
Tags:14.2.1 MPEG-4 解码 设计 剖析

14.2.1  MPEG-4编/解码设计与剖析(11)

3)销毁解码器实例

对应创建编码器工作,释放申请的所有内存,删除解码器句柄。

int decoder_destroy(DECODER * dec)
{
xvid_free(dec->last_mbs);           //释放宏块结构体
xvid_free(dec->mbs);                 //释放宏块结构体
image_destroy(&dec->refn[0], dec->edged_width, dec->edged_height);
//释放参考帧0的空间
image_destroy(&dec->refn[1], dec->edged_width, dec->edged_height);
//释放参考帧1的空间
image_destroy(&dec->tmp, dec->edged_width, dec->edged_height);
//释放临时帧的空间
image_destroy(&dec->cur, dec->edged_width, dec->edged_height);
//释放当前帧的空间
xvid_free(dec);                        //释放、删除解码器
return 0;
}
XviD的MPEG-4视频编/解码算法结构清晰、定点算法,非常适合硬件平台来实现。可以说XviD是目前MPEG-4算法开源代码中最优秀的工程实现。一方面XviD已经针对主流的CPU做了汇编优化,另一方面为其他平台移植提供了技术方向。如表14-1所示是XviD MPEG-4视频编/解码算法的底层模块。

表14-1  XviD MPEG-4视频CODEC底层模块

核心模块< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

编码

解码

功能描述

transfer_8to16copy

×

 

图像精度扩展,816

transfer_16to8copy

×

×

图像像素嵌位8位(0255

transfer_8to16sub

×

 

图像块相减,并扩展精度

transfer_16to8add

×

×

差值加到图像,并嵌位到8

transfer8x8_copy

×

 

块复制

quant_h263_intra

×

 

Intra块的h263方式量化

quant_h263_inter

×

 

Intrer块的h263方式量化

dequant_h263_intra

×

×

Intra块的h263方式反量化

dequant_h263_inter

×

×

Intrer块的h263方式反量化

Fdct

×

 

前向DCT

Idct

×

×

反向DCT

interpolate8x8_halfpel_h

×

×

水平1/2像素差值

interpolate8x8_halfpel_v

×

×

垂直1/2像素差值

interpolate8x8_halfpel_hv

×

×

斜角1/2像素差值

sad16

×

 

计算图像宏块的SAD

sad8

×

 

计算图像块的SAD

dev16

×

 

计算图像宏块的平均值的偏差

calc_cbp

×

 

计算6个块的CBP

从表14-1分析可以清晰地看出,编码器的工作包含了解码器的任务。为提高CODEC的执行效率,这些底层模块必须进行汇编优化,下面就介绍底层模块的优化方法。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇14.2.2 MMX/SSE 2实现XviD CODEC.. 下一篇14.2.1 MPEG-4编/解码设计与剖析..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: