It should only be set after the decoder state has been fully initialized
for using that SPS.
Fixes possible invalid reads on get_format() failure.
CC: libav-stable@libav.org
s->ps.pps = (HEVCPPS*)s->ps.pps_list[sh->pps_id]->data;
if (s->ps.sps != (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data) {
s->ps.pps = (HEVCPPS*)s->ps.pps_list[sh->pps_id]->data;
if (s->ps.sps != (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data) {
+ const HEVCSPS *sps = (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data;
enum AVPixelFormat pix_fmt;
enum AVPixelFormat pix_fmt;
- s->ps.sps = (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data;
-
- pix_fmt = get_format(s, s->ps.sps);
+ pix_fmt = get_format(s, sps);
if (pix_fmt < 0)
return pix_fmt;
if (pix_fmt < 0)
return pix_fmt;
- ret = set_sps(s, s->ps.sps, pix_fmt);
+ ret = set_sps(s, sps, pix_fmt);