x264_macroblock_cache_load()

功能:完成將已編碼數據參數和待編碼數據裝入到h->mb.cache中,下圖是BUF中存儲的數據在以MB為單位的時候的存儲順序

x264_macroblock_cache_load( h, i_mb_x, i_mb_y );//是把當前宏塊的up宏塊和left宏塊的intra4x4_pred_mode,non_zero_count加載進來,放到一個數組里面,這個數組用來直接得到當前宏塊的左側和上面宏塊的相關值.要想得到當前塊的預測值,要先知道上面,左面的預測值,它的目的是替代getneighbour函數

----------------------計算各種類型宏塊的位置-------------------------------

int i_mb_xy = i_mb_y * h->mb.i_mb_stride + i_mb_x;

--得到MB位置,其中h->mb.i_mb_stride為原始數據以MB為單位的寬度

?

int i_mb_4x4 = 4*(i_mb_y * h->mb.i_b4_stride + i_mb_x);

--得到4x4MB位置,其中h->mb.i_b4_stride為原始數據以4x4MB為單位的寬度

?

int i_mb_8x8 = 2*(i_mb_y * h->mb.i_b8_stride + i_mb_x);

----得到8x8MB位置,其中h->mb.i_b8_stride為原始數據以8x8MB為單位的寬度

?

int i_top_y = i_mb_y - (1 << h->mb.b_interlaced);

--得到當前MB上一個MB的Y坐標

?

int i_top_xy = i_top_y * h->mb.i_mb_stride + i_mb_x;

--得到當前MB上面一個MB的位置

?

int i_top_4x4 = (4*i_top_y+3) * h->mb.i_b4_stride + 4*i_mb_x;

--得到當前4x4MB上面一個4x4MB的位置

int i_top_8x8 = (2*i_top_y+1) * h->mb.i_b8_stride + 2*i_mb_x;

--得到當前8x8MB上面一個8x8MB的位置

?

?

----------------------------裝入周圍宏塊的參數---------------------------------

??? --裝入TOP-MB的相關參數

?????? h->mb.i_mb_type_top = i_top_type= h->mb.type[i_top_xy];

--得到TOP-MB的類型

??????? h->mb.cache.i_cbp_top = h->mb.cbp[i_top_xy];

--得到TOP-MB的CBP

??????? h->mb.i_neighbour |= MB_TOP;

--標注當前MB的TOP-MB可用

MEM4(&h->mb.cache.intra4x4_pred_mode[x264_scan8[0] - 8]) = MEM4(&h->mb.intra4x4_pred_mode[i_top_xy][0]);

--裝入TOP-MB臨近當前MB的4個4X4子塊的預測模式

??????? MEM4(&h->mb.cache.non_zero_count[x264_scan8[0] - 8]) = MEM4(&h->mb.non_zero_count[i_top_xy][12]);

--裝入TOP-MB臨近當前MB的nzc編碼值

??? }

??? else

??? {--沒有有效的TOP-MB,則相關參數設置為不可用

?????? h->mb.i_mb_type_top = -1;

??????? h->mb.cache.i_cbp_top = -1;

??????? /* load intra4x4 */

??????? h->mb.cache.intra4x4_pred_mode[x264_scan8[0] - 8] =

??????? h->mb.cache.intra4x4_pred_mode[x264_scan8[1] - 8] =

??????? h->mb.cache.intra4x4_pred_mode[x264_scan8[4] - 8] =

??????? h->mb.cache.intra4x4_pred_mode[x264_scan8[5] - 8] = -1;

??????? /* load non_zero_count */

??????? h->mb.cache.non_zero_count[x264_scan8[0] - 8] =

??????? h->mb.cache.non_zero_count[x264_scan8[1] - 8] =

??????? h->mb.cache.non_zero_count[x264_scan8[4] - 8] =

??????? h->mb.cache.non_zero_count[x264_scan8[5] - 8] =

??????? h->mb.cache.non_zero_count[x264_scan8[16+0] - 8] =

??????? h->mb.cache.non_zero_count[x264_scan8[16+1] - 8] =

??????? h->mb.cache.non_zero_count[x264_scan8[16+4+0] - 8] =

??????? h->mb.cache.non_zero_count[x264_scan8[16+4+1] - 8] = 0x80;

??? }

--裝入LEFT-MB相關參數

--裝入MB_TOPRIGHT相鄰MB的信

--裝入MB_TOPLEFT相鄰MB的信

?

--------------------------裝入編碼圖像塊和參考圖像數據----------------------------------

--搬移重建數據到參考數據位置,見《宏塊的原始編碼數據和重建數據的存儲結構》中的說明

行方向的參考數據未搬移

?

--調用x264_macroblock_load_pic_pointers()函數

完成以下功能:

?

1 ?? 設置象素分量行寬度,指擴展之后的寬度

2?? 從h->fenc->plane[i][i_pix_offset]中將原始數據讀到h->mb.pic.p_fenc[i]中

3、?? 將行參考數據搬移到h->mb.pic.p_fdec[i]數組中,在數組中的偏移量將宏塊的原始編碼數據和重建數據的存儲結構》中的說明

4、?? 從參考圖像中得到對應于當前MB的參考宏塊數據指針,存儲到h->mb.pic.p_fref[0][j][k]中,其中0表示為前向參考圖像,J表示是第幾個參考圖像,K表示為不同的象素分量,推測[0]->Y,[1/2/3]為濾波后的,[4]->cr,[5]->cb

?

------------------------運動向量、參考圖像裝入---------

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455698.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

U(優)盤安裝FreeBSD-9.0+GNOME_lite桌面

貼圖在我的主頁&#xff1a;http://hi.baidu.com/daodej/item/26313f4fc3db51ef1f19bcc6 修訂于&#xff1a;2012/07/04 標題&#xff1a;U(優)盤安裝FreeBSD-9.0GNOME_lite桌面&#xff0c;boot0啟動XP(Windows)、FreeBSD、Ubuntu(Linux)三系統 【黑括號表示說明&#xff0c;中…

【零散積累】 vim常用操作

類型 操作 含義 刪除 dd 刪除游標所在的一整行(常用) ndd n為數字。刪除光標所在的向下n行&#xff0c;例如20dd則是刪除光標所在的向下20行 d1G 刪除光標所在到第一行的所有數據 dG 刪除光標所在到最后一行的所有數據 d$ 刪除光標所在處&#xff0c;到該…

生活中常見物聯網實例_物聯網網關常見問題解答(一)

1.為什么物聯網解決方案需要網關&#xff1f;物聯網網關彌合了設備&#xff0c;傳感器&#xff0c;設備&#xff0c;系統和云之間的通信鴻溝。通過系統地連接云&#xff0c;物聯網網關提供了本地處理和存儲&#xff0c;并具有基于傳感器輸入的數據自主控制現場設備的功能。物聯…

predict_16x16[i_mode]( p_dst, i_stride )lowres

h->predict_16x16[i_mode]( p_dst, i_stride ); 計算對應預測模式時的預測采樣值。輸出放到dst指向的數組中。Pred0ct_16x16是7個元素指向的數組&#xff0c;數組的每個元素是一個指向函數的指針變量&#xff0c;在x264_predict_16x16_init函數初始這個指針數組。7個元素分…

【零散積累】shell腳本學習

來自wiki遷移頁面路徑&#xff1a;劉旺的主頁 / 個人零散積累 / 03> shell腳本學習 case Shell case語句&#xff08;多分支條件判斷&#xff09; $( ) Linux—shell中$(( ))、$( )、與${ }的區別 - chengd - 博客園 在bash中&#xff0c;$( )與 &#xff08;反引號&…

mysql 表鎖-解鎖

遇到問題“”用工具navicat打開一張表的時候&#xff0c;有的時候會發現這張表怎么打不開&#xff0c;關了navicat工具&#xff0c;再打開&#xff0c;也是同樣的狀態。查看表鎖&#xff1a;show OPEN TABLES where In_use > 0;查看是否是表鎖住了。-- 查看進程號 show proc…

alsa 測試 linux_Electron 構建步驟 (Linux)

遵循下面的引導&#xff0c;在 Linux 上構建 Electron .PrerequisitesPython 2.7.x. 一些發行版如 CentOS 仍然使用 Python 2.6.x &#xff0c;所以或許需要 check 你的 Python 版本&#xff0c;使用 python -V.Node.js v0.12.x. 有很多方法來安裝 Node. 可以從 Node.js下載原文…

JavaScript中的數學對象Math

js數學對象Math //四舍五入 var res Math.round(5.921);//獲取最大值 var res Math.max(10,23,523,43,65,46,32,32);//獲取最小值 var res Math.min(12312,324,32,42,3,23,412,4332,21,3,-1);//獲取絕對值 var res Math.abs(-100);//退一取整 var res Math.floor(1.9);//…

centos7-安裝mysql5.6.36

本地安裝了mysql5.7, 但和springboot整合jpa時會出現 hibernateException, 不知道為什么, 換個mysql5.6版本的mysql, 源碼安裝, cmake一直過不去, 后來改成rpm安裝 1, 獲取mysql5.6 ftp://ftp.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-5.6/ 下載: 解壓: 其中…

mad的問題匯總

Q&#xff1a;我想將I幀的預測圖像和原始圖像的平均絕對誤差給輸出來&#xff0c;請問這個在JM86中需要在哪一點改動呢&#xff1f;謝謝 A&#xff1a; 差值保存在diffy中&#xff1a; diffy[j][i] imgY_org[img->opix_yj][img->opix_xi] - pred[j][i]; 分析MAD不知道程…

迷之騷縮寫

搜集一些 GitHub 常見騷縮寫&#xff0c;以備查詢使用。 原文鏈接&#xff1a;LGTM? 那些迷之縮寫 PR: Pull Request. 拉取請求&#xff0c;給其他項目提交代碼LGTM: Looks Good To Me. 朕知道了 代碼已經過 review&#xff0c;可以合并SGTM: Sounds Good To Me. 和上面那句意…

github設置中文_靜態博客托管圖片至 GitHub

從 MWeb 切換到靜態博客 Jekyll 之后&#xff0c;我就面臨一個問題&#xff0c;這在很久之前使用 Hexo 同樣遇過的&#xff1a;圖片托管在何處。MWeb 的解決方式很棒&#xff0c;直接插入圖片&#xff0c;推送到 Github 后亦能正常引用并顯示&#xff0c;無需圖床或者借助第三方…

JavaScript中的正則

js正則 正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串, 正則表達式通常被用來檢索、替換那些符合某個模式的文本 聲明方式 普通字符 new RegExp();/hehe/轉義字符 \w \W \d \D \s \S var reg /\w/;//單個的字母數字下劃線 var reg /\W/;…

SQL注入【sqli靶場第23-28關】(七)

★★免責聲明★★ 文章中涉及的程序(方法)可能帶有攻擊性&#xff0c;僅供安全研究與學習之用&#xff0c;讀者將信息做其他用途&#xff0c;由Ta承擔全部法律及連帶責任&#xff0c;文章作者不承擔任何法律及連帶責任。 0、總體思路 先確認是否可以SQL注入&#xff0c;使用單…

Linq中string轉int的方法

Linq中string轉int的方法 在做批量刪除時&#xff0c;需把一串id值所對應的數據刪除&#xff0c;調試出現問題&#xff1a; Linq語句中如果使用ToString()進行類型轉換,編譯時不會報錯,但執行時會出現如下錯誤&#xff1a; “LINQ to Entities 不識別方法"System.String T…

名稱縮寫第二波

1 公司內部 縮寫 全稱 中文 說明 PMproduct manager產品經理RDResearch and Development研發工程師FEFrontend Engineer前端工程師UEUser Experience用戶體驗設計師QAquality assurance質量保證&#xff0c;測試OP operator 運維工程師EEEngeering Excellence工程效率部ETEn…

php動態獲取函數參數

PHP 在用戶自定義函數中支持可變數量的參數列表。其實很簡單&#xff0c;只需使用func_num_args() &#xff0c; func_get_arg() &#xff0c;和 func_get_args() 函數即可。可變參數并不需要特別的語法&#xff0c;參數列表仍按函數定義的方式傳遞給函數&#xff0c;并按通常…

漏桶算法與令牌桶算法

漏桶算法(Leaky Bucket)是網絡世界中流量整形&#xff08;Traffic Shaping&#xff09;或速率限制&#xff08;Rate Limiting&#xff09;時經常使用的一種算法&#xff0c;它的主要目的是控制數據注入到網絡的速率&#xff0c;平滑網絡上的突發流量。漏桶算法提供了一種機制&a…

java linux 調用32位so_Linux上TCP的幾個內核參數調優

Linux作為一個強大的操作系統&#xff0c;提供了一系列內核參數供我們進行調優。光TCP的調優參數就有50多個。在和線上問題斗智斗勇的過程中&#xff0c;筆者積累了一些在內網環境應該進行調優的參數。在此分享出來&#xff0c;希望對大家有所幫助。調優清單好了&#xff0c;在…

jquery中的選擇器

jquery選擇器 jquery用法思想 選擇某個網頁元素&#xff0c;然后對它進行某種操作 jquery選擇器 jquery選擇器可以快速地選擇元素&#xff0c;選擇規則和css樣式相同 基礎選擇器 //通過id來獲取元素 document.getElementById(); // $(#logo).css(border,solid 2px red); //…