in S3_HLS_H264_Nalu_Types.c [28:60]
S3_HLS_H264E_NALU_TYPE_E S3_HLS_H264_Nalu_Type(S3_HLS_FRAME_ITEM* item) {
if(NULL == item->second_part_start && 0 != item->second_part_length) {
return S3_HLS_H264E_NALU_UNSPECIFIED;
}
if(S3_HLS_NALU_BYTE_POS > item->first_part_length + item->second_part_length) {
return S3_HLS_H264E_NALU_UNSPECIFIED;
}
int i = 0;
while(i < item->first_part_length && i < S3_HLS_NALU_BYTE_POS - 1) {
if(h264_start_code[i] != item->first_part_start[i]) {
return S3_HLS_H264E_NALU_UNSPECIFIED;
}
i++;
}
while(i < S3_HLS_NALU_BYTE_POS - 1) {
// only enter this piece of code when first part length is not enought for finding the nalu byte
if(h264_start_code[i] != item->second_part_start[i - item->first_part_length]){
return S3_HLS_H264E_NALU_UNSPECIFIED;
}
i++;
}
if(i > item->first_part_length) {
return item->second_part_start[i - item->first_part_length] & S3_HLS_H264_NALU_BITS;
} else {
return item->first_part_start[i] & S3_HLS_H264_NALU_BITS;
}
}