changeset 2793:ae85da6c5c2f libavcodec

more fine grained skip_frame
author michael
date Thu, 14 Jul 2005 21:57:22 +0000
parents 0a8c847ad5e7
children ed1ab1566353
files h264.c
diffstat 1 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/h264.c	Thu Jul 14 21:39:36 2005 +0000
+++ b/h264.c	Thu Jul 14 21:57:22 2005 +0000
@@ -7267,7 +7267,11 @@
                 av_log(h->s.avctx, AV_LOG_ERROR, "decode_slice_header error\n");
                 break;
             }
-            if(h->redundant_pic_count==0 && s->hurry_up < 5 && avctx->skip_frame < AVDISCARD_ALL)
+            if(h->redundant_pic_count==0 && s->hurry_up < 5 
+               && (avctx->skip_frame < AVDISCARD_NONREF || h->nal_ref_idc)
+               && (avctx->skip_frame < AVDISCARD_BIDIR  || h->slice_type!=B_TYPE)
+               && (avctx->skip_frame < AVDISCARD_NONKEY || h->slice_type==I_TYPE)
+               && avctx->skip_frame < AVDISCARD_ALL)
                 decode_slice(h);
             break;
         case NAL_DPA:
@@ -7289,7 +7293,11 @@
             h->inter_gb_ptr= &h->inter_gb;
 
             if(h->redundant_pic_count==0 && h->intra_gb_ptr && s->data_partitioning 
-               && s->hurry_up < 5 && avctx->skip_frame < AVDISCARD_ALL)
+               && s->hurry_up < 5
+               && (avctx->skip_frame < AVDISCARD_NONREF || h->nal_ref_idc)
+               && (avctx->skip_frame < AVDISCARD_BIDIR  || h->slice_type!=B_TYPE)
+               && (avctx->skip_frame < AVDISCARD_NONKEY || h->slice_type==I_TYPE)
+               && avctx->skip_frame < AVDISCARD_ALL)
                 decode_slice(h);
             break;
         case NAL_SEI: