RTP stands for Real-Time Transport Protocol.
Aside audio and video tracks, some movies also have other tracks called RTP or Hint tracks.
RTP tracks are used when a movie is sent over a network (streaming, broadcasting) to increase quality and reliability. It contains information that helps the receiver to reconstruct the incoming stream into a movie.
But this information is not needed if the movie is stored as a file. A movie stripped from all RTP data will work well.
Corrupt movies with RTP tracks usually come from QuickTime Broadcaster sessions that have crashed.
During the repair process, RTP data has to be identified and removed.
It's not really difficult, as RTP packets are always formatted like this:
- Header with regular structure described below
- Data block whose length can be calculated (see below)
(Numbers used below are in canonical hexadecimal format unless otherwise specified)
The header begins with 00 nn 00 00 where nn is number of structures inside it.
Each structure contains: 02 FF xx yy where xx yy represents a length between 1 and 65535.
First structure has also a length encoded at offset +24.
If you add all those n+1 length, you find the exact length of the RTP block (including header).
Note that if 'rtpo' is found at offset +24, the structures are 16 bytes longer than usual, but the rest remains valid.
RTP packets identification helps in the repair process:
As they usually precede an audio or video block, their identification leads to reliable identification of audio and video blocks. This is true at least if there is one RTP packet before and after each audio/video block (interleaving)
As RTP data is not needed, removing it makes the remaining data easier to parse and repair
Finally, RTP packets contain redundant data from audio and video track, and as such, can help restoring damaged bits of media, but this property has so far never been put in practice.
In this HexEdit view, the RTP packet header is visible in bold:
Length is 0x0216 + 0x0020 = 0x0236
0000a00: d5e3 7c4b 583c 779f e6c1 b05b c000 0100 ..|KX<w....[.... 0000a10: 0000 0000 0000 e000 0200 0000 0102 ff02 ................ 0000a20: 1600 0000 0200 0000 2000 0000 0000 2008 ........ ..... . 0000a30: 7808 0801 1a17 ad50 971b 2512 c121 a044 x......P..%..!.D
Hint tracks can be identified in Dumpster by the 'hint' subType in 'hdlr' and a 'tref' containing $6869 $6E74 that is ASCII means ... hint.