diff --git a/lib/membrane_h265_plugin/parser.ex b/lib/membrane_h265_plugin/parser.ex index 66ad7b2..335a866 100644 --- a/lib/membrane_h265_plugin/parser.ex +++ b/lib/membrane_h265_plugin/parser.ex @@ -19,6 +19,8 @@ defmodule Membrane.H265.Parser do * Receiving `%Membrane.RemoteStream{type: :bytestream}` results in the parser mode being set to `:bytestream` * Receiving `%Membrane.H265.RemoteStream{alignment: :nalu}` results in the parser mode being set to `:nalu_aligned` * Receiving `%Membrane.H265.RemoteStream{alignment: :au}` results in the parser mode being set to `:au_aligned` + * Receiving `%Membrane.H265{alignment: :nalu}` results in the parser mode being set to `:nalu_aligned`. + * Receiving `%Membrane.H265{alignment: :au}` results in the parser mode being set to `:au_aligned`. """ use Membrane.Filter @@ -79,7 +81,7 @@ defmodule Membrane.H265.Parser do description: """ Framerate of the video, represented as a tuple consisting of a numerator and the denominator. - Its value will be sent inside the output Membrane.H265 stream format. + Its value will be sent inside the output `Membrane.H265` stream format. """ ], output_alignment: [ @@ -89,7 +91,6 @@ defmodule Membrane.H265.Parser do Alignment of the buffers produced as an output of the parser. If set to `:au`, each output buffer will be a single access unit. Otherwise, if set to `:nalu`, each output buffer will be a single NAL unit. - Defaults to `:au`. """ ] diff --git a/lib/membrane_h265_plugin/parser/au_splitter.ex b/lib/membrane_h265_plugin/parser/au_splitter.ex index cf1bfec..9c50a59 100644 --- a/lib/membrane_h265_plugin/parser/au_splitter.ex +++ b/lib/membrane_h265_plugin/parser/au_splitter.ex @@ -1,15 +1,11 @@ defmodule Membrane.H265.Parser.AUSplitter do @moduledoc """ - Module providing functionalities to divide the binary - h265 stream into access units. + Module providing functionalities to group H265 NAL units + into access units. - The access unit splitter's behaviour is based on *"7.4.2.4.4 - Order of NAL units and coded pictures and association to access units"* + The access unit splitter's behaviour is based on section **7.4.2.4.4** + *"Order of NAL units and coded pictures and association to access units"* of the *"ITU-T Rec. H.265 (08/2021)"* specification. - - The current implementation splits the nalu into access units either when a non vcl nalu with type - `:vps`, `:sps`, `:pps`, `:aud`, `:prefix_sei` is encountered or when the vcl nal unit type is <= 9 or - between 16 and 25 and has `first_slice_segment_in_pic_flag` is set. """ require Logger diff --git a/mix.exs b/mix.exs index d868459..db0e467 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule Membrane.H265.Plugin.Mixfile do use Mix.Project - @version "0.1.0" + @version "0.2.0" @github_url "https://github.com/gBillal/membrane_h265_plugin" def project do @@ -36,13 +36,13 @@ defmodule Membrane.H265.Plugin.Mixfile do defp deps do [ - {:membrane_core, "~> 0.11.0"}, + {:membrane_core, "~> 0.12.0"}, {:membrane_h265_format, "~> 0.1.0"}, {:bunch, "~> 1.4"}, {:ex_doc, ">= 0.0.0", only: :dev, runtime: false}, {:dialyxir, ">= 0.0.0", only: :dev, runtime: false}, {:credo, ">= 0.0.0", only: :dev, runtime: false}, - {:membrane_file_plugin, "~> 0.13.0", only: :test} + {:membrane_file_plugin, "~> 0.15.0", only: :test} ] end diff --git a/mix.lock b/mix.lock index 34a1231..c5d66be 100644 --- a/mix.lock +++ b/mix.lock @@ -12,8 +12,8 @@ "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.0", "f8c570a0d33f8039513fbccaf7108c5d750f47d8defd44088371191b76492b0b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "28b2cbdc13960a46ae9a8858c4bebdec3c9a6d7b4b9e7f4ed1502f8159f338e7"}, "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, - "membrane_core": {:hex, :membrane_core, "0.11.3", "c7cedbbc5af216ce00f173b1e30cbb2ed686b0a86cac9d90bc9cff3c02f938fd", [:mix], [{:bunch, "~> 1.5", [hex: :bunch, repo: "hexpm", optional: false]}, {:qex, "~> 0.3", [hex: :qex, repo: "hexpm", optional: false]}, {:ratio, "~> 2.0", [hex: :ratio, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "de878caa5c5043ccd244f716a31afc9496f626013728881756cacaede72b4649"}, - "membrane_file_plugin": {:hex, :membrane_file_plugin, "0.13.3", "aaf40a72e5fccf6da47ec85ef525234acbec828425f1300f74c464bca1487f40", [:mix], [{:membrane_core, "~> 0.11", [hex: :membrane_core, repo: "hexpm", optional: false]}], "hexpm", "1c1acf610d4fc0279b7fd65a5db06c8bc3ef6a276bf40fb033c2c735c25839ba"}, + "membrane_core": {:hex, :membrane_core, "0.12.7", "9d3dd564e32768919c1105b4579bd2eef12df7473da5d789185544ae22610e2d", [:mix], [{:bunch, "~> 1.6", [hex: :bunch, repo: "hexpm", optional: false]}, {:qex, "~> 0.3", [hex: :qex, repo: "hexpm", optional: false]}, {:ratio, "~> 2.0", [hex: :ratio, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "321e4009b7068ca04b65daf5c79b8c3772d4286c27d05e50939ec6d9b4d50e59"}, + "membrane_file_plugin": {:hex, :membrane_file_plugin, "0.15.0", "ddf9535fda82aae5b0688a98de1d02268287ffc8bcc6dba1a85e057d71c522af", [:mix], [{:membrane_core, "~> 0.12.0", [hex: :membrane_core, repo: "hexpm", optional: false]}], "hexpm", "fa2f7219f96c9e815475dc0d8c238c0a5648012917584756eb3eee476f737ce2"}, "membrane_h265_format": {:hex, :membrane_h265_format, "0.1.0", "59d1e5546d6c4817389cd71904a4afc7ae4e073fd5eda3bf13a0708a736fe6a5", [:mix], [], "hexpm", "d39baa7ccff65f93c0b5126c48226217dd83753ac712207e9be8c67e3c367a4c"}, "nimble_parsec": {:hex, :nimble_parsec, "1.2.3", "244836e6e3f1200c7f30cb56733fd808744eca61fd182f731eac4af635cc6d0b", [:mix], [], "hexpm", "c8d789e39b9131acf7b99291e93dae60ab48ef14a7ee9d58c6964f59efb570b0"}, "numbers": {:hex, :numbers, "5.2.4", "f123d5bb7f6acc366f8f445e10a32bd403c8469bdbce8ce049e1f0972b607080", [:mix], [{:coerce, "~> 1.0", [hex: :coerce, repo: "hexpm", optional: false]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "eeccf5c61d5f4922198395bf87a465b6f980b8b862dd22d28198c5e6fab38582"}, diff --git a/test/support/test_source.ex b/test/support/test_source.ex index 845deb1..408b3a0 100644 --- a/test/support/test_source.ex +++ b/test/support/test_source.ex @@ -6,7 +6,6 @@ defmodule Membrane.H265.Support.TestSource do def_options mode: [] def_output_pad :output, - demand_mode: :auto, mode: :push, accepted_format: any_of(