void print_xTS_field (int v, const char *str, u_char *b, int bit_offset) { long long xTS_32_30; long long xTS_29_15; long long xTS_14_0; long long ull; int bo = bit_offset; int v1 = v+1; out_nl (v,"%s:",str); indent (+1); xTS_32_30 = outBit_Sx_NL (v1,"bit[32..30]: ", b, bo+0, 3); outBit_Sx_NL (v1,"marker_bit: ", b, bo+3, 1); xTS_29_15 = outBit_Sx_NL (v1,"bit[29..15]: ", b, bo+4, 15); outBit_Sx_NL (v1,"marker_bit: ", b, bo+19, 1); xTS_14_0 = outBit_Sx_NL (v1,"bit[14..0]: ", b, bo+20,15); outBit_Sx_NL (v1,"marker_bit: ", b, bo+35, 1); ull = (xTS_32_30<<30) + (xTS_29_15<<15) + xTS_14_0; out (v," ==> %s: ", str); print_timebase90kHz (v, ull); out_NL (v); indent (-1); }
int ts_adaptation_field_extension (u_char *b) { int len; int afe_len; int ltw_flag; int pr_flag; int ss_flag; afe_len = outBit_Sx_NL (3,"adaptation_field_extension_length: ", b, 0, 8); b += 1; len = afe_len; if (afe_len == 0) return 1; ltw_flag = outBit_Sx_NL (3,"ltw_flag: ", b, 0, 1); pr_flag = outBit_Sx_NL (3,"piecewise_rate_flag: ", b, 1, 1); ss_flag = outBit_Sx_NL (3,"seamless_splice_flag: ", b, 2, 1); outBit_Sx_NL (3,"reserved: ", b, 3, 5); b += 1; len -= 1; if (ltw_flag) { outBit_Sx_NL (3,"ltw_valid_flag: ", b, 0, 1); outBit_Sx_NL (3,"ltw_offset: ", b, 1, 15); b += 2; len -= 2; } if (pr_flag) { outBit_Sx_NL (3,"reserved: ", b, 0, 2); outBit_Sx_NL (3,"piecewise_rate: ", b, 2, 22); b += 3; len -= 3; } if (ss_flag) { outBit_Sx_NL (3,"splice_type: ", b, 0, 4); { // $$$ TODO: this is basically the same as for PES long long xTS_32_30; long long xTS_29_15; long long xTS_14_0; long long ull; xTS_32_30 = outBit_Sx_NL (3,"DTS_next_AU[32..30]: ", b, 4, 3); outBit_Sx_NL (3,"marker_bit: ", b, 7, 1); xTS_29_15 = outBit_Sx_NL (3,"DTS_next_AU[29..15]: ", b, 8, 15); outBit_Sx_NL (3,"marker_bit: ", b, 23, 1); xTS_14_0 = outBit_Sx_NL (3,"DTS_next_AU[14..0]: ", b, 24, 15); outBit_Sx_NL (3,"marker_bit: ", b, 39, 1); ull = (xTS_32_30<<30) + (xTS_29_15<<15) + xTS_14_0; out (3," ==> DTS_next_AU: "); print_timebase90kHz (3, ull); out_NL (3); } b += 5; len -= 5; } if (len > 0) { out_nl (3,"(Reserved Bytes length: %d) ",len); print_databytes (3,"Reserved bytes:",b,len); } return afe_len + 1; }