diff --git a/main/channel.c b/main/channel.c index bad14800cd..9520056ceb 100644 --- a/main/channel.c +++ b/main/channel.c @@ -3605,8 +3605,13 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio, int } } else if (f->frametype == AST_FRAME_VOICE || f->frametype == AST_FRAME_VIDEO) { if (ast_channel_tech(chan) && ast_channel_tech(chan)->read_stream) { - stream = ast_stream_topology_get_stream(ast_channel_get_stream_topology(chan), f->stream_num); - default_stream = ast_channel_get_default_stream(chan, ast_format_get_type(f->subclass.format)); + if (f->stream_num >= 0) { + stream = ast_stream_topology_get_stream(ast_channel_get_stream_topology(chan), f->stream_num); + default_stream = ast_channel_get_default_stream(chan, ast_format_get_type(f->subclass.format)); + } } else { /* Since this channel driver does not support multistream determine the default stream this frame * originated from and update the frame to include it. @@ -3643,8 +3648,13 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio, int * default stream logic or not (such as transcoding). */ if (f && (f->frametype == AST_FRAME_VOICE || f->frametype == AST_FRAME_VIDEO)) { - stream = ast_stream_topology_get_stream(ast_channel_get_stream_topology(chan), f->stream_num); - default_stream = ast_channel_get_default_stream(chan, ast_format_get_type(f->subclass.format)); + if (f->stream_num >= 0) { + stream = ast_stream_topology_get_stream(ast_channel_get_stream_topology(chan), f->stream_num); + default_stream = ast_channel_get_default_stream(chan, ast_format_get_type(f->subclass.format)); + } } } else if (ast_channel_tech(chan) && ast_channel_tech(chan)->read) { f = ast_channel_tech(chan)->read(chan);