]> git.sesse.net Git - ffmpeg/commitdiff
lavc/hevc: Add poc_msb_present filed in LongTermRPS
authorXu Guangxin <guangxin.xu@intel.com>
Tue, 12 May 2020 13:42:49 +0000 (21:42 +0800)
committerLinjie Fu <linjie.fu@intel.com>
Wed, 27 May 2020 06:39:36 +0000 (14:39 +0800)
delta_poc_msb_present_flag is needed in find_ref_idx() to
indicate whether MSB of POC should be taken into account.

Details in 8.3.2.

Signed-off-by: Xu Guangxin <guangxin.xu@intel.com>
Signed-off-by: Linjie Fu <linjie.fu@intel.com>
libavcodec/hevc_ps.h
libavcodec/hevcdec.c

index 8e1bccdaaf842be37d75b82201a13cbc28024cc7..238edd3ddce20d52446471f90cf8f18c1e918ccf 100644 (file)
@@ -41,6 +41,7 @@ typedef struct ShortTermRPS {
 
 typedef struct LongTermRPS {
     int     poc[32];
+    uint8_t poc_msb_present[32];
     uint8_t used[32];
     uint8_t nb_refs;
 } LongTermRPS;
index 78299f4b32a7c71423b3fab5e676af04bbfd5415..0772608a30e0bc812557809768586a915e87eada 100644 (file)
@@ -280,7 +280,6 @@ static int decode_lt_rps(HEVCContext *s, LongTermRPS *rps, GetBitContext *gb)
     rps->nb_refs = nb_sh + nb_sps;
 
     for (i = 0; i < rps->nb_refs; i++) {
-        uint8_t delta_poc_msb_present;
 
         if (i < nb_sps) {
             uint8_t lt_idx_sps = 0;
@@ -295,8 +294,8 @@ static int decode_lt_rps(HEVCContext *s, LongTermRPS *rps, GetBitContext *gb)
             rps->used[i] = get_bits1(gb);
         }
 
-        delta_poc_msb_present = get_bits1(gb);
-        if (delta_poc_msb_present) {
+        rps->poc_msb_present[i] = get_bits1(gb);
+        if (rps->poc_msb_present[i]) {
             int64_t delta = get_ue_golomb_long(gb);
             int64_t poc;