[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