# Reuters WNE Packet Format Format is little endian. Common bytes: - Byte 0: always 0x00 - Byte 1: "Packet family", always 0x01, 0x03 or 0xff - Bytes 2-3: Packet length - Bytes 4-7: Session ID. This changes for every news story. This format looks suspciously like it's TLV based, but I couldn't figure out how exactly the T's and L's are laid out. (Perhaps they use 2 bytes?) All multi-byte integers are little endian. ## About byte 1 Byte 1 determines what kind of packet we're dealing with. | Byte 1 | Packet Type | |--------|---------------------------------------------------------------------------------| | 0x01 | A/V Payload, Metadata Payload, Metadata announcement, or Metadata closer packet | | 0x03 | A/V announcement | | 0xff | A/V closer | ## Metadata Announcement packet structure (C) | Byte Index | Description | |------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| | 0 | always 0x00 | | 1 | always 0x01 | | 2-3 | Packet length | | 4-7 | Session ID | | 8 | ECC group ID (shared with B/C) | | 9 | ? | | 10 | always 0x00 ? | | 11 | ECC block counter, incremented by one each packet | | 12 | ECC flags, if this is 0, the payload is raw data, if this is 0x07, the payload is ECC data and the next packet will have ECC group incremented by one. | | 13 | usually 0x00, sometimes 0x20, purpose not known | | 14-15 | If byte 12 is 0, then Packet length minus 15, If byte 12 is 0x07, then ? | 16-end | If ecc flags is 0x07, then this is an ECC payload, if ECC flags is 0x00, continue reading. | | Byte Index if ECC flags is 0 | Description | |------------------------------|----------------------------------------------------------| | 16 | Always 0x00 | | 17 | Always 0x03 | | 18-19 | Packet length minus 16 | | 20-23 | File ID. This changes for every metadata file. | | 24-28 | Block ID. Incremented by one for every part of the file. | | 29-32 | Always 0x00000000 | | 33-end | Payload | ## Metadata Payload packet structure (B) | Byte Index | Description | |------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 0 | always 0x00 | | 1 | always 0x01 | | 2-3 | Packet length | | 4-7 | Session ID | | 8 | ECC group ID (shared with B/C) | | 9 | ? | | 10 | always 0x00 ? | | 11 | ECC block counter, incremented by one each packet | | 12 | ECC flags, if this is 0, the payload is raw data, if this is 0x07, the payload is ECC data and the next packet will have ECC group incremented by one, and the block counter set to 0. | | 13 | usually 0x00, sometimes 0x20, purpose not known | | 14-15 | If byte 12 is 0, then Packet length minus 15, If byte 12 is 0x07, then ? | | 16-end | If ecc flags is 0x07, then this is an ECC payload, if ECC flags is 0x00, continue reading. | | Byte Index if ECC flags is 0 | Description | |------------------------------|----------------------------------------------------------| | 16 | Always 0x00 | | 17 | Always 0x01 | | 18-19 | Packet length minus 16 | | 20-23 | File ID. This changes for every metadata file. | | 24-28 | Block ID. Incremented by one for every part of the file. | | 29-32 | Always 0x00000000 | | 33-end | Payload | ## A/V Announcement packet structure (D) | Byte Index | Description | |------------|--------------------| | 0 | always 0x00 | | 1 | always 0x03 | | 2-3 | Packet length | | 4-7 | Session ID | | 8-11 | Packet length - 8 | | 12-15 | Packet length - 12 | ## AV Payload packet structure (A) | Byte Index | Description | |------------|----------------| | 0 | always 0x00 | | 1 | always 0x01 | | 2-3 | Packet length | | 4-7 | Session ID |