Skip to content

Commit 5e64f05

Browse files
committed
test coverage
1 parent f068bb6 commit 5e64f05

File tree

2 files changed

+47
-11
lines changed

2 files changed

+47
-11
lines changed

lib/ex_webrtc/rtp/h264/nal_formats/fu/header.ex

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,4 @@ defmodule ExWebRTC.RTP.H264.FU.Header do
5555
end
5656

5757
def parse(_binary), do: {:error, :packet_malformed}
58-
59-
@doc """
60-
Adds FU header
61-
"""
62-
@spec add_header(binary(), 0 | 1, 0 | 1, NAL.Header.rbsp_type()) :: binary()
63-
def add_header(payload, start_bit, end_bit, type),
64-
do: <<start_bit::1, end_bit::1, 0::1, type::5>> <> payload
6558
end

test/ex_webrtc/rtp/h264/depayloader_test.exs

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ defmodule ExWebRTC.RTP.H264.DepayloaderTest do
7272
end
7373

7474
test "starting new without ending previous FU-A" do
75-
payload_fuas = <<60, 133, 128>>
76-
payload_fua = <<60, 133, 129>>
75+
payload_fuas1 = <<60, 133, 128>>
76+
payload_fuas2 = <<60, 133, 129>>
7777

7878
depayloader = Depayloader.H264.new()
7979

80-
packet1 = ExRTP.Packet.new(payload_fuas, timestamp: 10)
81-
packet2 = ExRTP.Packet.new(payload_fua, timestamp: 10)
80+
packet1 = ExRTP.Packet.new(payload_fuas1, timestamp: 10)
81+
packet2 = ExRTP.Packet.new(payload_fuas2, timestamp: 10)
8282

8383
{bin, depayloader} = Depayloader.H264.depayload(depayloader, packet1)
8484

@@ -91,6 +91,28 @@ defmodule ExWebRTC.RTP.H264.DepayloaderTest do
9191
{bin, depayloader}
9292
end
9393

94+
test "non-start packet without starting FU-A beforehand" do
95+
payload_fua = <<60, 5, 128>>
96+
97+
depayloader = Depayloader.H264.new()
98+
99+
packet = ExRTP.Packet.new(payload_fua, timestamp: 10)
100+
101+
assert {nil, %{current_timestamp: nil, fu_parser_acc: []}} =
102+
Depayloader.H264.depayload(depayloader, packet)
103+
end
104+
105+
test "non-fragmented FU-A (start and end bits set to 1)" do
106+
payload_fua = <<60, 197, 129>>
107+
108+
depayloader = Depayloader.H264.new()
109+
110+
packet = ExRTP.Packet.new(payload_fua, timestamp: 10)
111+
112+
assert {nil, %{current_timestamp: nil, fu_parser_acc: []}} =
113+
Depayloader.H264.depayload(depayloader, packet)
114+
end
115+
94116
test "all unsupported NAL types" do
95117
# reserved (22, 23, 30, 31) and unsupported NALu types (STAP-B: 25, MTAP-16: 26, MTAP-24: 27, FU-B: 29)
96118
payloads_nalu_unsupported = [
@@ -114,7 +136,28 @@ defmodule ExWebRTC.RTP.H264.DepayloaderTest do
114136
end)
115137
end
116138

139+
test "empty RTP payload" do
140+
payload_empty = <<>>
141+
142+
depayloader = Depayloader.H264.new()
143+
packet = ExRTP.Packet.new(payload_empty, timestamp: 123)
144+
145+
assert {nil, %{current_timestamp: nil, fu_parser_acc: []}} =
146+
Depayloader.H264.depayload(depayloader, packet)
147+
end
148+
117149
test "malformed NAL" do
150+
# forbidden zero bit set to 1
151+
payload_invalid = <<181, 0>>
152+
153+
depayloader = Depayloader.H264.new()
154+
packet = ExRTP.Packet.new(payload_invalid, timestamp: 123)
155+
156+
assert {nil, %{current_timestamp: nil, fu_parser_acc: []}} =
157+
Depayloader.H264.depayload(depayloader, packet)
158+
end
159+
160+
test "malformed STAP-A" do
118161
# malformed STAP-A payload. First NAL should be 1-byte long, but is 2-bytes long
119162
payload_invalid = <<56, 0, 1, 128, 12, 0, 1, 129>>
120163

0 commit comments

Comments
 (0)