JM8.5中的7种宏块模式问题

JM8.5中的7种宏块模式问题 收藏
Outline:

1、  CFG文件中有关可变尺寸宏块模式的相关选项
2、  7种宏块模式对应的数值常量
3、  7种宏块模式被分成宏块和亚宏块
4、  如何对宏块和亚宏块的运动估计,采用一个共同的函数来处理
5、  遗留问题

 1、CFG文件中有关可变尺寸宏块模式的相关选项

###############################################################################
#Encoder Control
###############################################################################
InterSearch16x16      =  1  # Inter block search 16x16 (0=disable, 1=enable)
InterSearch16x8       =  1  # Inter block search 16x8  (0=disable, 1=enable)
InterSearch8x16       =  1  # Inter block search  8x16 (0=disable, 1=enable)
InterSearch8x8        =  1  # Inter block search  8x8  (0=disable, 1=enable)
InterSearch8x4        =  1  # Inter block search  8x4  (0=disable, 1=enable)
InterSearch4x8        =  1  # Inter block search  4x8  (0=disable, 1=enable)
InterSearch4x4        =  1  # Inter block search  4x4  (0=disable, 1=enable)

解释:

各种宏块尺寸可以在程序外部进行选择。

2、  7种宏块模式对应的数值常量

各种宏块模式对应的数值常量如下:
16×16-1     16×8-2       8×16-3       8×8-4    8×4-5     4×8-6      4×4-7 

以上的数值常量的rdopt.c的encode_one_macroblock()中的valid[]数组和mode变量中会用到,另外在mv_search.c的PartitionMotionSearch()中的blocktype变量也会用到。

 

3、   7种宏块模式被分成宏块和亚宏块

16x16, 16x8, 8x16(,8×8)被称为宏块级,而8×8,8×4,4×8,4×4被称为亚宏块级。
所用到的函数是:encode_one_macroblock(),rdopt.c
该函数的作用是编码一个宏块(包括帧间、帧内、帧内预测的方式)。
其中重要的程序段如下:
//宏块级运动估计
//===== MOTION ESTIMATION FOR 16x16, 16x8, 8x16 BLOCKS =====
for (min_cost=1<<20, best_mode=1, mode=1; mode<4; mode++)
{
if (valid[mode])//对应于程序外部(即CFG文件中)的设置
{
//对于16×16,MB只分一个块;对于16×8和8×16,MB被分成两个块
for (cost=0, block=0; block<(mode==1?1:2); block++)
{
//块匹配!!!lambda_motion用来求运动矢量消耗的码率
PartitionMotionSearch (mode, block, lambda_motion);
//亚宏块级运动估计
if (valid[P8x8])
{
//=====  LOOP OVER POSSIBLE CODING MODES FOR 8x8 SUB-PARTITION  =====
for (min_cost8x8=(1<<20), min_rdcost=1e30, index=(bframe?0:1); index<5; index++)
{
if (valid[mode=b8_mode_table[index]])//b8_mode_table[6] = {0, 4, 5, 6, 7};
{
curr_cbp_blk = 0;
if (mode==0) //--- Direct Mode ---
{
} // if (mode==0)
else
{
//--- motion estimation for all reference frames ---
PartitionMotionSearch (mode, block, lambda_motion);
NOTE:从上面程序段中可以看出JM8.5中对7种宏块模式是采用全部遍历的方式,所以导致的计算复杂度很高。
4、  如何对宏块和亚宏块的运动估计,采用一个共同的函数来处理
从3中的程序可以看到,对于宏块和亚宏块级的运动估计,都采用了一个共同的函数:PartitionMotionSearch(), mv_search.c
其中重要的程序段如下:

……
//各种宏块模式下的子块的起始偏移量,相对4*4块来讲,这有利于运动矢量的存放
//[5]表示宏块的类型,[4]表示各种类型下的子块序号,最多子块情况为P8X8模式下有4个
static int  bx0[5][4] = {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,2,0,2}};
static int  by0[5][4] = {{0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,0,0,0}, {0,0,2,2}};
……
int   parttype  = (blocktype<4?blocktype:4);//亚宏块的parttype都设为4
//step_?是用来求4*4块级别的步长,

//由于parttype和blocktype的区别使得两组步长之间存在微妙的差异,为下面的循环做好了铺垫

int   step_h0   = (input->blc_size[ parttype][0]>>2);
int   step_v0   = (input->blc_size[ parttype][1]>>2);
int   step_h    = (input->blc_size[blocktype][0]>>2);
int   step_v    = (input->blc_size[blocktype][1]>>2);
//===== LOOP OVER SUB MACRO BLOCK partitions
//这里对于亚宏块的循环是自适应的,
//假如小于8*8块尺寸时,自动采取循环
for (v=by0[parttype][block8x8]; v<by0[parttype][block8x8]+step_v0; v+=step_v)
{
pic_block_y = img->block_y + v;
for (h=bx0[parttype][block8x8]; h<bx0[parttype][block8x8]+step_h0; h+=step_h)
{
……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python高级编程技巧

个人博客点这里 如何在列表,字典,集合中根据条件筛选数据 方法1:通过迭代来进行判断筛选 解决方案 函数式编程: 如何统计序列中元素的出现频度 解决方案:使用collections.Counter对象 将序列传入Counter的构造器,得到Counter对象是元素频度的字典 Counter.most_common(n)…

2016年安全身份识别主流趋势

安全身份识别解决方案商HID Global通过从不同行业市场的重要客户那里所获得的深刻洞察&#xff0c;以及公司最新解决方案在前瞻性合作伙伴和全球各地的终端用户中进行的试点项目与正式部署情况&#xff0c;确定了2016年最值得业界关注的安全趋势。HID Global 广阔的行业视角&am…

列出一个目录中所有文件及大小

package com.test.tree;import java.io.File;/*** 列出一个目录中所有的文件和他们的大小* author wyl**/ public class FileList {public void list(File f){ //文件根目录&#xff0c;深度为0list(f,0);}/*** * param f* param depth 为了显示文件的层级形式*/public void li…

多媒体音频格式解析WMA WAV OGG AAC APE FLAC

无论是MP3还是MP4&#xff0c;甚至手机和多媒体DC&#xff0c;产品所支持的各种格式往往让人眼花缭乱。特别是对于刚上手的新手玩家来说&#xff0c;各种格式都有哪些特性&#xff0c;在实际 使用当中有多少格式实用或者必须&#xff0c;其实有很多方面需要我们来系统的了解。这…

数据分析之pandas笔记

Pandas 一个用于表示表格类型的内容 课时4&#xff1a;jupyter21 分22 秒课时5&#xff1a;pandas的内容24 分31 秒课时6&#xff1a;series内容38 分19 秒课时7&#xff1a;dataframe25 分50 秒 # 载入pandas库 import pandas as pd import numpy as nps pd.Series([2,4,6…

Apache日志记录组件Log4j出现反序列化漏洞 黑客可以执行任意代码 所有2.x版本均受影响...

开源的东西用的人多了&#xff0c;自然漏洞就多。Apache用于日志记录的组件Log4j使用非常灵活&#xff0c;在相当多的开源项目中都有使用&#xff0c;此次漏洞影响所有Apache Log4j 2.*系列版本&#xff1a; Apache Log4j 2.0-alpha1 – Apache Log4j 2.8.1&#xff0c;使用Jav…

react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析

记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程&#xff0c;关键部分代码如下。首先在java后台中设置response中的参数&#xff1a;public void exportExcel(HttpServletResponse response, String fileName, String sheetName,List titleRow, List> dataRo…

Python常见的170道面试题全解析答案

个人博客点这里 语言特性 1. 谈谈对 Python 和其他语言的区别 答&#xff1a;Python 是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库&#xff0c;他是一门强类型的可移植、可扩展&#xff0c;可嵌入的解释型编程语言&#xff0c;属于动态语言。 …

WMA文件信息格式分析及代码

WMA文件信息格式分析及代码 收藏 ASF文件和WMA文件格式差不多。具体请看下面我写的代码。文件分析根据mplayer其中的asfhead.c提供的代码进行分析。mplayer只解除出了标准的wma头信息&#xff0c;其扩展信息并没有解析出来。代码如下. /*每一个WMA文件&#xff0c;它的头16个字…

[No0000101]JavaScript-基础课程1

JavaScript 是一种轻量级的编程语言&#xff0c;很容易学习&#xff0c;同时也是一种被广泛用于客户端Web开发的脚本语言。通过本课程学习&#xff0c;我们可以了解到JavaScript的基本语法知识&#xff0c;以及怎样使用它去创建简单的游戏和应用。 1.获取字符的长度 "youN…

研究人员发现Office Word 0Day攻击 这个漏洞绕过了word宏安全设置 绿盟科技、McAfee及FireEye发出警告...

这次的0Day漏洞确实很厉害&#xff0c;以往攻击者诱使用户点击Word文档&#xff0c;由于其中包含了恶意脚本&#xff0c;大多数需要用户启用了宏。但这次的漏洞不是&#xff0c;受害者无需启用宏&#xff0c;也会中招&#xff0c;而且漏洞覆盖Windows所有版本&#xff08;包括W…

秀米svg点击显示另一张图_SVG的雷,你踩过了没?

原标题&#xff1a;SVG的雷&#xff0c;你踩过了没&#xff1f;随着SVG互动布局的出现和在H5的应用越来越多&#xff0c;不少小伙伴们会想在秀米里上传自己制作的SVG图形。秀米的首页顶部教程收录了一篇关于SVG图形的讲解&#xff1a;「秀米的SVG图片」&#xff0c;里面主要介绍…

关于C10K问题详解-突破单机性能是高性能网络编程

本文转自:https://www.jianshu.com/p/ba7fa25d3590 C10K问题由来 随着互联网的普及&#xff0c;应用的用户群体几何倍增长&#xff0c;此时服务器性能问题就出现。最初的服务器是基于进程/线程模型。新到来一个TCP连接&#xff0c;就需要分配一个进程。假如有C10K&#xff0c;…

数据中心传输需求成以太网市场巨大推动力

近日&#xff0c;市场研究机构Infonetics作出评估称&#xff0c;数据中心以太网市场将迎来全面发展的势头&#xff0c;其驱动力则在于当前数据中心以太网络交换接口由10Gbps产品向25Gbps乃至50Gbps标准的大规模升级。 根据对2014年第三季度的市场销售情况研究&#xff0c;该公司…

Gina DLL

Windows的开机密码认证模块一般是由Gina DLL完成的。在NT/2000中交互式的登陆支持是由WinLogon调用GINA DLL实现的&#xff0c;GINA DLL提供了一个交互式的界面为用户登陆提供认证请求。1.Gina原理WinLogon会和GINA DLL进行交互&#xff0c;缺省是MSGINA.DLL(在System32目录下)…

ultilize什么意思_ultilize是什么意思

1. We also ultilize the supports of NSFC for other valuable researches.我们还利用基金支持&#xff0c;做了其他一些有价值的科研工作。2. Recover the second segment with all due haste, ultilize any means necessary.尽快取回第二部分&#xff0c;使用任何必要的手段…

HTML,CSS的class与id命名规则

个人博客点这里 最重要的部分先说(命名书写格式) 常见的格式有&#xff1a;连接符&#xff08;search-btn&#xff09;、下划线、全小&#xff08;searchbox&#xff09;、小驼峰&#xff08;searchBox&#xff09;。 现在用得多广泛的还是第一种使用连接符&#xff0c;易读…

主打“云安全” 迅雷系帝恩思登陆新三板

ZD至顶网安全频道 06月14日 综合消息&#xff1a; 6月14日上午&#xff0c;帝恩思(837018)敲响了登陆新三板的钟声。作为帝恩思的重要股东&#xff0c;迅雷&#xff08;NASDAQ:XNET&#xff09;CEO邹胜龙与帝恩斯董事长王宇杰、总经理许渊培等人一同参加了这一仪式。 帝恩斯是一…

UESTC 1636 梦后楼台高锁,酒醒帘幕低垂

题意&#xff1a;求一条路径&#xff0c;使得这条边连接1到n&#xff0c;求边权值的最大值与最小值的差 题解&#xff1a;最小生成树&#xff0c;对边权排序&#xff0c;可以枚举边的最大和最小的值&#xff0c;判断能否使得1和n连通 #include <bits/stdc.h> #define ll …

wav文件格式分析详解

wav文件格式分析详解 作者&#xff1a;曹京日期&#xff1a;2006年7月17日 一、综述 WAVE文件作为多媒体中使用的声波文件格式之一&#xff0c;它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写&#xff0c;每个WAVE文件的头四个字节便是“RIFF…