vp9_receive_raw_frame: add missing setjmp
allocations done within this function are protected with vpx_internal_error; adding the setjmp fixes a crash in vp9_lookahead_push() under low memory conditions. Change-Id: I4b79dca37cc7fadc4b7633f0db44c0e406799bc6
This commit is contained in:
parent
34d12d1160
commit
6c323e359a
@ -4153,13 +4153,22 @@ static void check_initial_width(VP9_COMP *cpi,
|
|||||||
int vp9_receive_raw_frame(VP9_COMP *cpi, unsigned int frame_flags,
|
int vp9_receive_raw_frame(VP9_COMP *cpi, unsigned int frame_flags,
|
||||||
YV12_BUFFER_CONFIG *sd, int64_t time_stamp,
|
YV12_BUFFER_CONFIG *sd, int64_t time_stamp,
|
||||||
int64_t end_time) {
|
int64_t end_time) {
|
||||||
VP9_COMMON *cm = &cpi->common;
|
VP9_COMMON *volatile const cm = &cpi->common;
|
||||||
struct vpx_usec_timer timer;
|
struct vpx_usec_timer timer;
|
||||||
int res = 0;
|
volatile int res = 0;
|
||||||
const int subsampling_x = sd->subsampling_x;
|
const int subsampling_x = sd->subsampling_x;
|
||||||
const int subsampling_y = sd->subsampling_y;
|
const int subsampling_y = sd->subsampling_y;
|
||||||
#if CONFIG_VP9_HIGHBITDEPTH
|
#if CONFIG_VP9_HIGHBITDEPTH
|
||||||
const int use_highbitdepth = (sd->flags & YV12_FLAG_HIGHBITDEPTH) != 0;
|
const int use_highbitdepth = (sd->flags & YV12_FLAG_HIGHBITDEPTH) != 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (setjmp(cm->error.jmp)) {
|
||||||
|
cm->error.setjmp = 0;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
cm->error.setjmp = 1;
|
||||||
|
|
||||||
|
#if CONFIG_VP9_HIGHBITDEPTH
|
||||||
check_initial_width(cpi, use_highbitdepth, subsampling_x, subsampling_y);
|
check_initial_width(cpi, use_highbitdepth, subsampling_x, subsampling_y);
|
||||||
#else
|
#else
|
||||||
check_initial_width(cpi, subsampling_x, subsampling_y);
|
check_initial_width(cpi, subsampling_x, subsampling_y);
|
||||||
@ -4192,6 +4201,7 @@ int vp9_receive_raw_frame(VP9_COMP *cpi, unsigned int frame_flags,
|
|||||||
res = -1;
|
res = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cm->error.setjmp = 0;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user