Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c70c27d1 authored by Byeongjo Park's avatar Byeongjo Park Committed by Lajos Molnar
Browse files

VT: ASessionDescription: Added SDPStringFactory.



SDPStringFactory will generate SDP as string format
from the input parameters.

The generated SDP string format will be used to make
an instance of ASessionDescription.

An instance of ASessionDescription will be used
parameters of ARTPConnection to be created.

Merged-in: I73b98e41b2e4c1da699b15ed8caca98e2fea0c4f
Change-Id: I73b98e41b2e4c1da699b15ed8caca98e2fea0c4f
Signed-off-by: default avatarByeongjo Park <bjo.park@samsung.com>
parent 27b1c0b6
Loading
Loading
Loading
Loading
+59 −0
Original line number Original line Diff line number Diff line
@@ -345,5 +345,64 @@ bool ASessionDescription::parseNTPRange(
    return *npt2 > *npt1;
    return *npt2 > *npt1;
}
}


// static
void ASessionDescription::SDPStringFactory(AString &sdp,
    const char *ip, bool isAudio, unsigned port, unsigned payloadType,
    unsigned as, const char *codec, const char *fmtp, int32_t width, int32_t height)
{
    bool isIPv4 = (AString(ip).find("::") == -1) ? true : false;
    sdp.clear();
    sdp.append("v=0\r\n");

    sdp.append("a=range:npt=now-\r\n");

    sdp.append("m=");
    sdp.append(isAudio ? "audio " : "video ");
    sdp.append(port);
    sdp.append(" RTP/AVP ");
    sdp.append(payloadType);
    sdp.append("\r\n");

    sdp.append("c= IN IP");
    if(isIPv4)
     sdp.append("4 ");
    else
     sdp.append("6 ");
    sdp.append(ip);
    sdp.append("\r\n");

    sdp.append("b=AS:");
    sdp.append(as > 0 ? as : 960);
    sdp.append("\r\n");

    sdp.append("a=rtpmap:");
    sdp.append(payloadType);
    sdp.append(" ");
    sdp.append(codec);
    sdp.append("/");
    sdp.append(isAudio ? "8000" : "90000");
    sdp.append("\r\n");

    if(fmtp != NULL) {
        sdp.append("a=fmtp:");
        sdp.append(payloadType);
        sdp.append(" ");
        sdp.append(fmtp);
        sdp.append("\r\n");
    }

    if(width > 0 && height > 0) {
        sdp.append("a=framesize:");
        sdp.append(payloadType);
        sdp.append(" ");
        sdp.append(width);
        sdp.append("-");
        sdp.append(height);
        sdp.append("\r\n");
    }

    ALOGV("SDPStringFactory => %s", sdp.c_str());
}

}  // namespace android
}  // namespace android
+3 −0
Original line number Original line Diff line number Diff line
@@ -63,6 +63,9 @@ struct ASessionDescription : public RefBase {
    // i.e. we have a fixed duration, otherwise this is live streaming.
    // i.e. we have a fixed duration, otherwise this is live streaming.
    static bool parseNTPRange(const char *s, float *npt1, float *npt2);
    static bool parseNTPRange(const char *s, float *npt1, float *npt2);


    static void SDPStringFactory(AString &sdp, const char *ip, bool isAudio, unsigned port,
        unsigned payloadType, unsigned as, const char *codec, const char *fmtp = NULL,
        int32_t width = 0, int32_t height = 0);
protected:
protected:
    virtual ~ASessionDescription();
    virtual ~ASessionDescription();