in S3_HLS_TS.c [283:313]
void S3_HLS_TS_Fill_Remaining_Length(uint32_t data_length) {
TS_DEBUG("Input Data Length:%d\n", data_length);
uint8_t length = 4; // base length
if(ts_header[S3_HLS_TS_ADOPTION_FLAG_POS] & S3_HLS_TS_ADOPTION_FLAG) {
TS_DEBUG("Has Adoption\n");
length ++; // do have adoption length field
}
if(ts_header[S3_HLS_TS_ADOPTION_LENGTH_POS] > 0) {
TS_DEBUG("Adoption Length: %d\n", ts_header[S3_HLS_TS_ADOPTION_LENGTH_POS]);
length += ts_header[S3_HLS_TS_ADOPTION_LENGTH_POS]; // do have adoption length
}
TS_DEBUG("Data + Header Length: %d\n", length + data_length);
if(S3_HLS_TS_PACKET_SIZE > length + data_length) {
// need to fill some part
uint8_t gap = S3_HLS_TS_PACKET_SIZE - length - data_length;
if(ts_header[S3_HLS_TS_ADOPTION_FLAG_POS] & S3_HLS_TS_ADOPTION_FLAG) {
// already contains an adoption length field
ts_header[S3_HLS_TS_ADOPTION_LENGTH_POS] += gap;
} else {
// need add an adoption length
gap--; // due to need add adoption length so minus 1
ts_header[S3_HLS_TS_ADOPTION_FLAG_POS] |= S3_HLS_TS_ADOPTION_FLAG;
ts_header[S3_HLS_TS_ADOPTION_LENGTH_POS] = gap;
if(gap > 0) {
ts_header[S3_HLS_TS_RANDOM_ACCESS_FLAG_POS] = 0; // mark as no flags
}
}
}
}