mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
libavcodec/hevcdec: implement skip_frame
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
cfd52094c0
commit
05c1c79d37
@ -2905,6 +2905,13 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (
|
||||
(s->avctx->skip_frame >= AVDISCARD_BIDIR && s->sh.slice_type == HEVC_SLICE_B) ||
|
||||
(s->avctx->skip_frame >= AVDISCARD_NONINTRA && s->sh.slice_type != HEVC_SLICE_I) ||
|
||||
(s->avctx->skip_frame >= AVDISCARD_NONKEY && !IS_IDR(s))) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (s->sh.first_slice_in_pic_flag) {
|
||||
if (s->max_ra == INT_MAX) {
|
||||
if (s->nal_unit_type == HEVC_NAL_CRA_NUT || IS_BLA(s)) {
|
||||
@ -3028,7 +3035,14 @@ static int decode_nal_units(HEVCContext *s, const uint8_t *buf, int length)
|
||||
|
||||
/* decode the NAL units */
|
||||
for (i = 0; i < s->pkt.nb_nals; i++) {
|
||||
ret = decode_nal_unit(s, &s->pkt.nals[i]);
|
||||
H2645NAL *nal = &s->pkt.nals[i];
|
||||
|
||||
if (s->avctx->skip_frame >= AVDISCARD_ALL ||
|
||||
(s->avctx->skip_frame >= AVDISCARD_NONREF
|
||||
&& ff_hevc_nal_is_nonref(nal->type)))
|
||||
continue;
|
||||
|
||||
ret = decode_nal_unit(s, nal);
|
||||
if (ret < 0) {
|
||||
av_log(s->avctx, AV_LOG_WARNING,
|
||||
"Error parsing NAL unit #%d.\n", i);
|
||||
|
Loading…
Reference in New Issue
Block a user