Skip to content

Commit f8940d0

Browse files
authored
Merge pull request #157 from membraneframework/release/v0.24.0
Release membrane_rtp_plugin v0.24.0
2 parents cdfc040 + eddb767 commit f8940d0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+214
-229
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ The package can be installed by adding `membrane_rtp_plugin` to your list of dep
1515
```elixir
1616
def deps do
1717
[
18-
{:membrane_rtp_plugin, "~> 0.23.2"},
18+
{:membrane_rtp_plugin, "~> 0.24.0"},
1919
{:ex_libsrtp, ">= 0.0.0"} # required only if SRTP/SRTCP support is needed
2020
]
2121
end

lib/membrane/rtcp/parser.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ defmodule Membrane.RTCP.Parser do
1111

1212
def_input_pad :input,
1313
accepted_format: %RemoteStream{type: :packetized, content_format: cf} when cf in [nil, RTCP],
14-
demand_mode: :auto
14+
flow_control: :auto
1515

16-
def_output_pad :output, accepted_format: RTCP, demand_mode: :auto
16+
def_output_pad :output, accepted_format: RTCP, flow_control: :auto
1717

1818
def_output_pad :receiver_report_output,
19-
mode: :push,
19+
flow_control: :push,
2020
accepted_format: %RemoteStream{type: :packetized, content_format: RTCP}
2121

2222
@impl true
@@ -36,7 +36,7 @@ defmodule Membrane.RTCP.Parser do
3636
end
3737

3838
@impl true
39-
def handle_process(:input, %Buffer{payload: payload, metadata: metadata}, _ctx, state) do
39+
def handle_buffer(:input, %Buffer{payload: payload, metadata: metadata}, _ctx, state) do
4040
payload
4141
|> RTCP.Packet.parse()
4242
|> case do

lib/membrane/rtcp/receiver.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ defmodule Membrane.RTCP.Receiver do
1818
alias Membrane.Time
1919
alias Membrane.{RTCP, RTP}
2020

21-
def_input_pad :input, accepted_format: _any, demand_mode: :auto
22-
def_output_pad :output, accepted_format: _any, demand_mode: :auto
21+
def_input_pad :input, accepted_format: _any, flow_control: :auto
22+
def_output_pad :output, accepted_format: _any, flow_control: :auto
2323

2424
def_options local_ssrc: [spec: RTP.ssrc_t()],
2525
remote_ssrc: [spec: RTP.ssrc_t()],
@@ -113,7 +113,7 @@ defmodule Membrane.RTCP.Receiver do
113113
interarrival_jitter: trunc(stats.interarrival_jitter),
114114
last_sr_timestamp: Map.get(state.sr_info, :cut_wallclock_ts, 0),
115115
# delay_since_sr is expressed in 1/65536 seconds, see https://tools.ietf.org/html/rfc3550#section-6.4.1
116-
delay_since_sr: Time.round_to_seconds(65_536 * delay_since_sr)
116+
delay_since_sr: Time.as_seconds(65_536 * delay_since_sr, :round)
117117
}
118118

119119
packet = %RTCP.ReceiverReportPacket{ssrc: state.local_ssrc, reports: [report_block]}
@@ -149,7 +149,7 @@ defmodule Membrane.RTCP.Receiver do
149149
def handle_event(pad, event, ctx, state), do: super(pad, event, ctx, state)
150150

151151
@impl true
152-
def handle_process(:input, buffer, _ctx, state) do
152+
def handle_buffer(:input, buffer, _ctx, state) do
153153
{[buffer: {:output, buffer}], state}
154154
end
155155

lib/membrane/rtcp/transport_feedback_packet/twcc.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ defmodule Membrane.RTCP.TransportFeedbackPacket.TWCC do
271271
defp scale_delta(delta) do
272272
# Deltas are represented as multiples of 250μs
273273
# https://datatracker.ietf.org/doc/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-3.1.5
274-
delta |> Time.round_to_microseconds() |> div(250)
274+
delta |> Time.as_microseconds(:round) |> div(250)
275275
end
276276

277277
defp delta_to_packet_status(scaled_delta) do

lib/membrane/rtp/depayloader_bin.ex

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,10 @@ defmodule Membrane.RTP.DepayloaderBin do
1818
]
1919

2020
def_input_pad :input,
21-
accepted_format: RTP,
22-
demand_unit: :buffers
21+
accepted_format: RTP
2322

2423
def_output_pad :output,
25-
accepted_format: _any,
26-
demand_unit: :buffers
24+
accepted_format: _any
2725

2826
@impl true
2927
def handle_init(_ctx, opts) do

lib/membrane/rtp/header_generator.ex

+5-5
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ defmodule Membrane.RTP.HeaderGenerator do
1515
@max_seq_num Bitwise.bsl(1, 16) - 1
1616
@max_timestamp Bitwise.bsl(1, 32) - 1
1717

18-
def_input_pad :input, accepted_format: RTP, demand_mode: :auto
18+
def_input_pad :input, accepted_format: RTP, flow_control: :auto
1919

20-
def_output_pad :output, accepted_format: RTP, demand_mode: :auto
20+
def_output_pad :output, accepted_format: RTP, flow_control: :auto
2121

2222
def_options ssrc: [spec: RTP.ssrc_t()],
2323
payload_type: [spec: RTP.payload_type_t()],
@@ -63,13 +63,13 @@ defmodule Membrane.RTP.HeaderGenerator do
6363
end
6464

6565
@impl true
66-
def handle_process(:input, buffer, _ctx, state) do
66+
def handle_buffer(:input, buffer, _ctx, state) do
6767
{rtp_metadata, metadata} = Map.pop(buffer.metadata, :rtp, %{})
6868

6969
rtp_offset =
7070
buffer.pts
71-
|> Ratio.mult(state.clock_rate)
72-
|> Membrane.Time.round_to_seconds()
71+
|> Numbers.mult(state.clock_rate)
72+
|> Membrane.Time.as_seconds(:round)
7373

7474
rtp_timestamp = rem(state.init_timestamp + rtp_offset, @max_timestamp + 1)
7575

lib/membrane/rtp/inbound_packet_tracker.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ defmodule Membrane.RTP.InboundPacketTracker do
2121
@max_s24_val Bitwise.bsl(1, 23) - 1
2222
@min_s24_val -Bitwise.bsl(1, 23)
2323

24-
def_input_pad :input, accepted_format: _any, demand_mode: :auto
25-
def_output_pad :output, accepted_format: _any, demand_mode: :auto
24+
def_input_pad :input, accepted_format: _any, flow_control: :auto
25+
def_output_pad :output, accepted_format: _any, flow_control: :auto
2626

2727
def_options clock_rate: [
2828
spec: Membrane.RTP.clock_rate_t()
@@ -74,7 +74,7 @@ defmodule Membrane.RTP.InboundPacketTracker do
7474
end
7575

7676
@impl true
77-
def handle_process(:input, buffer, _ctx, %State{} = state) do
77+
def handle_buffer(:input, buffer, _ctx, %State{} = state) do
7878
seq_num = buffer.metadata.rtp.sequence_number
7979

8080
{delta, packet_index, tracker} = SequenceNumberTracker.track(state.seq_num_tracker, seq_num)
@@ -187,7 +187,7 @@ defmodule Membrane.RTP.InboundPacketTracker do
187187
# Algorithm from https://tools.ietf.org/html/rfc3550#appendix-A.8
188188
arrival_ts = Map.get(metadata, :arrival_ts, Time.vm_time())
189189
buffer_ts = metadata.rtp.timestamp
190-
arrival = arrival_ts |> Time.as_seconds() |> Ratio.mult(clock_rate) |> Ratio.trunc()
190+
arrival = arrival_ts |> Time.as_seconds() |> Numbers.mult(clock_rate) |> Ratio.trunc()
191191
transit = arrival - buffer_ts
192192

193193
{jitter, transit} =

lib/membrane/rtp/jitter_buffer.ex

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ defmodule Membrane.RTP.JitterBuffer do
1515

1616
@timestamp_limit Bitwise.bsl(1, 32)
1717

18-
def_output_pad :output, accepted_format: RTP, demand_mode: :auto
18+
def_output_pad :output, accepted_format: RTP, flow_control: :auto
1919

20-
def_input_pad :input, accepted_format: RTP, demand_mode: :auto
20+
def_input_pad :input, accepted_format: RTP, flow_control: :auto
2121

2222
@default_latency 200 |> Time.milliseconds()
2323

@@ -66,7 +66,7 @@ defmodule Membrane.RTP.JitterBuffer do
6666
Process.send_after(
6767
self(),
6868
:initial_latency_passed,
69-
state.latency |> Time.round_to_milliseconds()
69+
state.latency |> Time.as_milliseconds(:round)
7070
)
7171

7272
{[], %{state | waiting?: true}}
@@ -83,7 +83,7 @@ defmodule Membrane.RTP.JitterBuffer do
8383
end
8484

8585
@impl true
86-
def handle_process(:input, buffer, _context, %State{store: store, waiting?: true} = state) do
86+
def handle_buffer(:input, buffer, _context, %State{store: store, waiting?: true} = state) do
8787
state =
8888
case BufferStore.insert_buffer(store, buffer) do
8989
{:ok, result} ->
@@ -98,7 +98,7 @@ defmodule Membrane.RTP.JitterBuffer do
9898
end
9999

100100
@impl true
101-
def handle_process(:input, buffer, _context, %State{store: store} = state) do
101+
def handle_buffer(:input, buffer, _context, %State{store: store} = state) do
102102
case BufferStore.insert_buffer(store, buffer) do
103103
{:ok, result} ->
104104
state = %State{state | store: result}
@@ -147,7 +147,7 @@ defmodule Membrane.RTP.JitterBuffer do
147147

148148
buffer_ts ->
149149
since_insertion = Time.monotonic_time() - buffer_ts
150-
send_after_time = max(0, latency - since_insertion) |> Time.round_to_milliseconds()
150+
send_after_time = max(0, latency - since_insertion) |> Time.as_milliseconds(:round)
151151
Process.send_after(self(), :send_buffers, send_after_time)
152152
end
153153

lib/membrane/rtp/outbound_rtx_controller.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ defmodule Membrane.RTP.OutboundRtxController do
1313

1414
def_input_pad :input,
1515
availability: :always,
16-
demand_mode: :auto,
16+
flow_control: :auto,
1717
accepted_format: _any
1818

1919
def_output_pad :output,
2020
availability: :always,
21-
demand_mode: :auto,
21+
flow_control: :auto,
2222
accepted_format: _any
2323

2424
@max_store_size 300
@@ -37,7 +37,7 @@ defmodule Membrane.RTP.OutboundRtxController do
3737
end
3838

3939
@impl true
40-
def handle_process(:input, buffer, _ctx, state) when byte_size(buffer.payload) > 0 do
40+
def handle_buffer(:input, buffer, _ctx, state) when byte_size(buffer.payload) > 0 do
4141
idx = seq_num_to_index(buffer.metadata.rtp.sequence_number)
4242

4343
state = put_in(state, [:store, idx], {nil, buffer})
@@ -46,7 +46,7 @@ defmodule Membrane.RTP.OutboundRtxController do
4646
end
4747

4848
@impl true
49-
def handle_process(:input, buffer, _ctx, state), do: {[forward: buffer], state}
49+
def handle_buffer(:input, buffer, _ctx, state), do: {[forward: buffer], state}
5050

5151
@impl true
5252
def handle_event(

lib/membrane/rtp/outbound_tracking_serializer.ex

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@ defmodule Membrane.RTP.OutboundTrackingSerializer do
1616
alias Membrane.RTCP.TransportFeedbackPacket.NACK
1717
alias Membrane.RTP.Session.SenderReport
1818

19-
def_input_pad :input, accepted_format: RTP, demand_mode: :auto
19+
def_input_pad :input, accepted_format: RTP, flow_control: :auto
2020

2121
def_output_pad :output,
2222
accepted_format: %RemoteStream{type: :packetized, content_format: RTP},
23-
demand_mode: :auto
23+
flow_control: :auto
2424

2525
def_input_pad :rtcp_input,
2626
availability: :on_request,
2727
accepted_format: _any,
28-
demand_mode: :auto
28+
flow_control: :auto
2929

3030
def_output_pad :rtcp_output,
3131
availability: :on_request,
3232
accepted_format: %RemoteStream{type: :packetized, content_format: RTCP},
33-
demand_mode: :auto
33+
flow_control: :auto
3434

3535
def_options ssrc: [spec: RTP.ssrc_t()],
3636
payload_type: [spec: RTP.payload_type_t()],
@@ -209,7 +209,7 @@ defmodule Membrane.RTP.OutboundTrackingSerializer do
209209
end
210210

211211
@impl true
212-
def handle_process(:input, %Buffer{} = buffer, _ctx, state) do
212+
def handle_buffer(:input, %Buffer{} = buffer, _ctx, state) do
213213
state = update_stats(buffer, state)
214214

215215
%{rtp: rtp_metadata} = buffer.metadata

lib/membrane/rtp/parser.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ defmodule Membrane.RTP.Parser do
4444
def_input_pad :input,
4545
accepted_format:
4646
%RemoteStream{type: :packetized, content_format: cf} when cf in [nil, RTP, RTCP],
47-
demand_mode: :auto
47+
flow_control: :auto
4848

49-
def_output_pad :output, accepted_format: RTP, demand_mode: :auto
49+
def_output_pad :output, accepted_format: RTP, flow_control: :auto
5050

5151
def_output_pad :rtcp_output,
52-
mode: :push,
52+
flow_control: :push,
5353
accepted_format: %RemoteStream{content_format: RTCP, type: :packetized},
5454
availability: :on_request
5555

@@ -86,7 +86,7 @@ defmodule Membrane.RTP.Parser do
8686
end
8787

8888
@impl true
89-
def handle_process(:input, %Buffer{payload: payload, metadata: metadata} = buffer, _ctx, state) do
89+
def handle_buffer(:input, %Buffer{payload: payload, metadata: metadata} = buffer, _ctx, state) do
9090
with :rtp <- RTP.Packet.identify(payload),
9191
{:ok,
9292
%{packet: packet, padding_size: padding_size, total_header_size: total_header_size}} <-

lib/membrane/rtp/payloader_bin.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ defmodule Membrane.RTP.PayloaderBin do
77

88
alias Membrane.RTP
99

10-
def_input_pad :input, accepted_format: _any, demand_unit: :buffers
10+
def_input_pad :input, accepted_format: _any
1111

12-
def_output_pad :output, accepted_format: RTP, demand_unit: :buffers
12+
def_output_pad :output, accepted_format: RTP
1313

1414
def_options payloader: [
1515
spec: module(),

lib/membrane/rtp/rtx_parser.ex

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ defmodule Membrane.RTP.RTXParser do
1616

1717
alias Membrane.{Buffer, RTP}
1818

19-
def_input_pad :input, accepted_format: RTP, demand_mode: :auto
20-
def_output_pad :output, accepted_format: RTP, demand_mode: :auto
19+
def_input_pad :input, accepted_format: RTP, flow_control: :auto
20+
def_output_pad :output, accepted_format: RTP, flow_control: :auto
2121

2222
def_options original_payload_type: [
2323
description:
@@ -47,7 +47,7 @@ defmodule Membrane.RTP.RTXParser do
4747
end
4848

4949
@impl true
50-
def handle_process(:input, %Buffer{payload: payload} = buffer, _ctx, state)
50+
def handle_buffer(:input, %Buffer{payload: payload} = buffer, _ctx, state)
5151
when byte_size(payload) >= 2 do
5252
<<original_seq_num::16, original_payload::binary>> = payload
5353

@@ -76,7 +76,7 @@ defmodule Membrane.RTP.RTXParser do
7676
end
7777

7878
@impl true
79-
def handle_process(:input, %Buffer{payload: payload, metadata: metadata}, _ctx, state) do
79+
def handle_buffer(:input, %Buffer{payload: payload, metadata: metadata}, _ctx, state) do
8080
# Ignore empty buffers, most likely used for bandwidth estimation
8181
if byte_size(payload) > 0 do
8282
Membrane.Logger.warning(

lib/membrane/rtp/session/sender_report.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ defmodule Membrane.RTP.Session.SenderReport do
100100

101101
rtp_offset =
102102
(timestamp - sender_stats.timestamp)
103-
|> Ratio.mult(sender_stats.clock_rate)
104-
|> Time.round_to_seconds()
103+
|> Numbers.mult(sender_stats.clock_rate)
104+
|> Time.as_seconds(:round)
105105

106106
rtp_timestamp = rem(sender_stats.rtp_timestamp + rtp_offset, @timestamp_limit)
107107

lib/membrane/rtp/session_bin.ex

-6
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,6 @@ defmodule Membrane.RTP.SessionBin do
180180
end
181181

182182
def_input_pad :input,
183-
demand_unit: :buffers,
184183
accepted_format: _any,
185184
availability: :on_request,
186185
options: [
@@ -215,13 +214,11 @@ defmodule Membrane.RTP.SessionBin do
215214
]
216215

217216
def_input_pad :rtp_input,
218-
demand_unit: :buffers,
219217
accepted_format:
220218
%RemoteStream{type: :packetized, content_format: cf} when cf in [RTP, RTCP, nil],
221219
availability: :on_request
222220

223221
def_output_pad :output,
224-
demand_unit: :buffers,
225222
accepted_format: _any,
226223
availability: :on_request,
227224
options: [
@@ -286,7 +283,6 @@ defmodule Membrane.RTP.SessionBin do
286283
]
287284

288285
def_output_pad :rtp_output,
289-
demand_unit: :buffers,
290286
accepted_format: %RemoteStream{type: :packetized, content_format: RTP},
291287
availability: :on_request,
292288
options: [
@@ -322,12 +318,10 @@ defmodule Membrane.RTP.SessionBin do
322318
]
323319

324320
def_output_pad :rtcp_receiver_output,
325-
demand_unit: :buffers,
326321
accepted_format: %RemoteStream{type: :packetized, content_format: RTCP},
327322
availability: :on_request
328323

329324
def_output_pad :rtcp_sender_output,
330-
demand_unit: :buffers,
331325
accepted_format: %RemoteStream{type: :packetized, content_format: RTCP},
332326
availability: :on_request
333327

0 commit comments

Comments
 (0)