return "SPS header missing, cannot decode SEI";
case DE265_WARNING_COLLOCATED_MOTION_VECTOR_OUTSIDE_IMAGE_AREA:
return "collocated motion-vector is outside image area";
+ case DE265_WARNING_PCM_BITDEPTH_TOO_LARGE:
+ return "PCM bit-depth too large";
default: return "unknown error";
}
DE265_NON_EXISTING_LT_REFERENCE_CANDIDATE_IN_SLICE_HEADER=1023,
DE265_WARNING_CANNOT_APPLY_SAO_OUT_OF_MEMORY=1024,
DE265_WARNING_SPS_MISSING_CANNOT_DECODE_SEI=1025,
- DE265_WARNING_COLLOCATED_MOTION_VECTOR_OUTSIDE_IMAGE_AREA=1026
+ DE265_WARNING_COLLOCATED_MOTION_VECTOR_OUTSIDE_IMAGE_AREA=1026,
+ DE265_WARNING_PCM_BITDEPTH_TOO_LARGE=1027
} de265_error;
LIBDE265_API const char* de265_get_error_text(de265_error err);
READ_VLC_OFFSET(log2_min_pcm_luma_coding_block_size, uvlc, 3);
READ_VLC(log2_diff_max_min_pcm_luma_coding_block_size, uvlc);
pcm_loop_filter_disable_flag = get_bits(br,1);
+
+ if (pcm_sample_bit_depth_luma > bit_depth_luma) {
+ errqueue->add_warning(DE265_WARNING_PCM_BITDEPTH_TOO_LARGE, false);
+ return DE265_ERROR_CODED_PARAMETER_OUT_OF_RANGE;
+ }
+
+ if (pcm_sample_bit_depth_chroma > bit_depth_chroma) {
+ errqueue->add_warning(DE265_WARNING_PCM_BITDEPTH_TOO_LARGE, false);
+ return DE265_ERROR_CODED_PARAMETER_OUT_OF_RANGE;
+ }
}
else {
pcm_sample_bit_depth_luma = 0;