diff --git a/draft-avtransport-spec.bs b/draft-avtransport-spec.bs index 649789f..f6b1b08 100644 --- a/draft-avtransport-spec.bs +++ b/draft-avtransport-spec.bs @@ -1473,6 +1473,49 @@ Any undefined values are hereby reserved and must not be present in a compliant AVTransport stream with this version. +### Stream data segmentation ### {#stream-data-segment-packets} + +Packets can be split up into separate chunks that may be received out of order +and assembled. This allows transmission over switched networks with a limited MTU, +or prevents very large packets from one stream interfering with another stream. +The packet structure used for segments is the [[#generic-data-segment-packets]] from +[[#generic-data-packets]], with the following descriptors: + +
+ + + + + + + + + + + + + +
Descriptor valueNameStructureDescription
''0x00FF''stream_data_segment_descriptor[[#generic-data-segment-packets]]Non-final segment for segmented codec configuration.
+
+ +The size of the final assembled packet is the sum of all [=seg_length=] fields, +plus the [=data_length=] field from the [[#stream-data-packets]]. + +Data segments and packets may arrive out of order and be duplicated. +Implementations must reorder them, deduplicate them and assemble them into +complete packets. + +Implementations may try to decode incomplete data packets with missing segments +due to latency concerns. + +Senders may send duplicate segments to compensate for packet loss, +but should use [[#fec-grouping-packets]] or [[#stream-data-parity-packets]] instead. + +Implementations should discard any packets and segments that arrive after their +presentation time. Implementations should drop any packets and segments +that arrive with unrealistically far away presentation times. + + ## Extended stream data ## {#extended-stream-data-packets} Depending upon the codec, using an extended stream data header may be required. @@ -1562,54 +1605,48 @@ It is laid out in the following way: 64-bits of LDPC parity data to correct the previous 224 bits of the packet. - [=data_length=]*b(8) - [=packet_data=] - payload - The packet data itself. - - i(64) [=duration=] The duration of this packet in stream timebase unis. - + u(32) total_data_length The total size of all data needed to receive the payload correctly. Must be either 0 if unknown, or the total size of the payload across all segments. - + u(32) side_data_length Length of the side data, if any. - + u(32) side_data_offset The offset within the packet where the side data is located at. - + u(8) side_data_type The size of the data in this packet. - + b(48) [=padding=] Padding, reserved for future use. MUST be ''0x0''. - + b(64) [=ldpc_288_224=] [=LDPC(288, 224)=] 64-bits of LDPC parity data to correct the previous 224 bits of the packet. - + [=data_length=]*b(8) [=packet_data=] payload @@ -1621,48 +1658,7 @@ It is laid out in the following way: Extended stream data packets should only be used if there's a need to use them. Regular stream data packets have a much lower overhead. - -### Stream data segmentation ### {#stream-data-segment-packets} - -Packets can be split up into separate chunks that may be received out of order -and assembled. This allows transmission over switched networks with a limited MTU, -or prevents very large packets from one stream interfering with another stream. -The packet structure used for segments is the [[#generic-data-segment-packets]] from -[[#generic-data-packets]], with the following descriptors: - -
- - - - - - - - - - - - - -
Descriptor valueNameStructureDescription
''0x00FF''stream_data_segment_descriptor[[#generic-data-segment-packets]]Non-final segment for segmented codec configuration.
-
- -The size of the final assembled packet is the sum of all [=seg_length=] fields, -plus the [=data_length=] field from the [[#stream-data-packets]]. - -Data segments and packets may arrive out of order and be duplicated. -Implementations must reorder them, deduplicate them and assemble them into -complete packets. - -Implementations may try to decode incomplete data packets with missing segments -due to latency concerns. - -Senders may send duplicate segments to compensate for packet loss, -but should use [[#fec-grouping-packets]] or [[#stream-data-parity-packets]] instead. - -Implementations should discard any packets and segments that arrive after their -presentation time. Implementations should drop any packets and segments -that arrive with unrealistically far away presentation times. +[=side_data_type=] must be ignored if [=side_data_length=] is 0. ## FEC grouping ## {#fec-grouping-packets}