Browse Source

Add C API to set h264 maximum fragment size

Filip Klembara 4 years ago
parent
commit
a0f17cb64b
2 changed files with 10 additions and 5 deletions
  1. 8 3
      include/rtc/rtc.h
  2. 2 2
      src/capi.cpp

+ 8 - 3
include/rtc/rtc.h

@@ -39,6 +39,10 @@ extern "C" {
 #define RTC_ENABLE_WEBSOCKET 1
 #define RTC_ENABLE_WEBSOCKET 1
 #endif
 #endif
 
 
+#if RTC_ENABLE_MEDIA
+# define RTC_DEFAULT_MAXIMUM_FRAGMENT_SIZE ((uint16_t)1400)
+#endif
+
 #include <stdbool.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <stdint.h>
 
 
@@ -220,9 +224,10 @@ RTC_EXPORT int rtcAddTrackEx(int pc, rtcCodec codec, int payloadType, uint32_t s
 /// @param cname CName
 /// @param cname CName
 /// @param payloadType Payload Type
 /// @param payloadType Payload Type
 /// @param clockRate Clock rate
 /// @param clockRate Clock rate
-/// @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);
+/// @param maxFragmentSize Maximum NALU fragment size
+/// @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 maxFragmentSize, uint16_t sequenceNumber, uint32_t timestamp);
 
 
 /// Set OpusPacketizationHandler for track
 /// Set OpusPacketizationHandler for track
 /// @param tr Track id
 /// @param tr Track id

+ 2 - 2
src/capi.cpp

@@ -528,7 +528,7 @@ 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,
 int rtcSetH264PacketizationHandler(int tr, uint32_t ssrc, const char *cname, uint8_t payloadType,
-                                   uint32_t clockRate, uint16_t sequenceNumber,
+                                   uint32_t clockRate, uint16_t maxFragmentSize, uint16_t sequenceNumber,
                                    uint32_t timestamp) {
                                    uint32_t timestamp) {
 	return WRAP({
 	return WRAP({
 		auto track = getTrack(tr);
 		auto track = getTrack(tr);
@@ -539,7 +539,7 @@ int rtcSetH264PacketizationHandler(int tr, uint32_t ssrc, const char *cname, uin
 		auto packetizer = shared_ptr<H264RTPPacketizer>(new H264RTPPacketizer(rtpConfig));
 		auto packetizer = shared_ptr<H264RTPPacketizer>(new H264RTPPacketizer(rtpConfig));
 		// create H264 and RTCP SP handler
 		// create H264 and RTCP SP handler
 		shared_ptr<H264PacketizationHandler> h264Handler(
 		shared_ptr<H264PacketizationHandler> h264Handler(
-		    new H264PacketizationHandler(H264PacketizationHandler::Separator::Length, packetizer));
+		    new H264PacketizationHandler(H264PacketizationHandler::Separator::Length, packetizer, maxFragmentSize));
 		emplaceRTCPSender(h264Handler, tr);
 		emplaceRTCPSender(h264Handler, tr);
 		emplaceRTPConfig(rtpConfig, tr);
 		emplaceRTPConfig(rtpConfig, tr);
 		// set handler
 		// set handler