I am trying to construct EIT table sections as specified in EN 300 468. I have successfully parsed the packets into data structures (in Java), and can access the payload of each packet.

I don't understand how the table section is split across the packets, the specification is slightly confusing/uncertain. What is the process, assuming one can filter a stream of TS packets by PID, to construct such a table?

I understand the payload_unit_start_indicator being set, indicates that the first byte of the payload field is a pointer to the first byte of the new section, is that an offset from the start of the payload?

If for example I receive a TS packet, and I identify it as the start of a section, do I then read the bytes into an array, determine the section length from the header and then keep filling my array with more and more TS packet payloads of the same pid until bytesRead == sectionLength?

Thanks for reading, any advice or help at all would be hugely appreciated!