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

Phil Kerr phil at plus24.com
Fri Feb 4 08:32:06 PST 2005


Hi Tor,

Tor-Einar Jarnbjo wrote:

> 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.

Got it.

>
>>> 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.


The only other CRC implementation I've seen in an RFC was written in 
Verilog.  As a lot of implementations are going to be written in C/C++ 
it's a reasonable language to use, I'm not sure how many implementations 
will be written purely for a DSP stack.  I think the compromise of 
either typedefing, or explaining the sizes of the vars is good though.

>
>>> * 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?

Yes.  There may not be anything a transmitter can due during the life of 
a session, but having details of how many clients are dropping out can 
be used to plan for other strategies like running the streams at lower 
bitrates, improving infrastructure and so on.

-P

>
> Tor
>
>



More information about the xiph-rtp mailing list