Skip to content

Instantly share code, notes, and snippets.

@erszcz
Created March 15, 2019 14:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save erszcz/cd3d57a141804ec1aa1d5b4ab1f0bb05 to your computer and use it in GitHub Desktop.
Save erszcz/cd3d57a141804ec1aa1d5b4ab1f0bb05 to your computer and use it in GitHub Desktop.
Gradualizer fix for Membrane.Element.RTP.H264.FU
diff --git a/lib/rtp_h264/nal_formats/fu.ex b/lib/rtp_h264/nal_formats/fu.ex
index 873cf26..3811210 100644
--- a/lib/rtp_h264/nal_formats/fu.ex
+++ b/lib/rtp_h264/nal_formats/fu.ex
@@ -29,12 +29,25 @@ defmodule Membrane.Element.RTP.H264.FU do
| {:error, :packet_malformed | :invalid_first_packet}
| {:incomplete, t()}
def parse(data, seq_num, acc) do
- # actual code
- data
- |> Header.parse()
- ~>> ({:ok, {header, value}} -> do_parse(header, value, seq_num, acc))
+ ## actual code
+ #data
+ #|> Header.parse()
+ #~>> ({:ok, {header, value}} -> do_parse(header, value, seq_num, acc))
+
+ # expanded
+ case Membrane.Element.RTP.H264.FU.Header.parse(data) do
+ {:ok, {header, value}} ->
+ do_parse(header, value, seq_num, acc)
+
+ {:error, _} = e ->
+ e
+ end
end
+ @spec do_parse(%Header{}, binary(), Depayloader.sequence_number(), t())
+ :: {:ok, {binary(), NALHeader.type()}}
+ | {:error, :packet_malformed | :invalid_first_packet}
+ | {:incomplete, t()}
defp do_parse(header, data, seq_num, acc)
defp do_parse(%Header{end_bit: true, type: type}, data, seq_num, %__MODULE__{
diff --git a/lib/rtp_h264/nal_formats/fu.ex b/lib/rtp_h264/nal_formats/fu.ex
index 873cf26..d314a10 100644
--- a/lib/rtp_h264/nal_formats/fu.ex
+++ b/lib/rtp_h264/nal_formats/fu.ex
@@ -29,10 +29,19 @@ defmodule Membrane.Element.RTP.H264.FU do
| {:error, :packet_malformed | :invalid_first_packet}
| {:incomplete, t()}
def parse(data, seq_num, acc) do
- # actual code
- data
- |> Header.parse()
- ~>> ({:ok, {header, value}} -> do_parse(header, value, seq_num, acc))
+ ## actual code
+ #data
+ #|> Header.parse()
+ #~>> ({:ok, {header, value}} -> do_parse(header, value, seq_num, acc))
+
+ # expanded
+ case Membrane.Element.RTP.H264.FU.Header.parse(data) do
+ {:ok, {header, value}} ->
+ do_parse(header, value, seq_num, acc)
+
+ {:error, _} = e ->
+ e
+ end
end
defp do_parse(header, data, seq_num, acc)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment