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.pswp.cn/news/455204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455204.shtml
英文地址,請注明出處:http://en.pswp.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…