summaryrefslogtreecommitdiff
authorshihong.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)
commitfbb3db9e191fb7930ea5c44ad9597289b79228ab (patch)
tree5e38e773a489e905a0eeecd6c65de484678f8fcc
parent3f876a28e60ea0fad4cf80f69f490fafdb8e068d (diff)
downloadmedia_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>
Diffstat
-rw-r--r--drivers/frame_provider/decoder/h264_multi/h264_dpb.c10
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 ==