diff --git a/include/baresip.h b/include/baresip.h index 4bb71cf3b0..185d2e01ec 100644 --- a/include/baresip.h +++ b/include/baresip.h @@ -270,6 +270,7 @@ const struct list *call_get_custom_hdrs(const struct call *call); void call_set_media_direction(struct call *call, enum sdp_dir a, enum sdp_dir v); void call_set_mdir(struct call *call, enum sdp_dir a, enum sdp_dir v); +void call_get_mdir(struct call *call, enum sdp_dir *ap, enum sdp_dir *vp); void call_set_media_estdir(struct call *call, enum sdp_dir a, enum sdp_dir v); void call_start_answtmr(struct call *call, uint32_t ms); bool call_supported(struct call *call, uint16_t tags); diff --git a/src/call.c b/src/call.c index 882a1a6085..10a49c061a 100644 --- a/src/call.c +++ b/src/call.c @@ -3050,6 +3050,30 @@ void call_set_mdir(struct call *call, enum sdp_dir a, enum sdp_dir v) } +/** + * Returns local audio and video directions + * + * @param call Call object + * @param ap Pointer for returning local audio direction + * @param vp Pointer for returning local video direction + */ +void call_get_mdir(struct call *call, enum sdp_dir *ap, enum sdp_dir *vp) +{ + struct stream *strm; + + if (!call) + return; + + strm = audio_strm(call_audio(call)); + if (strm && ap) + *ap = stream_ldir(strm); + + strm = video_strm(call_video(call)); + if (strm && vp) + *vp = stream_ldir(strm); +} + + /** * Set audio/video direction during pre-established for the established state *