mirror of
https://github.com/mii443/libdatachannel.git
synced 2025-08-22 15:15:28 +00:00
Move ssrc manupulation functions to RTC_ENABLE_MEDIA
This commit is contained in:
124
src/capi.cpp
124
src/capi.cpp
@ -691,6 +691,68 @@ int rtcGetTrackPayloadTypesForCodec(int tr, const char * ccodec, int * buffer, i
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int rtcGetSsrcsForTrack(int tr, uint32_t * buffer, int bufferSize) {
|
||||||
|
return wrap([&] {
|
||||||
|
auto track = getTrack(tr);
|
||||||
|
auto ssrcs = track->description().getSSRCs();
|
||||||
|
return copyAndReturn(ssrcs, buffer, bufferSize);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
int rtcGetCNameForSsrc(int tr, uint32_t ssrc, char * cname, int cnameSize) {
|
||||||
|
return wrap([&] {
|
||||||
|
auto track = getTrack(tr);
|
||||||
|
auto description = track->description();
|
||||||
|
auto optCName = description.getCNameForSsrc(ssrc);
|
||||||
|
if (optCName.has_value()) {
|
||||||
|
return copyAndReturn(optCName.value(), cname, cnameSize);
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
int rtcGetSsrcsForType(const char * mediaType, const char * sdp, uint32_t * buffer, int bufferSize) {
|
||||||
|
return wrap([&] {
|
||||||
|
auto type = lowercased(string(mediaType));
|
||||||
|
auto oldSDP = string(sdp);
|
||||||
|
auto description = Description(oldSDP, "unspec");
|
||||||
|
auto mediaCount = description.mediaCount();
|
||||||
|
for (unsigned int i = 0; i < mediaCount; i++) {
|
||||||
|
if (std::holds_alternative<Description::Media *>(description.media(i))) {
|
||||||
|
auto media = std::get<Description::Media *>(description.media(i));
|
||||||
|
auto currentMediaType = lowercased(media->type());
|
||||||
|
if (currentMediaType == type) {
|
||||||
|
auto ssrcs = media->getSSRCs();
|
||||||
|
return copyAndReturn(ssrcs, buffer, bufferSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
int rtcSetSsrcForType(const char * mediaType, const char * sdp, char * buffer, const int bufferSize,
|
||||||
|
rtcSsrcForTypeInit * init) {
|
||||||
|
return wrap([&] {
|
||||||
|
auto type = lowercased(string(mediaType));
|
||||||
|
auto prevSDP = string(sdp);
|
||||||
|
auto description = Description(prevSDP, "unspec");
|
||||||
|
auto mediaCount = description.mediaCount();
|
||||||
|
for (unsigned int i = 0; i < mediaCount; i++) {
|
||||||
|
if (std::holds_alternative<Description::Media *>(description.media(i))) {
|
||||||
|
auto media = std::get<Description::Media *>(description.media(i));
|
||||||
|
auto currentMediaType = lowercased(media->type());
|
||||||
|
if (currentMediaType == type) {
|
||||||
|
setSSRC(media, init->ssrc, init->name, init->msid, init->trackId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return copyAndReturn(string(description), buffer, bufferSize);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
#endif // RTC_ENABLE_MEDIA
|
#endif // RTC_ENABLE_MEDIA
|
||||||
#if RTC_ENABLE_WEBSOCKET
|
#if RTC_ENABLE_WEBSOCKET
|
||||||
|
|
||||||
@ -842,68 +904,6 @@ int rtcSetLocalDescription(int pc, const char *type) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtcGetSsrcsForTrack(int tr, uint32_t * buffer, int bufferSize) {
|
|
||||||
return wrap([&] {
|
|
||||||
auto track = getTrack(tr);
|
|
||||||
auto ssrcs = track->description().getSSRCs();
|
|
||||||
return copyAndReturn(ssrcs, buffer, bufferSize);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
int rtcGetCNameForSsrc(int tr, uint32_t ssrc, char * cname, int cnameSize) {
|
|
||||||
return wrap([&] {
|
|
||||||
auto track = getTrack(tr);
|
|
||||||
auto description = track->description();
|
|
||||||
auto optCName = description.getCNameForSsrc(ssrc);
|
|
||||||
if (optCName.has_value()) {
|
|
||||||
return copyAndReturn(optCName.value(), cname, cnameSize);
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
int rtcGetSsrcsForType(const char * mediaType, const char * sdp, uint32_t * buffer, int bufferSize) {
|
|
||||||
return wrap([&] {
|
|
||||||
auto type = lowercased(string(mediaType));
|
|
||||||
auto oldSDP = string(sdp);
|
|
||||||
auto description = Description(oldSDP, "unspec");
|
|
||||||
auto mediaCount = description.mediaCount();
|
|
||||||
for (unsigned int i = 0; i < mediaCount; i++) {
|
|
||||||
if (std::holds_alternative<Description::Media *>(description.media(i))) {
|
|
||||||
auto media = std::get<Description::Media *>(description.media(i));
|
|
||||||
auto currentMediaType = lowercased(media->type());
|
|
||||||
if (currentMediaType == type) {
|
|
||||||
auto ssrcs = media->getSSRCs();
|
|
||||||
return copyAndReturn(ssrcs, buffer, bufferSize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
int rtcSetSsrcForType(const char * mediaType, const char * sdp, char * buffer, const int bufferSize,
|
|
||||||
rtcSsrcForTypeInit * init) {
|
|
||||||
return wrap([&] {
|
|
||||||
auto type = lowercased(string(mediaType));
|
|
||||||
auto prevSDP = string(sdp);
|
|
||||||
auto description = Description(prevSDP, "unspec");
|
|
||||||
auto mediaCount = description.mediaCount();
|
|
||||||
for (unsigned int i = 0; i < mediaCount; i++) {
|
|
||||||
if (std::holds_alternative<Description::Media *>(description.media(i))) {
|
|
||||||
auto media = std::get<Description::Media *>(description.media(i));
|
|
||||||
auto currentMediaType = lowercased(media->type());
|
|
||||||
if (currentMediaType == type) {
|
|
||||||
setSSRC(media, init->ssrc, init->name, init->msid, init->trackId);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return copyAndReturn(string(description), buffer, bufferSize);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
int rtcSetRemoteDescription(int pc, const char *sdp, const char *type) {
|
int rtcSetRemoteDescription(int pc, const char *sdp, const char *type) {
|
||||||
return wrap([&] {
|
return wrap([&] {
|
||||||
auto peerConnection = getPeerConnection(pc);
|
auto peerConnection = getPeerConnection(pc);
|
||||||
|
Reference in New Issue
Block a user