const uint8_t * const buf, int buf_size)
{
H264ParseContext *p = s->priv_data;
+ H2645RBSP rbsp = { NULL };
H2645NAL nal = { NULL };
int buf_index, next_avc;
unsigned int pps_id;
if (!buf_size)
return 0;
+ av_fast_padded_malloc(&rbsp.rbsp_buffer, &rbsp.rbsp_buffer_alloc_size, buf_size);
+ if (!rbsp.rbsp_buffer)
+ return AVERROR(ENOMEM);
+
buf_index = 0;
next_avc = p->is_avc ? 0 : buf_size;
for (;;) {
}
break;
}
- consumed = ff_h2645_extract_rbsp(buf + buf_index, src_length, &nal, 1);
+ consumed = ff_h2645_extract_rbsp(buf + buf_index, src_length, &rbsp, &nal, 1);
if (consumed < 0)
break;
p->last_frame_num = p->poc.frame_num;
}
- av_freep(&nal.rbsp_buffer);
+ av_freep(&rbsp.rbsp_buffer);
return 0; /* no need to evaluate the rest */
}
}
if (q264) {
- av_freep(&nal.rbsp_buffer);
+ av_freep(&rbsp.rbsp_buffer);
return 0;
}
/* didn't find a picture! */
av_log(avctx, AV_LOG_ERROR, "missing picture in access unit with size %d\n", buf_size);
fail:
- av_freep(&nal.rbsp_buffer);
+ av_freep(&rbsp.rbsp_buffer);
return -1;
}