mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 21:16:24 +00:00
design: stream-status: section breakdown, markup and readability fixes
This commit is contained in:
parent
54a1f8e328
commit
8cc223c9bc
1 changed files with 32 additions and 30 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue