Browse Source

Remove "optional" pointers

Filip Klembara 4 years ago
parent
commit
4db9f03dd4
2 changed files with 30 additions and 54 deletions
  1. 11 12
      include/rtc/rtc.h
  2. 19 42
      src/capi.cpp

+ 11 - 12
include/rtc/rtc.h

@@ -207,12 +207,12 @@ RTC_EXPORT int rtcGetTrackDescription(int tr, char *buffer, int size);
 /// @param codec Codec
 /// @param payloadType Payload type
 /// @param ssrc SSRC
-/// @param _mid MID (default: video|audio)
-/// @param _direction Direction (default RTC_SENDONLY)
+/// @param _mid MID
+/// @param _direction Direction
 /// @param _name Name (optional)
 /// @param _msid MSID (optional)
 /// @returns Track id
-RTC_EXPORT int rtcAddTrackEx(int pc, rtcCodec codec, int payloadType, uint32_t ssrc, const char *_mid, rtcDirection * _direction, const char *_name, const char *_msid);
+RTC_EXPORT int rtcAddTrackEx(int pc, rtcCodec codec, int payloadType, uint32_t ssrc, const char *_mid, rtcDirection direction, const char *_name, const char *_msid);
 
 /// Set H264PacketizationHandler for track
 /// @param tr Track id
@@ -220,9 +220,9 @@ RTC_EXPORT int rtcAddTrackEx(int pc, rtcCodec codec, int payloadType, uint32_t s
 /// @param cname CName
 /// @param payloadType Payload Type
 /// @param clockRate Clock rate
-/// @param _sequenceNumber Sequence number (default: pseudo random value)
-/// @param _timestamp Timestamp (default: pseudo random value)
-RTC_EXPORT int rtcSetH264PacketizationHandler(int tr, uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t * _sequenceNumber, uint32_t * _timestamp);
+/// @param _sequenceNumber Sequence number
+/// @param _timestamp Timestamp
+RTC_EXPORT int rtcSetH264PacketizationHandler(int tr, uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t _sequenceNumber, uint32_t _timestamp);
 
 /// Set OpusPacketizationHandler for track
 /// @param tr Track id
@@ -230,16 +230,15 @@ RTC_EXPORT int rtcSetH264PacketizationHandler(int tr, uint32_t ssrc, const char
 /// @param cname CName
 /// @param payloadType Payload Type
 /// @param clockRate Clock rate
-/// @param _sequenceNumber Sequence number (default: pseudo random value)
-/// @param _timestamp Timestamp (default: pseudo random value)
-RTC_EXPORT int rtcSetOpusPacketizationHandler(int tr, uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t * _sequenceNumber, uint32_t * _timestamp);
-
+/// @param _sequenceNumber Sequence number
+/// @param _timestamp Timestamp
+RTC_EXPORT int rtcSetOpusPacketizationHandler(int tr, uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t _sequenceNumber, uint32_t _timestamp);
 
 /// Set start time for RTP stream
 /// @param startTime_s Start time in seconds
 /// @param timeIntervalSince1970 Set true if `startTime_s` is time interval since 1970, false if `startTime_s` is time interval since 1900
-/// @param _timestamp Start timestamp (default: current timestamp)
-int rtcSetRTPConfigurationStartTime(int id, double startTime_s, bool timeIntervalSince1970, const uint32_t * _timestamp);
+/// @param _timestamp Start timestamp
+int rtcSetRTPConfigurationStartTime(int id, double startTime_s, bool timeIntervalSince1970, uint32_t _timestamp);
 
 /// Start stats recording for RTCP Sender Reporter
 /// @param id Track identifier

+ 19 - 42
src/capi.cpp

@@ -175,45 +175,26 @@ void emplaceRTPConfig(shared_ptr<RTPPacketizationConfig> ptr, int tr) {
     rtpConfigMap.emplace(std::make_pair(tr, ptr));
 }
 
-Description::Direction rtcDirectionToDirection(rtcDirection * _direction) {
-    Description::Direction direction = Description::Direction::SendOnly;
-    if (_direction) {
-        switch (*_direction) {
-            case RTC_DIRECTION_SENDONLY:
-                direction = Description::Direction::SendOnly;
-                break;
-            case RTC_DIRECTION_RECVONLY:
-                direction = Description::Direction::RecvOnly;
-                break;
-            case RTC_DIRECTION_SENDRECV:
-                direction = Description::Direction::SendRecv;
-                break;
-            case RTC_DIRECTION_INACTIVE:
-                direction = Description::Direction::Inactive;
-                break;
-            default:
-                direction = Description::Direction::Unknown;
-                break;
-        }
+Description::Direction rtcDirectionToDirection(rtcDirection direction) {
+    switch (direction) {
+        case RTC_DIRECTION_SENDONLY:
+            return Description::Direction::SendOnly;
+        case RTC_DIRECTION_RECVONLY:
+            return Description::Direction::RecvOnly;
+        case RTC_DIRECTION_SENDRECV:
+            return Description::Direction::SendRecv;
+        case RTC_DIRECTION_INACTIVE:
+            return Description::Direction::Inactive;
+        default:
+            return Description::Direction::Unknown;
     }
-    return direction;
 }
 
-shared_ptr<RTPPacketizationConfig> getNewRTPPacketizationConfig(uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t * _sequenceNumber, uint32_t * _timestamp) {
+shared_ptr<RTPPacketizationConfig> getNewRTPPacketizationConfig(uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t sequenceNumber, uint32_t timestamp) {
     if (!cname) {
         throw std::invalid_argument("Unexpected null pointer for cname");
     }
 
-    optional<uint16_t> sequenceNumber = nullopt;
-    if (_sequenceNumber) {
-        sequenceNumber = *_sequenceNumber;
-    }
-
-    optional<uint32_t> timestamp = nullopt;
-    if (_timestamp) {
-        timestamp = *_timestamp;
-    }
-
     return std::make_shared<RTPPacketizationConfig>(ssrc, cname, payloadType, clockRate, sequenceNumber, timestamp);
 }
 
@@ -468,7 +449,7 @@ void setSSRC(Description::Media * description, uint32_t ssrc, const char *_name,
     description->addSSRC(ssrc, name, msid);
 }
 
-int rtcAddTrackEx(int pc, rtcCodec codec, int payloadType, uint32_t ssrc, const char *_mid, rtcDirection * _direction, const char *_name, const char *_msid) {
+int rtcAddTrackEx(int pc, rtcCodec codec, int payloadType, uint32_t ssrc, const char *_mid, rtcDirection _direction, const char *_name, const char *_msid) {
     return WRAP( {
         auto peerConnection = getPeerConnection(pc);
 
@@ -544,11 +525,11 @@ int rtcAddTrackEx(int pc, rtcCodec codec, int payloadType, uint32_t ssrc, const
     });
 }
 
-int rtcSetH264PacketizationHandler(int tr, uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t * _sequenceNumber, uint32_t * _timestamp) {
+int rtcSetH264PacketizationHandler(int tr, uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t sequenceNumber, uint32_t timestamp) {
     return WRAP({
         auto track = getTrack(tr);
         // create RTP configuration
-        auto rtpConfig = getNewRTPPacketizationConfig(ssrc, cname, payloadType, clockRate, _sequenceNumber, _timestamp);
+        auto rtpConfig = getNewRTPPacketizationConfig(ssrc, cname, payloadType, clockRate, sequenceNumber, timestamp);
         // create packetizer
         auto packetizer = shared_ptr<H264RTPPacketizer>(new H264RTPPacketizer(rtpConfig));
         // create H264 and RTCP SP handler
@@ -560,11 +541,11 @@ int rtcSetH264PacketizationHandler(int tr, uint32_t ssrc, const char * cname, ui
     });
 }
 
-int rtcSetOpusPacketizationHandler(int tr, uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t * _sequenceNumber, uint32_t * _timestamp) {
+int rtcSetOpusPacketizationHandler(int tr, uint32_t ssrc, const char * cname, uint8_t payloadType, uint32_t clockRate, uint16_t sequenceNumber, uint32_t timestamp) {
     return WRAP({
         auto track = getTrack(tr);
         // create RTP configuration
-        auto rtpConfig = getNewRTPPacketizationConfig(ssrc, cname, payloadType, clockRate, _sequenceNumber, _timestamp);
+        auto rtpConfig = getNewRTPPacketizationConfig(ssrc, cname, payloadType, clockRate, sequenceNumber, timestamp);
         // create packetizer
         auto packetizer = shared_ptr<OpusRTPPacketizer>(new OpusRTPPacketizer(rtpConfig));
         // create Opus and RTCP SP handler
@@ -576,13 +557,9 @@ int rtcSetOpusPacketizationHandler(int tr, uint32_t ssrc, const char * cname, ui
     });
 }
 
-int rtcSetRTPConfigurationStartTime(int id, double startTime_s, bool timeIntervalSince1970, const uint32_t * _timestamp) {
+int rtcSetRTPConfigurationStartTime(int id, double startTime_s, bool timeIntervalSince1970, uint32_t timestamp) {
     return WRAP({
         auto config = getRTPConfig(id);
-        optional<uint32_t> timestamp = nullopt;
-        if (_timestamp) {
-            timestamp = *_timestamp;
-        }
         auto epoch = RTPPacketizationConfig::EpochStart::T1900;
         if (timeIntervalSince1970) {
             epoch = RTPPacketizationConfig::EpochStart::T1970;