ref->poc = poc;
ref->flags = HEVC_FRAME_FLAG_OUTPUT | HEVC_FRAME_FLAG_SHORT_REF;
+ if (s->sh.pic_output_flag == 0)
+ ref->flags &= ~(HEVC_FRAME_FLAG_OUTPUT);
ref->sequence = s->seq_decode;
ref->window = s->sps->output_window;
int min_poc = INT_MAX;
int i, min_idx, ret;
+ if (s->sh.no_output_of_prior_pics_flag == 1) {
+ for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) {
+ HEVCFrame *frame = &s->DPB[i];
+ if ((frame->flags & HEVC_FRAME_FLAG_OUTPUT) && frame->poc != s->poc &&
+ frame->sequence == s->seq_output) {
+ frame->flags &= ~(HEVC_FRAME_FLAG_OUTPUT);
+ }
+ }
+ }
+
for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) {
HEVCFrame *frame = &s->DPB[i];
if ((frame->flags & HEVC_FRAME_FLAG_OUTPUT) &&
(frame->window.top_offset >> vshift) * dst->linesize[i];
dst->data[i] += off;
}
+
+ out->key_frame = out->pict_type == AV_PICTURE_TYPE_I;
+
av_log(s->avctx, AV_LOG_DEBUG,
"Output frame with POC %d.\n", frame->poc);
return 1;