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

scan8[16+2*4]的内容相关推荐

  1. 斗战神服务器正在维护6,斗战神3月16日维护更新内容及修改BUG

    亲爱的斗粉你们好: 在今天的游戏中我们陆续接到玩家反映,部分玩家为了节约疲劳完成任务而半途离开副本,致使同队玩家大呼坑爹.出现这个问题之后我们深深的进行了自责,为了升级而半途离开副本这不是我们的初衷, ...

  2. 广告创意设计课程 博客_博客的16个伟大的内容创意

    广告创意设计课程 博客 When you need to write regular posts for your business or personal blog, it can be chall ...

  3. 读写EEPROM遇到的问题:16位地址的内容都是最后写入的数据。

    #define EE_TYPE AT24C64 如下图所示,往EEPROM的地址0x1000.0x1001.0x1002和0x1003分别写入0xAA.0xBB.0xCC和0xDD,读出来的数据都是最 ...

  4. 拆除指令怎么设置_快捷指令(16)朗读屏幕内容

    1.最近,经常会用到一些生僻字,想要打字打出来,却不知道怎么读,于是就想了想能不能利用iOS自带的朗读屏幕功能将生僻字读出来呢. 系统:iOS13.5.1 机型:iPhone XR 应用:快捷指令 步 ...

  5. 倩女幽魂2服务器维护怎么抢先进,倩女幽魂OL2月16日服务器维护内容

    --系统-- 1.蓝装出9条和10条属性的机会大幅度增加(仍不高于目前出8条属性的概率). 2.手套.腰带和鞋子上增加了两组修饰词(抗物理致命一击和抗法术致命一击),可在人物抗性界面中查看. 3.师徒 ...

  6. 7.1 pdo 宝塔面板php_记宝塔面板中 PHP升级到 7.3.16安全版本概要

    因为有云主机上安装的宝塔面板管理的 LAMP运行环境,所以今天看见 宝塔面板 中的 软件商店 里 PHP7.3版本提示有更新,就点击查看是可以更新到 PHP7.3.16版本,于是搜索了一下 PHP7. ...

  7. Visual Studio 2022 Preview 3和2019 16.11发布

    Visual Studio 2022 Preview 3 主要特点 个人和团队生产力 附加到进程改进 新项目设计器 黑暗主题提升 开发现代应用 远程测试 新的JavaScript和TypeScript ...

  8. 题目:16版.雇员的工作职责(一)

    题目:16版.雇员的工作职责(一) 1.实验要求 本实验要求:以雇员的日常工作为背景,体验"继承"与"属性复用技术"的运用场景.1-1. 业务说明:1-1.1. ...

  9. 大学计算机基础应当掌握的内容,大学计算机基础课程教学大纲2014版.pdf

    <计算机应用基础>课程教学大纲 一.课程基本情况 课程编号: 开课学院:信息学院 英文名称:Fundamentals of Computers Application 适用专业:所有专业 ...

最新文章

  1. tensorflow 学习笔记-- tf.reduce_max、tf.sequence_mask
  2. 虚拟机桌面linux系统,KVM - Linux下三大免费桌面虚拟机评测_Linux教程_Linux公社-Linux系统门户网站...
  3. 机器翻译Seq2Seq模型的启发-人工神经网络系统-诞生
  4. CDN 监控系统(二)
  5. python第三方插件登录网易音乐_python3-使用requests模拟登录网易云音乐
  6. java类加载过程_面试官:java类的加载过程
  7. android 技能标签功能_iOS和Android用户体验设计差异
  8. 前端学习(2056):初识vue.js
  9. Java用freemarker导出word
  10. 函数、迭代器、生成器、装饰器
  11. 并发框架Disruptor
  12. Unity 官方教程 学习
  13. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用...
  14. 新手思考如何开发自己的软件
  15. echarts 获取点击的y轴数值_ECharts关系图
  16. wxpython学习笔记
  17. android 向下动画,使用向上/向下滑动动画显示和隐藏视图
  18. 一文读懂TOGAF企业架构
  19. C++相关问题笔记(一)
  20. EFS加密解密----重装系统后

热门文章

  1. c#之task与thread区别及其使用
  2. 存储过程排版工具_安利一款比Evernote更为实用的云笔记工具,不容错过
  3. 【Qt调试技巧】Profile配置使用及一些坑
  4. Idea打可执行jar包
  5. 【Python CheckiO 题解】Probably Dice
  6. CCIE-LAB-第十六篇-NAT+OSPF下发默认路由+校验配置(模块一结束篇章)
  7. 【CodeForces - 129C】Statues(思维,bfs)
  8. 【HDU - 5878】I Count Two Three(打表)
  9. 【7-10 PAT】树的遍历(给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。)
  10. 【牛客 - 303D第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Campaign(二进制枚举,位运算,暴力,思维)