Skip to content

Commit

Permalink
Merge pull request #1021 from paullouisageneau/capi-pli-handler-params
Browse files Browse the repository at this point in the history
Add track and user pointer to PLI handler callback in C API
  • Loading branch information
paullouisageneau authored Oct 29, 2023
2 parents 86bbda0 + d75f231 commit 5546355
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
4 changes: 2 additions & 2 deletions include/rtc/rtc.h
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ typedef void *(RTC_API *rtcInterceptorCallbackFunc)(int pc, const char *message,
void *ptr);
typedef void(RTC_API *rtcBufferedAmountLowCallbackFunc)(int id, void *ptr);
typedef void(RTC_API *rtcAvailableCallbackFunc)(int id, void *ptr);
typedef void(RTC_API *rtcPliHandlerCallbackFunc)();
typedef void(RTC_API *rtcPliHandlerCallbackFunc)(int tr, void *ptr);

// Log

Expand Down Expand Up @@ -371,7 +371,7 @@ RTC_C_EXPORT int rtcChainRtcpSrReporter(int tr);
RTC_C_EXPORT int rtcChainRtcpNackResponder(int tr, unsigned int maxStoredPacketsCount);

// Chain PliHandler to handler chain for given track
RTC_C_EXPORT int rtcChainPliHandler(int tr, rtcPliHandlerCallbackFunc onPli);
RTC_C_EXPORT int rtcChainPliHandler(int tr, rtcPliHandlerCallbackFunc cb);

// Transform seconds to timestamp using track's clock rate, result is written to timestamp
RTC_C_EXPORT int rtcTransformSecondsToTimestamp(int id, double seconds, uint32_t *timestamp);
Expand Down
15 changes: 9 additions & 6 deletions src/capi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1319,7 +1319,7 @@ int rtcSetAACPacketizationHandler(int tr, const rtcPacketizationHandlerInit *ini
}

int rtcChainRtcpSrReporter(int tr) {
return wrap([tr] {
return wrap([&] {
auto config = getRtpConfig(tr);
auto reporter = std::make_shared<RtcpSrReporter>(config);
emplaceRtcpSrReporter(reporter, tr);
Expand All @@ -1330,19 +1330,22 @@ int rtcChainRtcpSrReporter(int tr) {
}

int rtcChainRtcpNackResponder(int tr, unsigned int maxStoredPacketsCount) {
return wrap([tr, maxStoredPacketsCount] {
return wrap([&] {
auto responder = std::make_shared<RtcpNackResponder>(maxStoredPacketsCount);
auto chainableHandler = getMediaChainableHandler(tr);
chainableHandler->addToChain(responder);
return RTC_ERR_SUCCESS;
});
}

int rtcChainPliHandler(int tr, rtcPliHandlerCallbackFunc onPli) {
return wrap([tr, onPli] {
auto responder = std::make_shared<PliHandler>(onPli);
int rtcChainPliHandler(int tr, rtcPliHandlerCallbackFunc cb) {
return wrap([&] {
auto pliHandler = std::make_shared<PliHandler>([tr, cb] {
if (auto ptr = getUserPointer(tr))
cb(tr, *ptr);
});
auto chainableHandler = getMediaChainableHandler(tr);
chainableHandler->addToChain(responder);
chainableHandler->addToChain(pliHandler);
return RTC_ERR_SUCCESS;
});
}
Expand Down

0 comments on commit 5546355

Please sign in to comment.