Browse Source

Merge pull request #1029 from chobie/capi_rtcp_receiving_session

Add RtcpReceivingSession support to C API
Paul-Louis Ageneau 1 year ago
parent
commit
0484b45760
2 changed files with 31 additions and 0 deletions
  1. 6 0
      include/rtc/rtc.h
  2. 25 0
      src/capi.cpp

+ 6 - 0
include/rtc/rtc.h

@@ -291,6 +291,9 @@ RTC_C_EXPORT int rtcGetTrackDescription(int tr, char *buffer, int size);
 RTC_C_EXPORT int rtcGetTrackMid(int tr, char *buffer, int size);
 RTC_C_EXPORT int rtcGetTrackDirection(int tr, rtcDirection *direction);
 
+RTC_C_EXPORT int rtcRequestKeyframe(int tr);
+RTC_C_EXPORT int rtcRequestBitrate(int tr, unsigned int bitrate);
+
 #if RTC_ENABLE_MEDIA
 
 // Media
@@ -364,6 +367,9 @@ RTC_C_EXPORT int rtcSetOpusPacketizationHandler(int tr, const rtcPacketizationHa
 // Set AACPacketizationHandler for track
 RTC_C_EXPORT int rtcSetAACPacketizationHandler(int tr, const rtcPacketizationHandlerInit *init);
 
+// Set RtcpReceivingSession for track
+RTC_C_EXPORT int rtcChainRtcpReceivingSession(int tr);
+
 // Chain RtcpSrReporter to handler chain for given track
 RTC_C_EXPORT int rtcChainRtcpSrReporter(int tr);
 

+ 25 - 0
src/capi.cpp

@@ -1139,6 +1139,22 @@ int rtcGetTrackDirection(int tr, rtcDirection *direction) {
 	});
 }
 
+int rtcRequestKeyframe(int tr) {
+	return wrap([&] {
+		auto track = getTrack(tr);
+		track->requestKeyframe();
+		return RTC_ERR_SUCCESS;
+	});
+}
+
+int rtcRequestBitrate(int tr, unsigned int bitrate) {
+	return wrap([&] {
+		auto track = getTrack(tr);
+		track->requestBitrate(bitrate);
+		return RTC_ERR_SUCCESS;
+	});
+}
+
 #if RTC_ENABLE_MEDIA
 
 void setSSRC(Description::Media *description, uint32_t ssrc, const char *_name, const char *_msid,
@@ -1271,6 +1287,15 @@ int rtcSetAACPacketizationHandler(int tr, const rtcPacketizationHandlerInit *ini
 	});
 }
 
+int rtcChainRtcpReceivingSession(int tr) {
+	return wrap([&] {
+		auto track = getTrack(tr);
+		auto session = std::make_shared<rtc::RtcpReceivingSession>();
+		track->chainMediaHandler(session);
+		return RTC_ERR_SUCCESS;
+	});
+}
+
 int rtcChainRtcpSrReporter(int tr) {
 	return wrap([&] {
 		auto track = getTrack(tr);