diff --git a/lib/membrane/rtp/rtsp_decapsulator.ex b/lib/membrane/rtp/rtsp_decapsulator.ex index 34386381..fde8a677 100644 --- a/lib/membrane/rtp/rtsp_decapsulator.ex +++ b/lib/membrane/rtp/rtsp_decapsulator.ex @@ -100,17 +100,17 @@ defmodule Membrane.RTP.RTSP.Decapsulator do channel_id, complete_packets ) do - if payload_length > byte_size(rest) do - {packets_binary, Enum.reverse(complete_packets)} - else - <> = rest + case rest do + <> -> + complete_packets = + if channel_id != received_channel_id, + do: complete_packets, + else: [complete_packet_binary | complete_packets] - complete_packets = - if channel_id != received_channel_id, - do: complete_packets, - else: [complete_packet_binary | complete_packets] + get_complete_packets(rest, channel_id, complete_packets) - get_complete_packets(rest, channel_id, complete_packets) + _incomplete_packet_binary -> + {packets_binary, Enum.reverse(complete_packets)} end end