MA-23268-2: media: docs: dev-decoder: Trigger dynamic source change for colorspace

If colorspace changes, the client needs to renegotiate the pipeline,
otherwise the decoded frame may not be displayed correctly.

When a colorspace change in the stream, the decoder sends a
V4L2_EVENT_SOURCE_CHANGE event with changes set to
V4L2_EVENT_SRC_CH_COLORSPACE. After client receive this source change
event, then client can switch to the correct stream setting. And each
frame can be displayed properly.

So add colorspace as a trigger parameter for dynamic resolution change.

Signed-off-by: Ming Qian <ming.qian@oss.nxp.com>
Reviewed-by: Zhou Peng <eagle.zhou@nxp.com>
Acked-by: Jason Liu <jason.hui.liu@nxp.com>
This commit is contained in:
Ming Qian 2025-01-07 14:23:51 +09:00 committed by Jason Liu
parent 7b2fbfc9f4
commit 36922ae53f

View File

@ -784,8 +784,8 @@ before the sequence started. Last of the buffers will have the
must check if there is any pending event and:
* if a ``V4L2_EVENT_SOURCE_CHANGE`` event with ``changes`` set to
``V4L2_EVENT_SRC_CH_RESOLUTION`` is pending, the `Dynamic Resolution
Change` sequence needs to be followed,
``V4L2_EVENT_SRC_CH_RESOLUTION`` or ``V4L2_EVENT_SRC_CH_COLORSPACE`` is pending,
the `Dynamic Resolution Change` sequence needs to be followed,
* if a ``V4L2_EVENT_EOS`` event is pending, the `End of Stream` sequence needs
to be followed.
@ -932,13 +932,17 @@ reflected by corresponding queries):
* the minimum number of buffers needed for decoding,
* bit-depth of the bitstream has been changed.
* bit-depth of the bitstream has been changed,
* colorspace of the bitstream has been changed.
Whenever that happens, the decoder must proceed as follows:
1. After encountering a resolution change in the stream, the decoder sends a
``V4L2_EVENT_SOURCE_CHANGE`` event with ``changes`` set to
``V4L2_EVENT_SRC_CH_RESOLUTION``.
``V4L2_EVENT_SRC_CH_RESOLUTION``, or a colorspace change in the stream, the
decoder sends a ``V4L2_EVENT_SOURCE_CHANGE`` event with ``changes`` set to
``V4L2_EVENT_SRC_CH_COLORSPACE``.
.. important::
@ -946,6 +950,11 @@ Whenever that happens, the decoder must proceed as follows:
values applying to the stream after the resolution change, including
queue formats, selection rectangles and controls.
.. note::
A ``V4L2_EVENT_SOURCE_CHANGE`` event with ``changes`` set to
``V4L2_EVENT_SRC_CH_RESOLUTION`` will affect the allocation, but
``V4L2_EVENT_SRC_CH_COLORSPACE`` won't.
2. The decoder will then process and decode all remaining buffers from before
the resolution change point.