# `Membrane.Funnel`
[🔗](https://github.com/membraneframework/membrane-core/blob/v1.3.0/lib/membrane/funnel.ex#L1)

Element that can be used for collecting data from multiple inputs and sending it through one
output.

When a new input connects in the `:playing` state, the funnel sends
`Membrane.Funnel.NewInputEvent` via output.

## Element options

Passed via struct `t:Membrane.Funnel.t/0`

- `end_of_stream`  

  ```
  :on_last_pad | :on_first_pad | :never
  ```
  
  Default value: `:on_last_pad`  
  

## Pads

### `:input`

Accepted formats:
```
_any
```

Direction: | `:input`
Availability: | `:on_request`
Flow control: | `:auto`

### `:output`

Accepted formats:
```
_any
```

Direction: | `:output`
Availability: | `:always`
Flow control: | `:auto`

# `t`

```elixir
@type t() :: %Membrane.Funnel{end_of_stream: :on_last_pad | :on_first_pad | :never}
```

Struct containing options for `Membrane.Funnel`

# `options`

```elixir
@spec options() :: keyword()
```

Returns description of options available for this module

---

*Consult [api-reference.md](api-reference.md) for complete listing*
