Skip to content

Commit ac3c24a

Browse files
committed
Add both H264 packetization modes in default codecs
1 parent fc15825 commit ac3c24a

File tree

2 files changed

+32
-28
lines changed

2 files changed

+32
-28
lines changed

lib/ex_webrtc/peer_connection/configuration.ex

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,29 +27,7 @@ defmodule ExWebRTC.PeerConnection.Configuration do
2727
clock_rate: 90_000
2828
}
2929

30-
@default_codec_params_h264 %RTPCodecParameters{
31-
payload_type: 99,
32-
mime_type: "video/H264",
33-
clock_rate: 90_000,
34-
sdp_fmtp_line: %FMTP{
35-
pt: 99,
36-
level_asymmetry_allowed: true,
37-
packetization_mode: 1,
38-
profile_level_id: 0x42E01F
39-
}
40-
}
41-
42-
@default_codec_params_av1 %RTPCodecParameters{
43-
payload_type: 45,
44-
mime_type: "video/AV1",
45-
clock_rate: 90_000,
46-
sdp_fmtp_line: %FMTP{pt: 45, level_idx: 5, profile: 0, tier: 0}
47-
}
48-
49-
@default_audio_codecs [@default_codec_params_opus]
50-
51-
@default_video_codecs [
52-
@default_codec_params_vp8,
30+
@default_codec_params_h264 [
5331
%RTPCodecParameters{
5432
payload_type: 98,
5533
mime_type: "video/H264",
@@ -61,10 +39,34 @@ defmodule ExWebRTC.PeerConnection.Configuration do
6139
profile_level_id: 0x42E01F
6240
}
6341
},
64-
@default_codec_params_h264,
65-
@default_codec_params_av1
42+
%RTPCodecParameters{
43+
payload_type: 99,
44+
mime_type: "video/H264",
45+
clock_rate: 90_000,
46+
sdp_fmtp_line: %FMTP{
47+
pt: 99,
48+
level_asymmetry_allowed: true,
49+
packetization_mode: 1,
50+
profile_level_id: 0x42E01F
51+
}
52+
}
6653
]
6754

55+
@default_codec_params_av1 %RTPCodecParameters{
56+
payload_type: 45,
57+
mime_type: "video/AV1",
58+
clock_rate: 90_000,
59+
sdp_fmtp_line: %FMTP{pt: 45, level_idx: 5, profile: 0, tier: 0}
60+
}
61+
62+
@default_audio_codecs [@default_codec_params_opus]
63+
@default_video_codecs [
64+
@default_codec_params_vp8,
65+
@default_codec_params_h264,
66+
@default_codec_params_av1
67+
]
68+
|> List.flatten()
69+
6870
@typedoc """
6971
Allowed audio codec names which will get expanded to the relevant default `t:ExWebRTC.RTPCodecParameters.t/0`
7072
"""
@@ -716,7 +718,7 @@ defmodule ExWebRTC.PeerConnection.Configuration do
716718
options
717719

718720
Enum.all?(codecs, &is_atom/1) ->
719-
expanded_codecs = Enum.map(codecs, &expand_default_codec/1)
721+
expanded_codecs = codecs |> Enum.map(&expand_default_codec/1) |> List.flatten()
720722
Keyword.put(options, key, expanded_codecs)
721723

722724
true ->

test/ex_webrtc/peer_connection/configuration_test.exs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -515,11 +515,13 @@ defmodule ExWebRTC.PeerConnection.ConfigurationTest do
515515

516516
assert Configuration.expand_default_codecs(og_options) == og_options
517517

518-
[video_codecs: [vp8_params, h264_params]] =
518+
# 2 packetization_modes for H264
519+
[video_codecs: [vp8_params, h264_params_0, h264_params_1]] =
519520
Configuration.expand_default_codecs(video_codecs: [:vp8, :h264])
520521

521522
assert vp8_params.mime_type == "video/VP8"
522-
assert h264_params.mime_type == "video/H264"
523+
assert h264_params_0.mime_type == "video/H264"
524+
assert h264_params_1.mime_type == "video/H264"
523525

524526
assert_raise RuntimeError, fn -> Configuration.expand_default_codecs(video_codecs: [:av2]) end
525527

0 commit comments

Comments
 (0)