design: stream-status: section breakdown, markup and readability fixes

This commit is contained in:
Reynaldo H. Verdejo Pinochet 2016-12-30 00:33:16 -08:00
parent 54a1f8e328
commit 8cc223c9bc

View file

@ -3,16 +3,18 @@
This document describes the design and use cases for the stream status
messages.
STREAM_STATUS messages are posted on the bus when the state of a
streaming thread changes. The purpose of this message is to allow the
`STREAM_STATUS` messages are posted on the bus when the state of a
streaming thread changes. The purpose of this messages is to allow the
application to interact with the streaming thread properties, such as
the thread priority or the threadpool to use.
## Requirements and scenarios
We accommodate for the following requirements:
- Application is informed when a streaming thread is about to be
created. It should be possible for the application to suggest a
custom GstTaskPool.
custom `GstTaskPool`.
- Application is informed when the status of a streaming thread is
changed. This can be interesting for GUI application that want to
@ -34,55 +36,55 @@ We allow for the following scenarios:
- boost the priority of the udp receiver streaming thread
```
.--------. .-------. .------. .-------.
| udpsrc | | depay | | adec | | asink |
| src->sink src->sink src->sink |
'--------' '-------' '------' '-------'
.--------. .-------. .------. .-------.
| udpsrc | | depay | | adec | | asink |
| src->sink src->sink src->sink |
'--------' '-------' '------' '-------'
```
- when going from READY to PAUSED state, udpsrc will require a
- when going from `READY` to `PAUSED` state, udpsrc will require a
streaming thread for pushing data into the depayloader. It will
post a STREAM_STATUS message indicating its requirement for a
post a `STREAM_STATUS` message indicating its requirement for a
streaming thread.
- The application will usually react to the STREAM_STATUS
- The application will usually react to the `STREAM_STATUS`
messages with a sync bus handler.
- The application can configure the GstTask with a custom
GstTaskPool to manage the streaming thread or it can ignore the
message which will make the element use its default GstTaskPool.
- The application can configure the `GstTask` with a custom
`GstTaskPool` to manage the streaming thread or it can ignore the
message which will make the element use its default `GstTaskPool`.
- The application can react to the ENTER/LEAVE stream status
- The application can react to the `ENTER/LEAVE` stream status
message to configure the thread right before it is
started/stopped. This can be used to configure the thread
priority.
- Before the GstTask is changed state (start/pause/stop) a
STREAM_STATUS message is posted that can be used by the
- Before the `GstTask` is changed state (start/pause/stop) a
`STREAM_STATUS` message is posted that can be used by the
application to keep track of the running streaming threads.
## Messages
The existing STREAM_STATUS message will be further defined and implemented in
The existing `STREAM_STATUS` message will be further defined and implemented in
(selected) elements. The following fields will be contained in the message:
- **`type`**, GST_TYPE_STREAM_STATUS_TYPE:
- **`type`**, `GST_TYPE_STREAM_STATUS_TYPE`:
- a set of types to control the lifecycle of the thread:
GST_STREAM_STATUS_TYPE_CREATE: a new streaming thread is going
`GST_STREAM_STATUS_TYPE_CREATE`: a new streaming thread is going
to be created. The application has the chance to configure a custom
thread. GST_STREAM_STATUS_TYPE_ENTER: the streaming thread is
thread. `GST_STREAM_STATUS_TYPE_ENTER`: the streaming thread is
about to enter its loop function for the first time.
GST_STREAM_STATUS_TYPE_LEAVE: the streaming thread is about to
leave its loop. GST_STREAM_STATUS_TYPE_DESTROY: a streaming
`GST_STREAM_STATUS_TYPE_LEAVE`: the streaming thread is about to
leave its loop. `GST_STREAM_STATUS_TYPE_DESTROY`: a streaming
thread is destroyed
- A set of types to control the state of the threads:
GST_STREAM_STATUS_TYPE_START: a streaming thread is started
GST_STREAM_STATUS_TYPE_PAUSE: a streaming thread is paused
GST_STREAM_STATUS_TYPE_STOP: a streaming thread is stopped
`GST_STREAM_STATUS_TYPE_START`: a streaming thread is started
`GST_STREAM_STATUS_TYPE_PAUSE`: a streaming thread is paused
`GST_STREAM_STATUS_TYPE_STOP`: a streaming thread is stopped
- **`owner`**: GST_TYPE_ELEMENT: The owner element of the thread. The
- **`owner`**: `GST_TYPE_ELEMENT`: The owner element of the thread. The
message source will contain the pad (or one of the pads) that will
produce data by this thread. If this thread does not produce data on
a pad, the message source will contain the owner as well. The idea
@ -90,15 +92,15 @@ The existing STREAM_STATUS message will be further defined and implemented in
what function this thread has in the context of the application and
configure the thread appropriatly.
- **`object`**: G_TYPE, GstTask/GThread: A GstTask/GThread controlling
- **`object`**: `G_TYPE`, `GstTask/GThread`: A `GstTask/GThread` controlling
this streaming thread.
- **`flow-return`**: GstFlowReturn: A status code for why the thread state
- **`flow-return`**: `GstFlowReturn`: A status code for why the thread state
changed. when threads are created and started, this is usually
GST_FLOW_OK but when they are stopping it contains the reason code
`GST_FLOW_OK` but when they are stopping it contains the reason code
why it stopped.
- **`reason`**: G_TYPE_STRING: A string describing the reason why the
- **`reason`**: `G_TYPE_STRING`: A string describing the reason why the
thread started/stopped/paused. Can be NULL if no reason is given.
## Events