首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >h264 u(v)对frame_num、pic_order_cnt_lsb和slice_group_change_cycle的解码

h264 u(v)对frame_num、pic_order_cnt_lsb和slice_group_change_cycle的解码
EN

Stack Overflow用户
提问于 2014-05-30 20:39:35
回答 1查看 2.8K关注 0票数 6

根据“切片头语法”(在ITU中描述)。h264)、frame_numpic_order_cnt_lsbslice_group_change_cycle都有u(v)描述符,它是使用可变位数的无符号整数。

医生说

“位数的变化取决于其他语法元素的值。”

您知道如何计算用于存储frame_numpic_order_cnt_lsbslice_group_change_cycle的位数吗?

引用的文档指向read_bits(n)函数,不幸的是,我无法自己解决它。你能帮上忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-01 13:30:49

其他比特流值定义要读取的位数。

frame_num

作为图片的标识符,应以比特流中的log2_max_frame_num_minus4 +4位表示。

例如,以下是FFmpeg所做的工作:

代码语言:javascript
运行
复制
log2_max_frame_num_minus4 = get_ue_golomb(&h->gb);
// ...
sps->log2_max_frame_num = log2_max_frame_num_minus4 + 4;
// ...
h->frame_num = get_bits(&h->gb, h->sps.log2_max_frame_num);

pic_order_cnt_lsb

指定编码帧的顶部字段或编码字段的图像顺序计数模MaxPicOrderCntLsb。 pic_order_cnt_lsb语法元素的大小是 log2_max_pic_order_cnt_lsb_minus4 +4位。 pic_order_cnt_lsb值应在0到MaxPicOrderCntLsb - 1的范围内(包括在内).

slice_group_change_cycle

slice_group_change_cycle的值在比特流中由以下位单元表示( Log2( PicSizeInMapUnitsχ2 SliceGroupChangeRate +1))

位读取示例:SliceHeader.cpp,第170行

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23963078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档