author | shihong.zheng <shihong.zheng@amlogic.com> | 2019-01-17 11:18:41 (GMT) |
---|---|---|
committer | Luan Yuan <luan.yuan@amlogic.com> | 2019-01-18 02:55:06 (GMT) |
commit | fbb3db9e191fb7930ea5c44ad9597289b79228ab (patch) | |
tree | 5e38e773a489e905a0eeecd6c65de484678f8fcc | |
parent | 3f876a28e60ea0fad4cf80f69f490fafdb8e068d (diff) | |
download | media_modules-fbb3db9e191fb7930ea5c44ad9597289b79228ab.zip media_modules-fbb3db9e191fb7930ea5c44ad9597289b79228ab.tar.gz media_modules-fbb3db9e191fb7930ea5c44ad9597289b79228ab.tar.bz2 |
h264_dpb: fix a gts crash problem. [1/1]
PD#SWPL-4303
Problem:
gts test crash at reorder_ref_pic_list+0x16c/0x594
Solution:
add a condition to filter NULL pointer
Verify:
p215
Change-Id: I1f8302f5b531be08523cf501252a81ef38a94546
Signed-off-by: shihong.zheng <shihong.zheng@amlogic.com>
-rw-r--r-- | drivers/frame_provider/decoder/h264_multi/h264_dpb.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/frame_provider/decoder/h264_multi/h264_dpb.c b/drivers/frame_provider/decoder/h264_multi/h264_dpb.c index c26c354..82db15f 100644 --- a/drivers/frame_provider/decoder/h264_multi/h264_dpb.c +++ b/drivers/frame_provider/decoder/h264_multi/h264_dpb.c @@ -4943,7 +4943,8 @@ static struct StorablePicture *get_long_term_pic(struct Slice *currSlice, for (i = 0; i < p_Dpb->ltref_frames_in_buffer; i++) { if (currSlice->structure == FRAME) { if (p_Dpb->fs_ltref[i]->is_reference == 3) - if ((p_Dpb->fs_ltref[i]->frame-> + if ((p_Dpb->fs_ltref[i]->frame) && + (p_Dpb->fs_ltref[i]->frame-> is_long_term) && (p_Dpb->fs_ltref[i]->frame-> long_term_pic_num == @@ -4951,13 +4952,16 @@ static struct StorablePicture *get_long_term_pic(struct Slice *currSlice, return p_Dpb->fs_ltref[i]->frame; } else { if (p_Dpb->fs_ltref[i]->is_reference & 1) - if ((p_Dpb->fs_ltref[i]->top_field-> + if ((p_Dpb->fs_ltref[i]->top_field) && + (p_Dpb->fs_ltref[i]->top_field-> is_long_term) && (p_Dpb->fs_ltref[i]->top_field-> long_term_pic_num == LongtermPicNum)) return p_Dpb->fs_ltref[i]->top_field; + if (p_Dpb->fs_ltref[i]->is_reference & 2) - if ((p_Dpb->fs_ltref[i]->bottom_field-> + if ((p_Dpb->fs_ltref[i]->bottom_field) && + (p_Dpb->fs_ltref[i]->bottom_field-> is_long_term) && (p_Dpb->fs_ltref[i]->bottom_field-> long_term_pic_num == |