From 00e8c083b762c00785bbd8a88480120a1dd28830 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Thu, 28 Aug 2025 15:25:39 -0400 Subject: [PATCH] MT#63317 add handler lookup to test-transcode Change-Id: Ic385e4f8f5b5ae291eca080151ed0b95f9e7f5e5 --- daemon/dtmf.c | 2 ++ daemon/media_player.c | 2 ++ t/test-transcode.c | 10 +++++++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/daemon/dtmf.c b/daemon/dtmf.c index ac3c949ef..41f1c8067 100644 --- a/daemon/dtmf.c +++ b/daemon/dtmf.c @@ -762,12 +762,14 @@ static const char *dtmf_inject_pcm(struct call_media *media, struct call_media * .ssrc_out = ssrc_out, .raw = { (void *) &tep, sizeof(tep) }, .payload = { (void *) &tep, sizeof(tep) }, + .sink = { .sink = sink_ps }, }; // keep track of how much PCM we've generated uint64_t encoder_pts = codec_encoder_pts(csh, NULL); uint64_t skip_pts = codec_decoder_unskip_pts(csh); // reset to zero to take up our new samples + determine_sink_handler(ps, &packet.sink); ch->dtmf_injector->handler_func(ch->dtmf_injector, &packet); // insert pause diff --git a/daemon/media_player.c b/daemon/media_player.c index ef369f1ee..4a0da8625 100644 --- a/daemon/media_player.c +++ b/daemon/media_player.c @@ -1055,10 +1055,12 @@ void media_player_add_packet(struct media_player *mp, char *buf, size_t len, .media_out = mp->media, .rtp = &rtp, .ssrc_out = mp->ssrc_out, + .sink = { .sink = mp->sink }, }; packet.raw = STR_LEN(buf, len); packet.payload = packet.raw; + determine_sink_handler(mp->sink, &packet.sink); mp->coder.handler->handler_func(mp->coder.handler, &packet); // as this is timing sensitive and we may have spent some time decoding, diff --git a/t/test-transcode.c b/t/test-transcode.c index 152f6681d..3575bebe6 100644 --- a/t/test-transcode.c +++ b/t/test-transcode.c @@ -75,11 +75,13 @@ static void __init(void) { flags.codec_except = str_case_ht_new(); flags.codec_set = str_case_value_ht_new(); } -static struct packet_stream *ps_new(call_t *c) { +static struct packet_stream *ps_new(struct call_media *m) { struct packet_stream *ps = malloc(sizeof(*ps)); assert(ps != NULL); memset(ps, 0, sizeof(*ps)); ps->endpoint.port = 12345; + ps->media = m; + ps->call = m->call; return ps; } static void __start(const char *file, int line) { @@ -98,8 +100,8 @@ static void __start(const char *file, int line) { ml_B = __monologue_create(&call); media_A = call_media_new(&call); // originator media_B = call_media_new(&call); // output destination - t_queue_push_tail(&media_A->streams, ps_new(&call)); - t_queue_push_tail(&media_B->streams, ps_new(&call)); + t_queue_push_tail(&media_A->streams, ps_new(media_A)); + t_queue_push_tail(&media_B->streams, ps_new(media_B)); ml_A->tag = STR("tag_A"); ml_A->label = STR("label_A"); media_A->monologue = ml_A; @@ -264,7 +266,9 @@ static void __packet_seq_ts(const char *file, int line, struct call_media *media .media_out = other_media, .ssrc_in = get_ssrc(ssrc, &media->ssrc_hash_in), .sfd = &sfd, + .sink = { .sink = other_media->streams.head->data }, }; + determine_sink_handler(media->streams.head->data, &mp.sink); // from __stream_ssrc() if (!MEDIA_ISSET(media, TRANSCODING)) mp.ssrc_in->ssrc_map_out = ntohl(ssrc);