[xiph-rtp] vorbis-rtp update
David Barrett
dbarrett at quinthar.com
Sun Sep 25 12:33:29 PDT 2005
Thanks Luca, here are my comments:
Section 4
> The delivery vectors in use are specified by an SDP attribute to
> indicate the method and URI where the configuration and codebook data
> can be obtained if applies. Different delivery methods COULD be
> advertized for the same session. The in-band codebook delivery
> SHOULD be considered as baseline, off-band delivery methods that
> don't use RTP will not be described in this document. {FIXME add
> reference to documents where it is described? Remove the last
> sentence?}
In this draft it sounds like you're saying that inline codebook delivery
is not only the baseline, but the one and only method discussed in the
document (though there are hooks for others, including HTTP and reliable
inline with ACKs, to be documented elsewhere). Personally I agree with
this approach, but I thought the general consensus was that both
unreliable inline *and* HTTP would be documented here, and that in fact
*HTTP* was the baseline (ie, "implementations SHOULD use HTTP if possible").
But again, from my perspective, I like and agree with the approach
you've taken.
Incidentally, I'd suggest avoiding the term "baseline" as I don't know
if that has a universally precise meaning. Rather, I'd recommend
sticking with SHOULD, CAN, MUST, etc.
> {FIXME keep the codebook ident field or use a shorter
> tag field?}
I'm not passionate either way (rather, I see advantages to both ways),
but I guess I'd vote keeping the "codebook ident" field.
However, I'd recommend adding a blurb somewhere to the effect of
"implementations SHOULD handle gracefully (but MUST endure without
critical failure) the the unlikely event of a CRC32 collision where two
different codebooks have the same Codebook Ident."
> 4.1. Initial SDP Header Setup
>
> The initial configuration MUST be reported in the configuration
> parameter. All the configuration headers known in advance SHOULD be
> reported in the same way. {FIXME better wording, if the tag id will
> be used instead of the Codebook hash here should go the mappings in
> the for of list order -> tag id number. Define the metadata/
> configuration data in a non ambiguous way. Define the format used.}
What precisely is "the initial configuration"? I'd suggest we define
these terms more explicitly. For the meantime, I'm assuming this:
- "The Setup" the payload of the setup packet
- "The Codebook" the payload of the codebook packet
- "The Metadata" the payload of the metadata packet
- "The Configuration" a triplet of (setup, codebook)
So here, when you say the initial configuration "must be reported in the
configuration parameter", what precisely do you mean? Specifically:
By "initial" do you mean "the configuration of the first audio packet"?
By "configuration" do you mean "setup" or "setup+metadata"?
And furthermore, why make this a MUST requirement, or indeed a
requirement at all? Basically, I don't get the intent of this section.
Granted, I see that *something* must be defined in SDP in order for
clients and servers to negotiate capabilties. But given that everything
can be changed on the fly, the SDP is only advisory -- the server is not
bound to be limited by what was defined in the SDP. (It obviously
SHOULD stick within the client has agreed to accept, but it needn't.)
> 4.2. In-band Header Transmission
>
> The three header data blocks are sent in-band with the packet type
> bits set to match the payload type. Metadata packets SHOULD be empty
> and metadata information SHOULD be delivered using SDP. Clients MUST
> be capable of dealing with periodic re-transmission of the
> configuration headers.
>
> ...
> 4.2.3. Metadata Header
>
> {FIXME:I'd make it completely optional} With the payload type flag
> set to 3, this indicates that the packet contain the comment
> metadata, such as artist name, track title and so on. These metadata
> messages SHOULD be delivered using SDP and are not intended to be
> fully descriptive but to offer basic track/song information. The
> message MUST be sent at the start of the stream, together with the
> setup and codebook headers, the Metadata packet SHOULD be empty.
> During a session the metadata associated with the stream may change
> from that specified at the start, e.g. a live concert broadcast
> changing acts/scenes, so clients MUST have the ability to receive
> Metadata header blocks. Details on the format of the comments can be
> found in the Vorbis documentation [13].
The treatment and use of emtpy metadata packets is confusing to me. I
believe a more intuitive and semantically-correct approach is to make
metadata headers optional, and say:
- Servers SHOULD define metadata in the SDP
- Servers SHOULD NOT send metadata packets if metadata has not changed
- Servers CAN send an empty metadata packet to clear the metadata
Thus when setting up a connection, you'd typically define the metadata
in the SDP, and then NOT send it again inline because it hasn't changed
from its last definition (in the SDP).
> 4.2.2.1. Codebook CRC32 Generation
I just realized I've been totally mistaken about the meaning of the
'Codebook Ident' -- I've been thinking it refers to the combination of
(setup+codebook), but in fact it refers *exclusively* to a single
codebook. Hm...
> 4.2.1. Setup Header
Given my above confusion about 'Codebook Ident', can you clarify for me
the relationship between codebooks and setups? It seems that the setup
can and should be specified in the SDP, and the setup can change with
inline transmission. However, can I re-use the same codebook with
multiple setups? In practice does anyone do this? If not, I'd advise
we change 'Codebook Ident' to 'Configuration Ident', and then define a
'Configuration' as "A setup and its matching codebook". And given this
definition, a 'Configuration Ident' would need its CRC32 calculated with
the union of both configuration and setup payloads.
Basically, I'm confused about the relationship setups, codebooks,
Codebook Idents, and configurations. Can you straighten me out here?
Thanks Luca for your great work!
-david
More information about the xiph-rtp
mailing list