[Live-devel] channel mapping question

David Schwartz newsletters at thetoolwiz.com
Mon May 19 12:11:47 PDT 2014


I’m trying to figure out track <—> channel mappings in SDP payloads.

The DESCRIBE command to an RTSP server is giving me the following SDP data (shortened a bit for brevity):

<session data>
. . .
m=video 0 RTP/AVP 96
a=3GPP-Adaptation-Support:1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=42E00C; sprop-parameter-sets=Z0LgDJZSAoP2AiAAAXcAACvyEIA=,aM44gA==; packetization-mode=1
a=control:trackID=1
m=audio 0 RTP/AVP 97
a=3GPP-Adaptation-Support:1
a=rtpmap:97 MP4A-LATM/16000/1
a=fmtp:97 profile-level-id=15; object=2; cpresent=0; config=400028103FC0; SBR-enabled=1
a=control:trackID=2

So I send two SETUP commands to the server:

SETUP rtsp://some.url/trackID=1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v2014.01.21)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1

SETUP rtsp://some.url/trackID=2 RTSP/1.0
CSeq: 5
User-Agent: LibVLC/2.1.3 (LIVE555 Streaming Media v2014.01.21)
Transport: RTP/AVP/TCP;unicast;interleaved=2-3
Session: 8571189255046566924


So, let’s say I have an array (or indexed list) of items that contain the ‘m=xxx’ sections of the SDP data. The first entry is item[0] and the second is item[1].

We can see that item[0]’s value for trackID = 1, while item[1]’s value for trackID = 2.

When I start receiving the data, and the code examines the <channel#> following the ‘$’ in the payload, I’m seeing two values:

for trackID=1 —> channel# = 0

for trackID=2 —> channel# = 2


When I was playing around with just the FIRST (video) SETUP command (without the audio SETUP), I observed messages in RTP payload for BOTH channel# = 0 AND channel# = 1, although I don’t know what the latter data was for.


I’m trying to figure out if I’m always going to see channel# = 0 / 2 for both video + audio, or if I’ll ever have to deal with the odd channel numbers.

Also, how do I map the trackID# to the channel# seen in the SDP data blocks?

For now, I’m doing it manually, just mapping trackID=1 —> channel# 0 
and trackID=2 —> channel# 2.

Is this safe to do in the long-run?

And … what about the odd channel#’s?

-David 






More information about the live-devel mailing list