Ver Fonte

[CAPI] add RtcpReceivingSession support

Shuhei Tanuma há 1 ano atrás
pai
commit
a6b1b5cb55
2 ficheiros alterados com 31 adições e 0 exclusões
  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 rtcSendTrackRequestKeyframe(int tr);
+RTC_C_EXPORT int rtcSendTrackRequestBitrate(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 rtcSetRtcpReceivingSession(int tr);
+
 // Chain RtcpSrReporter to handler chain for given track
 RTC_C_EXPORT int rtcChainRtcpSrReporter(int tr);
 

+ 25 - 0
src/capi.cpp

@@ -1144,6 +1144,22 @@ int rtcGetTrackDirection(int tr, rtcDirection *direction) {
 	});
 }
 
+int rtcSendTrackRequestKeyframe(int tr) {
+	return wrap([&] {
+		auto track = getTrack(tr);
+		track->requestKeyframe();
+		return RTC_ERR_SUCCESS;
+	});
+}
+
+int rtcSendTrackRequestBitrate(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,
@@ -1276,6 +1292,15 @@ int rtcSetAACPacketizationHandler(int tr, const rtcPacketizationHandlerInit *ini
 	});
 }
 
+int rtcSetRtcpReceivingSession(int tr) {
+	return wrap([&] {
+		auto track = getTrack(tr);
+		auto session = std::make_shared<rtc::RtcpReceivingSession>();
+		track->setMediaHandler(session);
+		return RTC_ERR_SUCCESS;
+	});
+}
+
 int rtcChainRtcpSrReporter(int tr) {
 	return wrap([&] {
 		auto track = getTrack(tr);