POC问题汇总

来源:互联网 发布:排队取号软件 编辑:程序博客网 时间:2024/04/29 18:41

我以IBPBP的编码结构编了15帧(在encoder.cfg中令FramesToBeEncoded     = 15 ),但编码完成后实际编码的帧数是29(1I帧,14P帧,14B帧),不太明白实际编码的帧数为什么与FramesToBeEncoded的设置不同,另外对解码后的结果如下:
----------------------------- JM 10.2 (FRExt) -----------------------------
Decoder config file                    : decoder.cfg
--------------------------------------------------------------------------
Input H.264 bitstream                : test.264
Output decoded YUV                   : test_dec.yuv
Output status file                   : log.dec
Input reference file                : test_rec.yuv
--------------------------------------------------------------------------
POC must = frame# or field# for SNRs to be correct
--------------------------------------------------------------------------
   Frame    POC Pic# QP SnrY SnrU SnrV Y:U:V   Time(ms)
--------------------------------------------------------------------------
0000(I)       0     0 28   0.0000   0.0000   0.0000   4:2:0 188
0002(P)       4     1 28   0.0000   0.0000   0.0000   4:2:0 187
0001(B)       2     2 30   0.0000   0.0000   0.0000   4:2:0 203
0004(P)       8     2 28   0.0000   0.0000   0.0000   4:2:0 188
0003(B)       6     3 30   0.0000   0.0000   0.0000   4:2:0 187
0006(P)        12     3 28   0.0000   0.0000   0.0000   4:2:0 203
0005(B)        10     4 30   0.0000   0.0000   0.0000   4:2:0 204
0008(P)        16     4 28   0.0000   0.0000   0.0000   4:2:0 187
0007(B)        14     5 30   0.0000   0.0000   0.0000   4:2:0 203
0010(P)        20     5 28   0.0000   0.0000   0.0000   4:2:0 188
0009(B)        18     6 30   0.0000   0.0000   0.0000   4:2:0 218
0012(P)        24     6 28   0.0000   0.0000   0.0000   4:2:0 188
0011(B)        22     7 30   0.0000   0.0000   0.0000   4:2:0 203
0014(P)        28     7 28   0.0000   0.0000   0.0000   4:2:0 188
0013(B)        26     8 30   0.0000   0.0000   0.0000   4:2:0 203
0016(P)        32     8 28   0.0000   0.0000   0.0000   4:2:0 187
0015(B)        30     9 30   0.0000   0.0000   0.0000   4:2:0 219
0018(P)        36     9 28   0.0000   0.0000   0.0000   4:2:0 187
0017(B)        34 10 30   0.0000   0.0000   0.0000   4:2:0 219
0020(P)        40 10 28   0.0000   0.0000   0.0000   4:2:0 188
0019(B)        38 11 30   0.0000   0.0000   0.0000   4:2:0 203
0022(P)        44 11 28   0.0000   0.0000   0.0000   4:2:0 203
0021(B)        42 12 30   0.0000   0.0000   0.0000   4:2:0 203
0024(P)        48 12 28   0.0000   0.0000   0.0000   4:2:0 203
0023(B)        46 13 30   0.0000   0.0000   0.0000   4:2:0 219
0026(P)        52 13 28   0.0000   0.0000   0.0000   4:2:0 187
0025(B)        50 14 30   0.0000   0.0000   0.0000   4:2:0 219
0028(P)        56 14 28   0.0000   0.0000   0.0000   4:2:0 188
0027(B)        54 15 30   0.0000   0.0000   0.0000   4:2:0 172
POC是解码后的显示顺序,这里我有个疑问为什么POC不连续(0,2,4,6.....)并且还都是偶数另外Pic# P帧和B帧出现了相同的数字(例如0001(B)       2     2 和0004(P)       8     2   )且为什么第一个P帧无与之重复的B帧
解码后SnrY SnrU SnrV 为什么都为0呢,都为0,说明什么问题呢
请高手指点一二

1、实际编码的帧数为什么与FramesToBeEncoded的设置不同
——FramesToBeEncoded 只包括 I、P 帧;

2、为什么POC不连续(0,2,4,6.....)并且还都是偶数
——因为你是用的帧编码。如果是场编码顶场是偶数,低场是奇数;

3、Pic# P帧和B帧出现了相同的数字(例如0001(B)       2     2 和0004(P)       8     2   )
——看毕厚杰书上 175 页对 frame_num 的解释;

4、解码后SnrY SnrU SnrV 为什么都为0呢
——test_rec.yuv 与 test_dec.yuv 完全相同或者没有 test_rec.yuv。

Q:量化等级为28,test_rec.yuv 与 test_dec.yuv 应该不完全相同吧

A:无论量化等级为几,编码重建和解码重建都完全相同。JM 某些版本在开启 RC 的时候会出现不同的情况,那是属于 JM 的 bug,在 JM 高版本中已经修正了。