Skip to content

Commit 6aa1d37

Browse files
committed
Improve headers in simple_pipeline.md
1 parent 2f0a6d3 commit 6aa1d37

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

get_started/simple_pipeline.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ That might not look too simple for now but don't worry, there'll be a lot of new
5050

5151
The code above is one of the simplest examples of Membrane usage. It plays an mp3 file through your device's `portaudio`. Let's make it work.
5252

53-
### Prerequisites
53+
## Prerequisites
5454

5555
First we need to get all the libraries that Membrane needs to operate in our case. You can read about them more if you'd like, but for now we'll just jump to installation:
5656

@@ -65,7 +65,7 @@ $ brew install clang-format portaudio ffmpeg libmad pkg-config
6565

6666
Alternatively, you can use our docker image that already contains all libraries you need to smoothly run any membrane code. You can read more about how to do it [here](https://tutorials.membraneframework.org/tutorials/videoroom/2_EnvironmentPreparation.html#setting-environment-with-the-use-of-docker).
6767

68-
### Creating a Project
68+
## Creating a Project
6969

7070
By installing Elixir you'll get a bunch of useful tools. One of them is [Mix](https://hexdocs.pm/mix/Mix.html). As you can read in its documentation preface:
7171
> Mix is a build tool that provides tasks for creating, compiling, and testing Elixir projects, managing its dependencies, and more.
@@ -91,7 +91,7 @@ defp deps do
9191
]
9292
end
9393
```
94-
### Our first Pipeline
94+
## Our first Pipeline
9595

9696
The pipeline is one of the basic concepts of Membrane. It's a schema of how the data packets are flowing through our application.
9797

@@ -127,7 +127,7 @@ Since we want to spawn children processes and link them, we will use the [`spec_
127127

128128
>If the concept of callbacks and behaviours is new to you, you should probably take some time to read about OTP in Elixir (especially the part starring GenServer and Supervisor). You can find the proper guide [here](https://elixir-lang.org/getting-started/mix-otp/agent.html)
129129
130-
#### Elements
130+
## Elements
131131

132132
The elements we'd like to use to play our mp3 will be:
133133

@@ -157,7 +157,7 @@ children = %{
157157

158158
The keys in the `children` keyword list (`file`, `decoder`, `converter`, `portaudio`) are just convenient names we gave our elements to refer to them later. We're going to need them for linking.
159159

160-
#### Linking elements
160+
## Linking elements
161161

162162
Now we should link them in the proper order. Each Membrane Element can be one of three types: Source, Sink or Filter. The main difference is that Source provides only output pads, Sink only input and Filter both input and output pads. That means only a Source element start pipelines (it's not prepared to receive any data from other elements), Sink can only end pipelines (it will not send any data to subsequent elements), and Filters can be in the middle (they receive, process and send data further). In our case the links declaration will look like this:
163163

@@ -172,7 +172,7 @@ links = [
172172

173173
The file Source reads bytes from our mp3 file and sends them to decoder. Decoder, after decoding, sends them to converter. Converter, after conversion sends them to our portaudio sink, which receives them and plays music through Portaudio 🎶
174174

175-
#### Parent Spec
175+
## Parent Spec
176176

177177
Last but not least we need group our elements and links together into a proper structure:
178178

@@ -225,7 +225,7 @@ defmodule Hello do
225225
end
226226
```
227227

228-
### Running a pipeline
228+
## Running a pipeline
229229

230230
You can start your pipeline from any place in the code but it's convenient to use Elixir's interactive console:
231231

0 commit comments

Comments
 (0)