From 9375d763f12de6fbe1453373403eb498e759701b Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 22 Feb 2023 09:40:00 -0500 Subject: [PATCH] MT#56471 add media_player_pt_match() Convenience function to check whether any formats have changed, which would indicate that a restart of the media player is needed. Functional no-op. Change-Id: I2bc9b57b95bb229bc4f8cfc49ca662fa724d3642 --- daemon/media_player.c | 24 +++++++++++++++++------- include/media_player.h | 4 ++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/daemon/media_player.c b/daemon/media_player.c index 0d991a99d..79be6c5e7 100644 --- a/daemon/media_player.c +++ b/daemon/media_player.c @@ -666,6 +666,20 @@ found: return dst_pt; } + +bool media_player_pt_match(const struct media_player *mp, const struct rtp_payload_type *src_pt, + const struct rtp_payload_type *dst_pt) +{ + if (!mp->coder.handler) + return true; // not initialised yet -> doesn't need a reset + if (!rtp_payload_type_eq_exact(&mp->coder.handler->dest_pt, dst_pt)) + return false; + if (!rtp_payload_type_eq_exact(&mp->coder.handler->source_pt, src_pt)) + return false; + return true; +} + + int media_player_setup(struct media_player *mp, const struct rtp_payload_type *src_pt, const struct rtp_payload_type *dst_pt) { @@ -682,13 +696,9 @@ int media_player_setup(struct media_player *mp, const struct rtp_payload_type *s } // if we already have a handler, see if anything needs changing - if (mp->coder.handler) { - if (!rtp_payload_type_eq_exact(&mp->coder.handler->dest_pt, dst_pt) - || !rtp_payload_type_eq_exact(&mp->coder.handler->source_pt, src_pt)) - { - ilog(LOG_DEBUG, "Resetting codec handler for media player"); - codec_handler_free(&mp->coder.handler); - } + if (!media_player_pt_match(mp, src_pt, dst_pt)) { + ilog(LOG_DEBUG, "Resetting codec handler for media player"); + codec_handler_free(&mp->coder.handler); } if (!mp->coder.handler) mp->coder.handler = codec_handler_make_playback(src_pt, dst_pt, mp->sync_ts, mp->media); diff --git a/include/media_player.h b/include/media_player.h index 94bc444fe..436c29fbd 100644 --- a/include/media_player.h +++ b/include/media_player.h @@ -5,6 +5,7 @@ #include "auxlib.h" #include "timerthread.h" #include "str.h" +#include @@ -113,6 +114,9 @@ long long media_player_stop(struct media_player *); int media_player_setup(struct media_player *mp, const struct rtp_payload_type *src_pt, const struct rtp_payload_type *dst_pt); void media_player_set_media(struct media_player *mp, struct call_media *media); +bool media_player_pt_match(const struct media_player *mp, const struct rtp_payload_type *src_pt, + const struct rtp_payload_type *dst_pt); + void media_player_add_packet(struct media_player *mp, char *buf, size_t len, long long us_dur, unsigned long long pts);