[PATCH 00/28] media: coda: fixes and improvements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

this series contains a few fixes for MPEG-2 sequence number counting,
decoder/encoder stop command race conditions and some more work to
further move towards V4L2 stateful decoder API compliance:

Sequence initialization, which lets the firmware parse the bitstream
headers, is reworked to run before the capture queue is streaming,
with some padding acrobatics to work around issues when only headers
or very small buffers are queued initially. A SOURCE_CHANGE event
is issued after sequence initialization completes.

The sequence counting mechanism used to determine the last processed
buffer is replaced with a last buffer flag that is set on the last
queued output buffer and carried over to the corresponding bitstream
metadata, to the decoded internal tiled frame, and finally to the
returned linear capture buffer.

Dynamic parameter change support is added for encoder rate control
or quantization parameters, slice mode, and cyclic intra refresh
interval.

Inbetween there are a few code cleanup patches that introduce, change,
or make use of helper functions, and improve driver structures.

regards
Philipp

Marco Felsch (2):
  media: coda: fix last buffer handling in V4L2_ENC_CMD_STOP
  media: coda: fix V4L2_DEC_CMD_STOP when all buffers are already
    consumed

Michael Tretter (1):
  media: coda: implement CMD_START to restart decoding

Philipp Zabel (25):
  media: coda: use mem2mem try_en/decoder_cmd helpers
  media: coda: fix mpeg2 sequence number handling
  media: coda: add coda_wake_up_capture_queue
  media: coda: split decoder sequence initialization out of start
    decoding
  media: coda: add sequence initialization work
  media: coda: implement decoder source change event
  media: coda: integrate internal frame metadata into a structure
  media: coda: make coda_bitstream_queue more versatile
  media: coda: pad first buffer with repeated MPEG headers to fix
    sequence init
  media: coda: do not enforce 512-byte initial bitstream payload on
    CODA960
  media: coda: flush bitstream ring buffer on decoder restart
  media: coda: increment sequence offset for the last returned frame
  media: coda: allow flagging last output buffer internally
  media: coda: mark the last output buffer on decoder stop command
  media: coda: only set the stream end flags if there are no more
    pending output buffers
  media: coda: mark the last output buffer on encoder stop command
  media: coda: retire coda_buf_is_end_of_stream
  media: coda: only wake up capture queue if no pending buffers to
    encode
  media: coda: flag the last encoded buffer
  media: coda: lock capture queue wakeup against encoder stop command
  media: coda: mark last pending buffer or last meta on decoder stop
    command
  media: coda: mark last returned frame
  media: coda: store device pointer in driver structure instead of pdev
  media: coda: add coda_slice_mode() function
  media: coda: encoder parameter change support

 drivers/media/platform/coda/coda-bit.c    | 403 +++++++++++++++++-----
 drivers/media/platform/coda/coda-common.c | 244 ++++++++++---
 drivers/media/platform/coda/coda-mpeg2.c  |  43 +++
 drivers/media/platform/coda/coda-mpeg4.c  |  38 ++
 drivers/media/platform/coda/coda.h        |  33 +-
 drivers/media/platform/coda/coda_regs.h   |  18 +
 6 files changed, 637 insertions(+), 142 deletions(-)

-- 
2.20.1




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux