@@ -10,16 +10,16 @@ defmodule Membrane.Transcoder do
1010 * `Membrane.VP8`
1111 * `Membrane.VP9`
1212 * `Membrane.RawVideo`
13- * `Membrane.RemoteStream{content_type : Membrane.VP8}` (only as an input stream)
14- * `Membrane.RemoteStream{content_type : Membrane.VP9}` (only as an input stream)
13+ * `Membrane.RemoteStream{content_format : Membrane.VP8}` (only as an input stream)
14+ * `Membrane.RemoteStream{content_format : Membrane.VP9}` (only as an input stream)
1515
1616 The following audio stream formats are supported:
1717 * `Membrane.AAC`
1818 * `Membrane.Opus`
1919 * `Membrane.MPEGAudio`
2020 * `Membrane.RawAudio`
21- * `Membrane.RemoteStream{content_type : Membrane.Opus}` (only as an input stream)
22- * `Membrane.RemoteStream{content_type : Membrane.MPEGAudio}` (only as an input stream)
21+ * `Membrane.RemoteStream{content_format : Membrane.Opus}` (only as an input stream)
22+ * `Membrane.RemoteStream{content_format : Membrane.MPEGAudio}` (only as an input stream)
2323 """
2424 use Membrane.Bin
2525
@@ -112,20 +112,23 @@ defmodule Membrane.Transcoder do
112112 """
113113 ] ,
114114 assumed_input_stream_format: [
115- spec: % Membrane.RemoteStream { content_format: Membrane.MPEGAudio } | nil ,
115+ spec: struct ( ) | nil ,
116116 default: nil ,
117117 description: """
118- Allows to override stream format of the input stream with
119- `%Membrane.RemoteStream{content_format: Membrane.MPEGAudio}`
120- If nil, the input stream format won't be overriden.
118+ Allows to override stream format of the input stream.
119+
120+ Overriding will fail, the stream format sent on the #{ inspect ( __MODULE__ ) } 's input
121+ pad is not `Membrane.RemoteStream`
122+
123+ If nil or not set, the input stream format won't be overriden.
121124 """
122125 ]
123126
124127 @ impl true
125128 def handle_init ( _ctx , opts ) do
126129 spec = [
127130 bin_input ( )
128- |> maybe_override_input_stream_format ( opts . assumed_input_stream_format )
131+ |> maybe_plug_stream_format_changer ( opts . assumed_input_stream_format )
129132 |> child ( :connector , % Membrane.Connector { notify_on_stream_format?: true } ) ,
130133 child ( :output_funnel , Funnel )
131134 |> bin_output ( )
@@ -141,26 +144,13 @@ defmodule Membrane.Transcoder do
141144 { [ spec: spec ] , state }
142145 end
143146
144- defp maybe_override_input_stream_format (
145- builder ,
146- % Membrane.RemoteStream { content_format: Membrane.MPEGAudio } = stream_format
147- ) do
148- builder
149- |> child ( :stream_format_changer , % Membrane.Transcoder.StreamFormatChanger {
150- stream_format: stream_format
151- } )
152- end
147+ defp maybe_plug_stream_format_changer ( builder , nil ) , do: builder
153148
154- defp maybe_override_input_stream_format ( builder , nil ) do
149+ defp maybe_plug_stream_format_changer ( builder , enforced_stream_format ) do
155150 builder
156- end
157-
158- defp maybe_override_input_stream_format ( _builder , stream_format ) do
159- raise """
160- The only input stream format that can be assumed is \
161- `%Membrane.RemoteStream{content_format: Membrane.MPEGAudio}`, while you wanted to assume: \
162- #{ inspect ( stream_format ) }
163- """
151+ |> child ( :stream_format_changer , % __MODULE__ . StreamFormatChanger {
152+ stream_format: enforced_stream_format
153+ } )
164154 end
165155
166156 @ impl true
0 commit comments