共2条
1/1 1 跳转至页
slice 解码过程的讨论(转)
有关slice 解码过程的(翻译标准8.2部分)
(在这里,只考虑到帧(frame)的情况,对于场(field),相互场对(complementary field pair)暂不作考虑)
1.poc(picture order count)解码过程.
picture order count ,在解b slice时,用来决定参考picture初始化顺序; 在解时间直接模式(temporal direct mode)下的运动矢量,不直接模式(implicit mode)下的b slice权预测(weighted prediction),和解码器一致性检测(conformance checking)时,用来表现帧和场之间picture 顺序不同).
--每一个编码帧和两个picture order count 相关.称为topfieldordercnt 和 bottomfieldordercnt,各自对应于top field 和 bottom field.
topfiieldordercnt 和buttomfieldordercnt通过调用picture order count解码过程得到的. picture order count 有三种类型(type 0,1,2).
对于picx:
picordercnt(picx)=min(topfiieldordercnt,buttomfieldordercnt)
diffpicordercnt( pica, picb ) = picordercnt( pica ) - picordercnt( picb )
这三种类型的解码过程在标准的8.2.1.1, 8.2.1.2, and 8.2.1.3.
2.宏块(macroblock)到slice group映射的解码过程
这个过程时在每个slice 开始时调用的.得到mbtoslicegroupmap(宏块到所属帧组的映射表).
slice group 有6种映射模式(8.2.2.1—8.2.2.8),分别用于不同的情况编码.例如电视广播,背景相对稳定,只需传送人的头像部分的slice宏块就行了,可以选slice type 2.
3.slice 数据划分(data partition)解码过程
输入:
--slice 数据划分a层(layer)rbsp,
--当类别3(category 3)中语法元素在slice 数据中出现,slice 数据划分b层rbsp有和a层一样的slice_id.
--当类别4中的语法元素在slice数据中出现,slice数据划分c层rbsp有和a层一样的slice_id.
输出:编码slice.
当不使用slice 数据划分,编码slice表现为rbsp没有分割,包含slice 头,slice数据语法结构包含类别2,3,4中所有语法元素,宏块数据.
当使用slice数据划分,每一个类别中的语法元素分离在不同的nal单元.解码过程处理slice数据划分过程和没有划分时是等价的.
注释:语法分类3和解i,si宏块残差数据有关,4中和解p,b中的残差数据相关,2中包含所有和解码宏块相关的语法元素.
4.参考picture 列表创建的解码过程
对于p,sp帧,使用refpiclist0,对于b使用refpiclist0,refpiclist1.
解码的参考画面(picture) 标记为使用短(short-term) 参考帧或长(long-term)参考帧两种.
短解码的参考画面通过frame_num指定,长解码的参考画面通过long term frame index 指定.
如果longtermentry( refpiclistx[ i ] )==1,表示是长参考帧,于longtermpicnum相联系.
如果longtermentry( refpiclistx[ i ] )==0,表示是短参考帧,于picnum相联系.
修改的参考画面数量在表(list) refpiclist0中是num_ref_idx_l0_active_minus1 + 1,在refpiclist1中是num_ref_idx_l1_active_minus1 + 1,一个参考画面可以有多个所有在流改的参考画面表refpiclist0, refpiclist1.
4.1 picture numbers 获取过程
if( framenum > frame_num )
framenumwrap = framenum – maxframenum
else
framenumwrap = framenum
picnum = framenumwrap
longtermpicnum = longtermframeidx
4.2 参考画面表初始化过程
对于p,sp
refpiclist0:
short-term (降序), long-term(升序),null
对于b
refpiclist0
short-term(降序) ,short-term(升序) , long-term(升序) , null
第一部分picordercnt(frm )< picordercnt( currpic )
第二部分picordercnt(frm)> picordercnt( currpic )
refpiclist1
short-term(升序) ,short-term(降序) , long-term(升序), null
第一部分picordercnt(frm )> picordercnt( currpic )
第二部分picordercnt(frm)<picordercnt( currpic )
4.3参考画面表重排序过程
对于短画面(short-term picture)
reordering_of_pic_nums_idc等于 0,或1
首先求出 picnumlx
for( cidx = num_ref_idx_lx_active_minus1 + 1; cidx > refidxlx; cidx-- )
refpiclistx[ cidx ] = refpiclistx[ cidx – 1]
refpiclistx[ refidxlx++ ] = picnumlx
nidx = refidxlx
for( cidx = refidxlx; cidx <= num_ref_idx_lx_active_minus1 + 1; cidx++ ) if( longtermentry( refpiclistx[ cidx ] ) | | refpiclistx[ cidx ] != picnumlx )
refpiclistx[ nidx++ ] = refpiclistx[ cidx ]
对于长画面(long-term picture)
reordering_of_pic_nums_idc等于 2
for( cidx = num_ref_idx_lx_active_minus1 + 1; cidx > refidxlx; cidx-- )
refpiclistx[ cidx ] = refpiclistx[ cidx – 1]
refpiclistx[ refidxlx++ ] = longtermpicnum
nidx = refidxlx
for( cidx = refidxlx; cidx <= num_ref_idx_lx_active_minus1 + 1; cidx++ )
if( !longtermentry( refpiclistx[ cidx ] ) | | refpiclistx[ cidx ] != longtermpicnum )
refpicalistx[ nidx++ ] = refpiclistx[ cidx ]
5.解码的参考画面标记过程(marking process)
nal_ref_idc 不等于0的解码画面, 作为参考画面, 标记为短参考帧或长参考帧. 对于解码参考帧,它的两个场的标记和帧相同. 标记为长参考帧, 用longtermframeidx标识,标记为短参考帧或长参考帧的帧或相互的参考场对,可以作为帧间预测的参考帧, 直到帧标记为不使用为参考帧(unused for reference).
画面标记为不使用参考帧(unused for reference),可以通过使用滑动窗口(slice windows)参考画面标记过程,一种先进先出的机制,或自适应存储画面标记过程(adaptive memory control reference picture marking process),一种自定义的自适应标记过程.
在解码过程中short-term 参考画面,使用picnum指定,long-term 参考画面使用longtermpicnum.
关键词: slice 解码 过程 讨论 picture 参考
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |