void listenerStopStream(tl_state_t *pTLState) { AVB_TRACE_ENTRY(AVB_TRACE_TL); if (!pTLState) { AVB_LOG_ERROR("Invalid TLState"); AVB_TRACE_EXIT(AVB_TRACE_TL); return; } listener_data_t *pListenerData = pTLState->pPvtListenerData; if (!pListenerData) { AVB_LOG_ERROR("Invalid listener data"); AVB_TRACE_EXIT(AVB_TRACE_TL); return; } openavbListenerAddStat(pTLState, TL_STAT_RX_CALLS, pListenerData->nReportCalls); openavbListenerAddStat(pTLState, TL_STAT_RX_FRAMES, pListenerData->nReportFrames); openavbListenerAddStat(pTLState, TL_STAT_RX_LOST, openavbAvtpLost(pListenerData->avtpHandle)); openavbListenerAddStat(pTLState, TL_STAT_RX_BYTES, openavbAvtpBytes(pListenerData->avtpHandle)); AVB_LOGF_INFO("RX "STREAMID_FORMAT", Totals: calls=%" PRIu64 ", frames=%" PRIu64 ", lost=%" PRIu64 ", bytes=%" PRIu64, STREAMID_ARGS(&pListenerData->streamID), openavbListenerGetStat(pTLState, TL_STAT_RX_CALLS), openavbListenerGetStat(pTLState, TL_STAT_RX_FRAMES), openavbListenerGetStat(pTLState, TL_STAT_RX_LOST), openavbListenerGetStat(pTLState, TL_STAT_RX_BYTES)); if (pTLState->bStreaming) { openavbAvtpShutdownListener(pListenerData->avtpHandle); pTLState->bStreaming = FALSE; } AVB_TRACE_EXIT(AVB_TRACE_TL); }
EXTERN_DLL_EXPORT U64 openavbTLStat(tl_handle_t handle, tl_stat_t stat) { AVB_TRACE_ENTRY(AVB_TRACE_TL); U64 val = 0; tl_state_t *pTLState = (tl_state_t *)handle; if (!pTLState) { AVB_LOG_ERROR("Invalid handle"); AVB_TRACE_EXIT(AVB_TRACE_TL); return 0; } if (pTLState->cfg.role == AVB_ROLE_TALKER) { val = openavbTalkerGetStat(pTLState, stat); } else if (pTLState->cfg.role == AVB_ROLE_LISTENER) { val = openavbListenerGetStat(pTLState, stat); } AVB_TRACE_EXIT(AVB_TRACE_TL); return val; }