|
|
@ -194,11 +194,11 @@ int ff_h264_parse_ref_count(int *plist_count, int ref_count[2], |
|
|
|
if (num_ref_idx_active_override_flag) { |
|
|
|
if (num_ref_idx_active_override_flag) { |
|
|
|
ref_count[0] = get_ue_golomb(gb) + 1; |
|
|
|
ref_count[0] = get_ue_golomb(gb) + 1; |
|
|
|
if (ref_count[0] < 1) |
|
|
|
if (ref_count[0] < 1) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
goto fail; |
|
|
|
if (slice_type_nos == AV_PICTURE_TYPE_B) { |
|
|
|
if (slice_type_nos == AV_PICTURE_TYPE_B) { |
|
|
|
ref_count[1] = get_ue_golomb(gb) + 1; |
|
|
|
ref_count[1] = get_ue_golomb(gb) + 1; |
|
|
|
if (ref_count[1] < 1) |
|
|
|
if (ref_count[1] < 1) |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
goto fail; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -213,12 +213,15 @@ int ff_h264_parse_ref_count(int *plist_count, int ref_count[2], |
|
|
|
|
|
|
|
|
|
|
|
max_refs = picture_structure == PICT_FRAME ? 16 : 32; |
|
|
|
max_refs = picture_structure == PICT_FRAME ? 16 : 32; |
|
|
|
|
|
|
|
|
|
|
|
if (ref_count[0] > max_refs || ref_count[1] > max_refs) { |
|
|
|
if (ref_count[0] > max_refs || ref_count[1] > max_refs) |
|
|
|
ref_count[0] = ref_count[1] = 0; |
|
|
|
goto fail; |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*plist_count = list_count; |
|
|
|
*plist_count = list_count; |
|
|
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
|
|
|
|
fail: |
|
|
|
|
|
|
|
*plist_count = 0; |
|
|
|
|
|
|
|
ref_count[0] = 0; |
|
|
|
|
|
|
|
ref_count[1] = 0; |
|
|
|
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
} |
|
|
|
} |
|
|
|