关于encode_one_macroblock()中的一个for循环 - H.264乐园 ...
来源:百度文库 编辑:神马文学网 时间:2024/04/30 03:52:24
返回列表 回复 发帖
currMB->c_ipred_mode++)
这个好像不是帧内色度的预测模式的遍历,而是包括了色度和亮度的所有情况。
不知理解是否正确。 本主题由 firstime 于 2009-8-27 07:06 PM 分类 收藏 分享 评分 好好学习
报效国家 回复 引用
if ((input->FastCrIntraDecision )
|| (currMB->c_ipred_mode == DC_PRED_8 || (IS_INTRA(currMB) ))) 回复 引用
报效国家 回复 引用
JM10.2中应该是这么安排的
帧内预测模式下先搜索色度预测模式,然后在色度帧内模式的基础上再进行亮度帧内预测模式的搜索
因为inter切片也会有intra宏块,所以也会进行帧内宏块的搜寻,所以仍然保持这个循环模式,但是帧内色度
预测在帧间编码宏块中并不需要,所需在compute_mode_RD_cost会只在
if (currMB->c_ipred_mode == DC_PRED_8 || (IS_INTRA(currMB) )) 条件下才会继续下去计算RD值; 回复 引用
2、 for (currMB->c_ipred_mode=DC_PRED_8; currMB->c_ipred_mode<=PLANE_8; currMB->c_ipred_mode++)中,色度是四种预测模式,帧内亮度预测嵌套其中,那么每一种帧内亮度预测都要计算4次RD,不是重复了么? 或者说帧内色度预测模式对帧内亮度预测还有影响么?那又是什么影响呢?
3、 if (currMB->c_ipred_mode == DC_PRED_8 || (IS_INTRA(currMB))之后的RDCost计算后,有一个判断:if(mode==P8*8){。。。。。},这个判断是干什么用的?它肯定不属于 (IS_INTRA(currMB)之列,那么是对应于(currMB->c_ipred_mode == DC_PRED_8)的么?好像也不是。
恳请指教!
[ 本帖最后由 achen 于 2007-4-13 09:49 AM 编辑 ] 好好学习
报效国家 回复 引用
2. inter宏块的色度的运动是由量度的运动矢量来决定的
3.因为inter切片也可以包含intra宏块,所以才会保留
for (currMB->c_ipred_mode=DC_PRED_8; currMB->c_ipred_mode<=max_chroma_pred_mode; currMB->c_ipred_mode++)这个循环结构;
但是通过
if (img->yuv_format != YUV400 && max_index != 5)
{
}
else
max_chroma_pred_mode = DC_PRED_8;
来限定是否需要进行帧内色度预测的循环;
我是看的是JM10.2,不知道前面的是否也是这么写的 回复 引用
2、当是 intra 编码方式时,由不同的亮度和色度模式所计算得到的 SSD 来作为 RDO 的失真度。每一种不同的亮度和色度的组合就会得到不同的失真度。因此这里要分别取四种色度帧内预测模式去与不同的亮度帧内预测模式组合,来计算不同组合下的 RDO,以得到各种组合中最佳的组合。这其实是一个数学上的排列组合问题;
3、我看的版本跟你不一样,所以没有你说的那个条件判断。 欢迎加入我们的QQ群:12923082。新加入者请先仔细阅读论坛中的《群成员须知》!
achen - 发短消息
- 加为好友
achen 当前离线
- UID
- 3674
- 帖子
- 17
- 精华
- 0
- 积分
- 9
- 阅读权限
- 10
- 来自
- 成都
- 在线时间
- 19 小时
- 注册时间
- 2007-1-3
- 最后登录
- 2007-6-1
新手上路
1# 打印 tT 发表于 2007-4-11 09:49 PM | 只看该作者[JM代码] 关于encode_one_macroblock()中的一个for循环
for (currMB->c_ipred_mode=DC_PRED_8; currMB->c_ipred_mode<=PLANE_8;currMB->c_ipred_mode++)
这个好像不是帧内色度的预测模式的遍历,而是包括了色度和亮度的所有情况。
不知理解是否正确。 本主题由 firstime 于 2009-8-27 07:06 PM 分类 收藏 分享 评分 好好学习
报效国家 回复 引用
订阅 报告 道具 TOP
achiever- 发短消息
- 加为好友
achiever 当前离线
- UID
- 7611
- 帖子
- 6
- 精华
- 0
- 积分
- 3
- 阅读权限
- 10
- 在线时间
- 6 小时
- 注册时间
- 2007-3-26
- 最后登录
- 2007-4-19
新手上路
2# 发表于 2007-4-12 09:14 AM | 只看该作者 注意 compute_mode_RD_cost里面的if ((input->FastCrIntraDecision )
|| (currMB->c_ipred_mode == DC_PRED_8 || (IS_INTRA(currMB) ))) 回复 引用
报告 道具 TOP
achen新手上路
- 发短消息
- 加为好友
achen 当前离线
- UID
- 3674
- 帖子
- 17
- 精华
- 0
- 积分
- 9
- 阅读权限
- 10
- 来自
- 成都
- 在线时间
- 19 小时
- 注册时间
- 2007-1-3
- 最后登录
- 2007-6-1
新手上路
3# 发表于 2007-4-12 03:04 PM | 只看该作者楼上的,此话怎讲啊?
能否详细一点啊,谢谢! 好好学习报效国家 回复 引用
报告 道具 TOP
figolau- 发短消息
- 加为好友
figolau 当前离线
- UID
- 2048
- 帖子
- 17
- 精华
- 1
- 积分
- 34
- 阅读权限
- 10
- 在线时间
- 20 小时
- 注册时间
- 2006-10-12
- 最后登录
- 2009-3-13
新手上路
4# 发表于 2007-4-12 08:19 PM | 只看该作者 2楼的兄弟已经说了大概了,我补充一下吧.JM10.2中应该是这么安排的
帧内预测模式下先搜索色度预测模式,然后在色度帧内模式的基础上再进行亮度帧内预测模式的搜索
因为inter切片也会有intra宏块,所以也会进行帧内宏块的搜寻,所以仍然保持这个循环模式,但是帧内色度
预测在帧间编码宏块中并不需要,所需在compute_mode_RD_cost会只在
if (currMB->c_ipred_mode == DC_PRED_8 || (IS_INTRA(currMB) )) 条件下才会继续下去计算RD值; 回复 引用
报告 道具 TOP
achen- 发短消息
- 加为好友
achen 当前离线
- UID
- 3674
- 帖子
- 17
- 精华
- 0
- 积分
- 9
- 阅读权限
- 10
- 来自
- 成都
- 在线时间
- 19 小时
- 注册时间
- 2007-1-3
- 最后登录
- 2007-6-1
新手上路
5# 发表于 2007-4-13 08:57 AM | 只看该作者还有三个问题
1、 在if (currMB->c_ipred_mode == DC_PRED_8 || (IS_INTRA(currMB) )) 中,为什么色度预测单单要对(currMB->c_ipred_mode == DC_PRED_8)的情况做RD,而对其他的三种预测模式Vert、Hor和Plane都不错RD;2、 for (currMB->c_ipred_mode=DC_PRED_8; currMB->c_ipred_mode<=PLANE_8; currMB->c_ipred_mode++)中,色度是四种预测模式,帧内亮度预测嵌套其中,那么每一种帧内亮度预测都要计算4次RD,不是重复了么? 或者说帧内色度预测模式对帧内亮度预测还有影响么?那又是什么影响呢?
3、 if (currMB->c_ipred_mode == DC_PRED_8 || (IS_INTRA(currMB))之后的RDCost计算后,有一个判断:if(mode==P8*8){。。。。。},这个判断是干什么用的?它肯定不属于 (IS_INTRA(currMB)之列,那么是对应于(currMB->c_ipred_mode == DC_PRED_8)的么?好像也不是。
恳请指教!
[ 本帖最后由 achen 于 2007-4-13 09:49 AM 编辑 ] 好好学习
报效国家 回复 引用
报告 道具 TOP
figolau- 发短消息
- 加为好友
figolau 当前离线
- UID
- 2048
- 帖子
- 17
- 精华
- 1
- 积分
- 34
- 阅读权限
- 10
- 在线时间
- 20 小时
- 注册时间
- 2006-10-12
- 最后登录
- 2009-3-13
新手上路
6# 发表于 2007-4-13 05:24 PM | 只看该作者 1.Intra宏块编码时亮度预测模式和色度预测模式是没有关系的,所以Intra编码要对各种色度预测模式做RD成本估计2. inter宏块的色度的运动是由量度的运动矢量来决定的
3.因为inter切片也可以包含intra宏块,所以才会保留
for (currMB->c_ipred_mode=DC_PRED_8; currMB->c_ipred_mode<=max_chroma_pred_mode; currMB->c_ipred_mode++)这个循环结构;
但是通过
if (img->yuv_format != YUV400 && max_index != 5)
{
}
else
max_chroma_pred_mode = DC_PRED_8;
来限定是否需要进行帧内色度预测的循环;
我是看的是JM10.2,不知道前面的是否也是这么写的 回复 引用
报告 道具 TOP
firstime- 发短消息
- 加为好友
firstime (天之骄子)当前离线
- UID
- 1900
- 帖子
- 3378
- 精华
- 37
- 积分
- 3574
- 阅读权限
- 200
- 在线时间
- 582 小时
- 注册时间
- 2006-9-26
- 最后登录
- 2010-5-23
管理员
7# 发表于 2007-4-18 08:36 PM | 只看该作者 这里的确存在重复计算的问题。而且重复很严重。 欢迎加入我们的QQ群:12923082。新加入者请先仔细阅读论坛中的《群成员须知》! 回复 引用报告 道具 TOP
firstime- 发短消息
- 加为好友
firstime (天之骄子)当前离线
- UID
- 1900
- 帖子
- 3378
- 精华
- 37
- 积分
- 3574
- 阅读权限
- 200
- 在线时间
- 582 小时
- 注册时间
- 2006-9-26
- 最后登录
- 2010-5-23
管理员
8# 发表于 2007-11-21 05:30 PM | 只看该作者原帖由 achen 于 2007-4-13 08:57 发表1、当是 intra 编码方式时,四种色度预测模式都要做 RDO。而当是 inter 编码方式时,SSD 的计算与帧内预测模式无关,只需要让程序进一次下面的 RDCost_for_macroblocks 函数就可以了。因为这里是把亮度放到色度的循环里,所以通过 currMB->c_ipred_mode == DC_PRED_8 的这个条件来控制只进一次 RDCost_for_macroblocks 函数;
1、 在if (currMB->c_ipred_mode == DC_PRED_8 || (IS_INTRA(currMB) )) 中,为什么色度预测单单要对(currMB->c_ipred_mode == DC_PRED_8)的情况做RD,而对其他的三种预测模式Vert、Hor和Plane都不错RD; ...
2、当是 intra 编码方式时,由不同的亮度和色度模式所计算得到的 SSD 来作为 RDO 的失真度。每一种不同的亮度和色度的组合就会得到不同的失真度。因此这里要分别取四种色度帧内预测模式去与不同的亮度帧内预测模式组合,来计算不同组合下的 RDO,以得到各种组合中最佳的组合。这其实是一个数学上的排列组合问题;
3、我看的版本跟你不一样,所以没有你说的那个条件判断。 欢迎加入我们的QQ群:12923082。新加入者请先仔细阅读论坛中的《群成员须知》!
关于encode_one_macroblock()中的一个for循环 - H.264乐园 ...
用标准库中的copy代替for循环
PHP for 循环语句
dos 中的for循环怎么用? - 已解决 - 搜搜问问
H.264 中的相关问题
H.264 中的相关问题
H.264中POC类型之探讨 - H.264乐园 - 视频技术论坛 中华视频网|ffmpe...
H.264中POC类型之探讨 - H.264乐园 - 视频
对FOR循环优化心得
[转贴] H.264帧内编码的模式选择——arix - H.264乐园 - 视频技术论坛 ...
[转贴] H.264帧内编码的模式选择11——arix - H.264乐园 - 视频技术论坛 ...
一段效率很高的for循环
for循环内变量作用域问题
一段效率很高的for循环
一个循环,一种结果
java for foreach while循环的比较 - nick970 - JavaE...
H.264/
关于如何得到一个键在Javascript中的Keycode值
[原创] MV预测过程详解(附图) - H.264乐园 - 视频技术论坛 中华视频网|ffmpeg工程组 - Powered by Discuz!
[原创] Skip宏块与Direct预测模式浅析 - H.264乐园 - 视频技术论坛 中华视频网|ffmpeg工程组 - Powered by Discuz!
一个“循环经济主义者”眼中的富豪榜
for each 循环+可变参数的小例子(JDK5)
DOS 下的FOR循环--安恒公司- www.anheng.com.cn
ArrayList和LinedList的用法以及for-each循环语句和Iterator...