diff --git a/janus/src/client.c b/janus/src/client.c index 6f32368..6436a91 100644 --- a/janus/src/client.c +++ b/janus/src/client.c @@ -102,6 +102,11 @@ static void *_common_thread(void *v_client, bool video) { packet.video = rtp->video; packet.buffer = (char *)rtp->datagram; packet.length = rtp->used; +#if JANUS_PLUGIN_API_VERSION >= 100 + // The uStreamer Janus plugin places video in stream index 0 and audio + // (if available) in stream index 1. + packet.mindex = (rtp->video ? 0 : 1); +#endif janus_plugin_rtp_extensions_reset(&packet.extensions); // FIXME: Это очень эффективный способ уменьшить задержку, но WebRTC стек в хроме и фоксе // слишком корявый, чтобы обработать это, из-за чего на кейфреймах начинаются заикания. diff --git a/janus/src/plugin.c b/janus/src/plugin.c index d4e467e..91b0392 100644 --- a/janus/src/plugin.c +++ b/janus/src/plugin.c @@ -440,7 +440,14 @@ static struct janus_plugin_result *_plugin_handle_message( "s=PiKVM uStreamer" RN "t=0 0" RN "%s%s", +#if JANUS_PLUGIN_API_VERSION >= 100 + // Place video SDP before audio SDP so that the video and audio streams + // have predictable indices, even if audio is not available. + us_get_now_id() >> 1, video_sdp, audio_sdp +#else + // For versions of Janus prior to 1.x, place the audio SDP first. us_get_now_id() >> 1, audio_sdp, video_sdp +#endif ); free(audio_sdp); free(video_sdp);