[xiph-rtp] Updated Vorbis and new Theora I-D's

Tor-Einar Jarnbjo Tor-Einar at Jarnbjo.de
Thu Feb 3 16:56:48 PST 2005


Phil Kerr wrote:

> Do you mean that it isn't clear that each Vorbis payload needs a VDT 
> octet?  There is only one VDT per packet, but after working on the 
> Theora I-D (which uses an 8 bit field) it became clear that it is 
> possible to have a VDT for each payload packet.  What do other think, 
> stick with only allowing one payload type per packet or allow mixed?  
> There will be complications for fragmented packets though of the mixed 
> route is taken.

Hi Phil,

As Ralph already pointed out, is the packet type already defined by the 
first octet in the packet data. What I mean is, that I don't see any 
reason for including this in the payload header as well. Alternatively 
use the two bit VDT field in the payload header, but then skip the first 
octet of the packet data, as the packet type is already defined.

>> It may also be relevant, that the datatype sizes are implementation 
>> dependent and that the quoted C function may produce wrong results on 
>> systems where ints are not 32 bits or chars not 8 bit.
>>  
>
> Good point.  The biggest issue is 32 bit ints as I don't think there 
> are many platforms which use a different size for unsigned chars 
> (might be worth checking though).

I haven't been programming much C for some time, but I am pretty sure, 
that DSP systems often have wider chars than 8 bits, as the DSP is not 
able to address the memory more exactly than e.g. every 4 bytes. 
Platforms using Unicode as the default character encoding may also have 
16 or 32 bits chars. A simple fix for the example code could be to use 
typedefs like UINT32 and UINT8 and then simply write a few lines of 
text, explaining that they are unsigned 32 and 8 bit integers. A better 
fix would be to write a more detailed pseudo language description of the 
algorithm or perhaps refer to another RFC where the same algorithm is 
already used and described or at least rewrite the example code to not 
use C mechanisms and syntax not easily understood by non-C-programmers. 
As is, the code example assumes knowledge of underflow handling 
(assigning -1 to an unsigned int) and the meaning of the >>, ^ and ~ 
operators is not exactly intuitive.

>> * Section 3.2 and 6: In 3.2 it's stated that "feedback reports on 
>> lost and dropped packets MUST be sent back via RTCP". In section 6, 
>> this requirement is reduced to that "Vorbis clients SHOULD send 
>> regular receiver reports detailing congestion." At least in a 
>> multicast scenario, it's mostly pointless for the client to report 
>> packet loss to the server, as there is no way to fix the situation.
>>  
>
> I know the AVT are keen on having this kind of info feeded back for 
> monitoring.  Perhaps the first MUST can be reduced to a SHOULD? 


I am not sure what the AVT is meaning and not, but it does not make 
sense to me at all for a client to send feedbackreports to a multicast 
transmitter, as the transmitter is probably not able to do anything 
about bad reception anyway. Or is the purpose of this to let the 
transmitter use e.g. RTSP mechanisms to redirect the client to a lower 
bandwith stream?

Tor



More information about the xiph-rtp mailing list