Creating an SDP message

Create an SDP message by using MCC SDP functions to output SDP field values. To create an SDP message, perform these tasks:

Task

Action

1

Add session-level information to the SDP message.

2

Add one or more media descriptions to the SDP message.

3

Use the mccdSdpGetLength function to get the length of the generated SDP contents.

Adding session-level information to the SDP message

To add session-level information to an SDP message, follow these steps:

Step

Action

Associated function

Associated SDP field

1

Initialize the SDP context.

mccdSdpInit

N/A

2

Add a session description field.

mccdSdpAddSessionIP4

or

mccSdpAddSessionIP6

v, o, s

3

Optionally, add an information field that applies to all media formats in the SDP message.

mccSdpAddInformation

i

4

Optionally, add a session connection field that applies to all media formats in the SDP message.

If you do not add a session connection field here, you must add one for each media type. For information, see Adding media descriptions to the SDP message.

mccdSdpAddConnIP4

or

mccdSdpAddConnIP6

c

5

Optionally, add one or more general attributes that apply to all media formats in the session.

Call mccdSdpAddAttribute for each session-level general attribute you want to add.

mccdSdpAddAttribute

a

6

Optionally, add one or more rtpmap attributes that apply to all media formats in the session.

Call mccdSdpAddRtpmap for each session-level rtpmap attribute you want to add.

mccdSdpAddRtpmap

a

Note: There are no MCC SDP functions available for creating SDP session-level u, e, p, b, t, and k fields.

Adding media descriptions to the SDP message

To add one or more media descriptions to the SDP message, follow these steps:

Step

Action

Associated function

Associated SDP field

1

Begin a media description field.

mccdSdpAddMediaBegin

m

2

Add one or more media formats to the media description field.

Call mccdSdpAddMediaFormat for each media type you want to add.

mccdSdpAddMediaFormat

m

3

Close the media description field.

mccdSdpAddMediaEnd

m

4

Optionally, add an information field that describes the media.

mccSdpAddInformation

i

5

Optionally, add a connection field for each specified media format. If you did not specify a session-level connection field, then this step is mandatory.

Call mccdSdpAddConnIP4 or mccdSdpAddConnIP6 for each media-level connection field you want to add.

mccdSdpAddConnIP4

or

mccdSdpAddConnIP6

c

6

Optionally, add one or more general attributes for each specified media format.

Call mccdSdpAddAttribute for each media-level general attribute you want to add.

mccdSdpAddAttribute

a

7

Optionally, add one or more rtpmap attributes for each specified media format.

Call mccdSdpAddRtpmap for each media-level rtpmap attribute you want to add.

mccdSdpAddRtpmap

a

Note: There are no MCC SDP functions available for creating SDP media-level b and k fields.

Creating an SDP message example

The following example creates an SDP message formatted for RTP/AVP and then obtains the length of the generated message:

MCC_SDP_CONTEXT_W context, *pc = &context;
MCC_SDP *   sdp;
    uint32_t    error;
    
    char sdpData[1024];     /* Buffer to write SDP to */
    char buffer[1024];      /* Buffer to create MCC_SDP structure in */
    
    /* Write SDP into sdpData */
    
    mccdSdpInit             ( pc, sdpData, sizeof(sdpData) );
    mccdSdpAddSessionIP4    ( pc, "user", 123, 124, "127.0.0.1" ); 
    mccdSdpAddConnIP4       ( pc, "192.168.0.1" );
    mccdSdpAddMediaBegin    ( pc, MCCSDP_MEDIA_AUDIO, 8000, 0, "RTP/AVP" );
    mccdSdpAddMediaFormat   ( pc, "0" ); 
    mccdSdpAddMediaFormat   ( pc, "8" ); 
    mccdSdpAddMediaEnd      ( pc ); 
    mccdSdpAddInformation   ( pc, "My audio stream" );
    mccdSdpAddRtpmap        ( pc, "0", "PCMU", 8000, 0 );
    mccdSdpAddRtpmap        ( pc, "8", "PCMA", 8000, 0 );

    /*  Print generated SDP  /
    printf                  ( " Generated SDP message: \n" );
    printf                  (%.*s,  mccdSdpGetLength(pc), sdpData );