# `Membrane.Buffer.Metric`
[🔗](https://github.com/membraneframework/membrane-core/blob/v1.2.6/lib/membrane/buffer/metric.ex#L1)

Specifies API for metrics that analyze data in terms of a given unit

# `unit`

```elixir
@type unit() :: :buffers | :bytes
```

# `buffer_size_approximation`

```elixir
@callback buffer_size_approximation() :: pos_integer()
```

# `buffers_size`

```elixir
@callback buffers_size(
  [
    %Membrane.Buffer{
      dts: term(),
      metadata: term(),
      payload: term(),
      pts: term()
    }
  ]
  | []
) ::
  non_neg_integer()
```

# `split_buffers`

```elixir
@callback split_buffers(
  [
    %Membrane.Buffer{
      dts: term(),
      metadata: term(),
      payload: term(),
      pts: term()
    }
  ]
  | [],
  non_neg_integer()
) ::
  {[
     %Membrane.Buffer{
       dts: term(),
       metadata: term(),
       payload: term(),
       pts: term()
     }
   ]
   | [],
   [
     %Membrane.Buffer{
       dts: term(),
       metadata: term(),
       payload: term(),
       pts: term()
     }
   ]
   | []}
```

# `from_unit`

```elixir
@spec from_unit(unit()) :: module()
```

---

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