scan8[16+2*4]的內容

scan8確實不好理解,解答如下:

static const int x264_scan8[16+2*4] =
{

? ? /* Luma */
? ? 4+1*8, 5+1*8, 4+2*8, 5+2*8,
? ? 6+1*8, 7+1*8, 6+2*8, 7+2*8,
? ? 4+3*8, 5+3*8, 4+4*8, 5+4*8,
? ? 6+3*8, 7+3*8, 6+4*8, 7+4*8,

? ? /* Cb */
? ? 1+1*8, 2+1*8,
? ? 1+2*8, 2+2*8,

? ? /* Cr */
? ? 1+4*8, 2+4*8,
? ? 1+5*8, 2+5*8,
};


/*
? ?0 1 2 3 4 5 6 7
0
1? ? B B? ?L L L L
2? ? B B? ?L L L L
3? ?? ?? ?? ? L L L L
4? ? R R? ?L L L L
5? ? R R
*/
上面這兩個對應起來看就可以了。

?

scan8是為了便于訪問 諸如mv_cache, ref_cache, non_zero_count_cache以及mvd_cache等內存,而填充好的一個數組,里面放置的都是上述內存中特定的索引序號
比如scan8[0]=12,這個12就是上述內存中,一般針對macroblock而言的左上角數值,無論是mv,還是non_zero_count,所以只有充分搞懂上述內存結構,那么所有問題就迎刃而解了

?

?

?

attachment中是以前針對某個問題,分析后的筆記
ffmepg中,幾個比較重要的cache,大致都是按照此思路進行設置的
希望對于cache理解有幫助!

?

?

1.請問色度為什么和Luma度是同一矩陣值?
2.h->block_offset是求什么的值?
  1. for(i=0; i<16; i++){??
  2. ? ?? ???h->block_offset[i]= 4*((scan8[i] - scan8[0])&7) + 4*s->linesize*((scan8[i] - scan8[0])>>3);
  3. ? ?? ???h->block_offset[24+i]= 4*((scan8[i] - scan8[0])&7) + 8*s->linesize*((scan8[i] - scan8[0])>>3);
  4. ? ? }
  5. ? ? for(i=0; i<4; i++){
  6. ? ?? ???h->block_offset[16+i]=
  7. ? ?? ???h->block_offset[20+i]= 4*((scan8[i] - scan8[0])&7) + 4*s->uvlinesize*((scan8[i] - scan8[0])>>3);
  8. ? ?? ???h->block_offset[24+16+i]=
  9. ? ?? ???h->block_offset[24+20+i]= 4*((scan8[i] - scan8[0])&7) + 8*s->uvlinesize*((scan8[i] - scan8[0])>>3);
  10. ? ? }
復制代碼
1、應該是為了節約內存,同時方便在一個數組中索引同一個MB的亮色度的預測模式。不知這樣解釋是否正確,希望高人指正
2、block_offset,看名字就知道是block的偏移量啊? ? 16+8,就更加明顯啦,16個亮度,兩個(8,各為4)色度
? ? 如果沒記錯的話,這個偏移應該是用在yuv像素存儲索引的

感謝Juanny 的文檔,對于理解x264_scan8中的元素值很有幫組,這主要是一個中間的尋址矩陣,通過它可以很方便的找到MB的色度、亮度4x4塊在對應的cache,zero_count中的位置

?

?

?

?

?

?

scan8[]實際上是4x4塊的掃描順序及存儲的位置,把scan8放在8x8的矩陣中就能看出其作用了,其中T表示當前塊的上面的塊,L表示當前塊左邊的塊,它們是用來預測當前塊的幀內預測模式(Intra prediction mode)和運動向量之類的,起到一個緩存的作用。可以看到這種設計比JM節約內存,而且非常巧妙。程序中的其他緩存設計都與此類似。

?

?

?

?

?

T

?

?

T

?

?

?

?

?

T

?

?

T

?

?

T

?

?

T

?

?

L

?

?

16

?

?

17

?

?

L

?

?

0

?

?

1

?

?

4

?

?

5

?

?

L

?

?

18

?

?

19

?

?

L

?

?

2

?

?

3

?

?

6

?

?

7

?

?

?

?

?

T

?

?

T

?

?

L

?

?

8

?

?

9

?

?

12

?

?

13

?

?

L

?

?

20

?

?

21

?

?

L

?

?

10

?

?

11

?

?

14

?

?

15

?

?

L

?

?

22

?

?

23

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

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

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

相關文章

React 產品實現 -任務管理工具“氫”

原文地址&#xff1a;https://zhuanlan.zhihu.com/p/...&#xff0c;歡迎轉載 &#xff1a;-&#xff09;? 關于 其實對于這個專欄的訂閱用戶感到非常抱歉&#xff0c;已經停更很久了&#xff0c;也沒啥特別的理由就是懶 orz&#xff01;不對&#xff0c;畫風不能這樣開頭&…

通過curl獲取網頁訪問時間

curl -w %{time_namelookup}:%{time_connect}:%{time_starttransfer}:%{time_total}:%{speed_download}"\n" "https://www.google.com" 轉載于:https://www.cnblogs.com/fanxuanhui-linux/p/6581292.html

【numpy】20道numpy題目

1、創建一個長度為10的一維全為0的ndarray對象&#xff0c;然后讓第5個元素等于1 import numpy as npndarry np.zeros(10) ndarryarray([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])ndarry[4]1 ndarryarray([0., 0., 0., 0., 1., 0., 0., 0., 0., 0.])2、創建一個元素為從10到4…

ffmpeg_intra_pred_mode問題.pdf

ffmpeg_intra_pred_mode問題.pdf文章

【R】語言第一課-----安裝

安裝R和Rstuido軟件 R語言是用于統計分析&#xff0c;圖形表示和報告的編程語言和軟件環境&#xff1b;Rstudio是編輯、運行R語言的最為理想的工具之一。 1、官網下載R安裝包 下載地址為&#xff1a;https://cran.r-project.org 進入鏈接&#xff0c;如下圖所示&#xff0c…

面向對象基礎知識整理

1、什么是對象&#xff1f; 什么是類&#xff1f; 對象是可以看的見摸得著的&#xff0c;對象可以是任何東西&#xff0c;比如水杯&#xff0c;書&#xff0c;手機等。準確的說&#xff0c;對象是一個自包含的實體&#xff0c;用一組可識別的特性和行為標識的。 類就是具有相同…

Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes values. (ie, from left to right, level by level). For example: Given binary tree {3,9,20,#,#,15,7}, 3/ \9 20/ \15 7return its level order traversal as: [[3],[9,20],[15,7] ] 解題思路:能夠…

鍵盤事件相關

轉自下面兩個鏈接&#xff1a;http://www.cnblogs.com/starof/p/6558581.html http://www.cnblogs.com/cathsfz/archive/2011/05/29/2062382.html 在 JavaScript 中監聽 IME 鍵盤輸入事件 在 JavaScript 中監聽用戶的鍵盤輸入是很容易的事情&#xff0c;但用戶一旦使用了輸入…

【R】語言第二課----- 變量的使用方法

num1<-c(9.1,8.2,7.3) num2<-1:10 char<-c(a,b,c) #單引號or雙引號都可以 logit<-c(TRUE,FALSE,T,F) c(1,a,TRUE) sex<-c(F,M,F,M) sex sexf<-factor(sex) sexf num1[1]<-100 #索引一定要加方括號 num1[c(1,3)]<-c(99.9,77.7) num1[c(T,F,T)] num1[-2]…

Petuum - Careers

Petuum - CareersCloudformation

【R】語言第三課----矩陣

#矩陣 ?matrix m<-matrix(1:6,nrow 2,ncol3,dimnames list(c(r1,r2),c(c1,c2,c3))) m#默認按列排列 m<-matrix(1:6,nrow 2,ncol3,byrow T,dimnames list(c(r1,r2),c(c1,c2,c3)))m class(m) m[1,1] m[1,]# 相當于 m[c(T,F),] m[,1] m[r1,]m[1,] <- c(100,99,98…

誰說菜鳥不會數據分析--讀書筆記

如果看不清可以下載下來&#xff0c;打開&#xff0c;放大。僅供參考。 轉載于:https://www.cnblogs.com/sunshinewang/p/6591772.html

[MySQL 5.6優化] --order by limit x,x 優化

簡介&#xff1a;order by limit x ,x 在實際工作中有各種業務需求要有order by的排序&#xff0c;有時候處理不好則會造成系統宕機&#xff01;原理&#xff1a;a.通過索引來獲取排序b.通過內部算法獲取排序&#xff1a; 案例具體SQL&#xff1a; SELECT c.order_price orderP…

【R】語言第四課----讀取文件

install.packages("readxl") getwd() setwd("E:/作業4") library(readxl) tianmao<-read_excel(tianmaoTV.xlsx,skip1)#把第一行跳過&#xff0c;直接從第二行開始讀取 #創建新變量 tianmao[total_sales]<-tianmao$current_price*tianmao$month_sale…

Html.Partial和Html. RenderPartial用法

Html.Partial和Html. RenderPartial用法Html.partial和RenderPartial的用法與區別Html.partial和RenderPartial都是輸出html片段&#xff0c;區別在于Partial是將視圖內容直接生成一個字符串并返回&#xff08;相當于有個轉義的過程&#xff09;&#xff0c;RenderPartial方法是…

算術編碼簡單研究

算術編碼 是一種無損數據壓縮方法&#xff0c;也是一種熵編碼的方法。和其它熵編碼方法不同的地方在于&#xff0c;其他的熵編碼方法通常是把輸入的消息分割為符號&#xff0c;然后對每個符號進行編碼&#xff0c;而算術編碼是直接把整個輸入的消息編碼為一個數&#xff0c;一個…

Thinkphp5 還有這種操作?

2019獨角獸企業重金招聘Python工程師標準>>> 在 _initialize 中取出 控制器名和方法名 define(CONTROLLER_NAME,Request::instance()->controller()); define(MODULE_NAME,Request::instance()->module()); define(ACTION_NAME,Request::instance()->actio…

【R】語言第五課----畫圖

?plot#高級繪圖函數 可以完整地繪制出一張圖 ?mtcars plot(mtcars$wt) plot(mtcars[,1:2]) plot(mtcars) plot(mtcars$wt,mtcars$disp) plot(mtcars$wt,mtcars$disp,typep) plot(mtcars$wt,mtcars$disp,typel) plot(mtcars$wt,mtcars$disp,typeb) plot(mtcars$wt,mtcars$disp…

Solidworks如何將參考平面的圖形投影到某曲面上

1 畫好草圖&#xff0c;點擊曲線-分割線 2 選擇要投影的草圖和被投影的面&#xff08;那個球面&#xff09;&#xff0c;最后效果如下圖所示 3 為了獲取連續的軌跡&#xff0c;我們可以再次選擇這個草圖&#xff0c;然后在投影面中選擇平面&#xff0c;最后得到的圖形如下圖所示…

向極限挑戰:算術編碼 (轉)

向極限挑戰&#xff1a;算術編碼 (轉) http://blog.csdn.net/hhf383530895/archive/2009/08/24/4478605.aspx 我們在上一章中已經明白&#xff0c;Huffman 編碼使用整數個二進制位對符號進行編碼&#xff0c;這種方法在許多情況下無法得到最優的壓縮 效果。假設某個字符的出…