linux/drivers/media
Neil Armstrong 2b48e11386 media: v4l2-mem2mem: handle draining, stopped and next-buf-is-last states
Since the draining and stop phase of the HW decoder mem2mem bahaviour is
now clearly defined, we can move handling of the following states to the
common v4l2-mem2mem core code:
- draining
- stopped
- next-buf-is-last

By introducing the following v4l2-mem2mem APIs:
- v4l2_m2m_encoder_cmd/v4l2_m2m_ioctl_encoder_cmd to handle start/stop command
- v4l2_m2m_decoder_cmd/v4l2_m2m_ioctl_decoder_cmd to handle start/stop command
- v4l2_m2m_update_start_streaming_state to update state on start of streaming
of the de/encoder queue
- v4l2_m2m_update_stop_streaming_state to update state on stop of streaming
of the de/encoder queue
- v4l2_m2m_last_buffer_done to make the current dest buffer as the last one

And inline helpers:
- v4l2_m2m_mark_stopped to mark the de/encoding process as stopped
- v4l2_m2m_clear_state to clear the de/encoding state
- v4l2_m2m_dst_buf_is_last to detect the current dequeued dst_buf is the last
- v4l2_m2m_has_stopped to detect the de/encoding stopped state
- v4l2_m2m_is_last_draining_src_buf to detect the current source buffer should
 be the last processing before stopping the de/encoding process

The special next-buf-is-last when min_buffers != 1 case is also handled
in v4l2_m2m_qbuf() by reusing the other introduced APIs.

This state management has been stolen from the vicodec implementation,
and is no-op for drivers not calling the v4l2_m2m_encoder_cmd or
v4l2_m2m_decoder_cmd and v4l2_m2m_update_start/stop_streaming_state.

The vicodec will be the first one to be converted as an example.

Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
2020-03-05 22:54:49 +01:00
..
cec media: cec: remove unused functions 2020-01-08 14:38:06 +01:00
common media: videobuf2-dma-contig.c: remove spurious 'b' in message 2020-03-02 15:23:39 +01:00
dvb-core media: dvb-core: dvbdev: convert to use i2c_new_client_device() 2020-01-09 15:57:46 +01:00
dvb-frontends media: drxj: remove redundant assignments to variable rc 2020-02-24 16:26:14 +01:00
firewire media: firewire: Make structure fdtv_ca constant 2019-08-21 18:39:55 -03:00
i2c media: smiapp: Move definitions under driver directory 2020-02-27 17:49:04 -03:00
mc media: mc-entity.c: use WARN_ON, validate link pads 2020-02-24 17:21:58 +01:00
mmc treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
pci media: media/pci: rename VFL_TYPE_GRABBER to _VIDEO 2020-02-24 16:53:50 +01:00
platform media: ti-vpe: cal: fix disable_irqs to only the intended target 2020-03-05 22:47:30 +01:00
radio media: Fix Kconfig indentation 2020-02-24 15:19:38 +01:00
rc media: rc: iguanair: Replace zero-length array with flexible-array member 2020-03-02 10:47:07 +01:00
spi media: spi: gs1662: Use new structure for SPI transfer delays 2020-03-05 22:46:25 +01:00
tuners media: tuners: Use the correct style for SPDX License Identifier 2019-10-24 18:57:55 -03:00
usb media: go7007: Fix URB type for interrupt handling 2020-03-02 15:21:00 +01:00
v4l2-core media: v4l2-mem2mem: handle draining, stopped and next-buf-is-last states 2020-03-05 22:54:49 +01:00
Kconfig media: Fix Kconfig indentation 2020-02-24 15:19:38 +01:00
Makefile media: move drivers/media/media-* to drivers/media/mc/mc-* 2019-05-28 12:15:46 -04:00