[PATCH 00/18] coda988 video codec support

Sergey Khimich posted 18 patches 9 months, 1 week ago
.../devicetree/bindings/media/coda.yaml       |    2 +-
.../platform/chips-media/coda/coda-bit.c      | 1114 ++++++++++++++---
.../platform/chips-media/coda/coda-common.c   |  430 ++++++-
.../platform/chips-media/coda/coda-gdi.c      |  149 +++
.../platform/chips-media/coda/coda-h264.c     |   10 +
.../media/platform/chips-media/coda/coda.h    |   41 +-
.../platform/chips-media/coda/coda_regs.h     |  157 +++
.../media/platform/chips-media/coda/trace.h   |   16 +
8 files changed, 1703 insertions(+), 216 deletions(-)
[PATCH 00/18] coda988 video codec support
Posted by Sergey Khimich 9 months, 1 week ago
Hello!

This is the implementation of the Chips&Media "CODA988" video codec support
within v4l2 driver for coda. Support for the following codecs
was implemented:
 * h264:   decoder & encoder
 * h263:   decoder & encoder
 * mpeg4:  decoder & encoder
 * vp8dec: decoder

Support for the following formates was implemented:
 * yuv420p(I420)
 * yvu420p(YV12)
 * NV12
 * NV21

Also the following features and fixes were implemented for coda988:
 * special config for mem_ctrl
 * special config for encoder header (sps and pps)
 * special set profile_idc
 * special set RC config
 * special set QP
 * special set slice mode
 * special set Motion Extimation (ME)
 * v4l2_ctrl for h264 profile 
 * v4l2_ctrl for h264 level
 * v4l2_ctrl for h.264 RC mode
 * v4l2_ctrl for h.264 skipFrame
 * v4l2_ctrl for h.264 i-frame min/max qp
 * v4l2_ctrl for h.264 p-frame min/max qp
 * v4l2_ctrl for h.264 entropy mode
 * v4l2_ctrl for h.264 8x8transform
 * v4l2_ctrl for h.264 i-frame period
 * v4l2_ctrl for h.264 Access Unit Delimiter(AUD)
 * v4l2_ctrl for h.264 me x/y search range
 * v4l2_ctrl for h.264 intra refresh period
 * v4l2_ctrl for h.263 intra/inter qp
 * v4l2_ctrl for h.263 min/max qp
 * v4l2_ctrl for mpeg4 min/max qp

During adding support for "CODA988" we also did some extra work
related to refactoring and improvement of generic part of C&M coda
driver:
 * Improve error checking for probe, irq-handle and etc.
 * Update work with resets
 * Replace hard_irq by threaded_irq
 * Remove double setting of stop flag
 * Improve some prints
 * Fix loglevel to avoid performance failure
 * Fix support of MPEG4 levels
 * Fix setting gamma for h264enc
 * Update default velues of QP for mpeg4 I/P
 * Other minor fixes

Sergey Khimich (18):
  media: coda: Add print if irq isn't present
  media: coda: Use get_array to work use multiple reset
  dt-bindings: media: coda: Fix resets count
  media: coda: Add check result after reset
  media: coda: using threaded_irq for 0 (bit) interrupt
  media: coda: Add reset device before getting interrupt
  media: coda: Add fake IRQ check
  media: coda: Add log to finish_encode if buffer is too small
  media: coda: Fix max h.264 level for CODA_DX6
  media: coda: Remove double setting of stop flag
  media: coda: Print size of encoded buff in other place
  media: coda: Fix loglevel for seq mismatch print
  media: coda: Fix support for all mpeg4 levels
  media: coda: Fix handling wrong format in coda_try_fmt
  media: coda: Use v4l2_ctrl to set gamma for h264enc
  media: coda: Update default velues of QP for mpeg4 I/P
  media: coda: Use preferred usleep_range than udelay
  media: coda: add support coda988 enc and dec

 .../devicetree/bindings/media/coda.yaml       |    2 +-
 .../platform/chips-media/coda/coda-bit.c      | 1114 ++++++++++++++---
 .../platform/chips-media/coda/coda-common.c   |  430 ++++++-
 .../platform/chips-media/coda/coda-gdi.c      |  149 +++
 .../platform/chips-media/coda/coda-h264.c     |   10 +
 .../media/platform/chips-media/coda/coda.h    |   41 +-
 .../platform/chips-media/coda/coda_regs.h     |  157 +++
 .../media/platform/chips-media/coda/trace.h   |   16 +
 8 files changed, 1703 insertions(+), 216 deletions(-)

-- 
2.30.2
Re: [PATCH 00/18] coda988 video codec support
Posted by Nicolas Dufresne 8 months, 1 week ago
Hi Philipp,

any plans to review this series ?

Nicolas

Le vendredi 14 mars 2025 à 18:29 +0300, Sergey Khimich a écrit :
> Hello!
> 
> This is the implementation of the Chips&Media "CODA988" video codec
> support
> within v4l2 driver for coda. Support for the following codecs
> was implemented:
>  * h264:   decoder & encoder
>  * h263:   decoder & encoder
>  * mpeg4:  decoder & encoder
>  * vp8dec: decoder
> 
> Support for the following formates was implemented:
>  * yuv420p(I420)
>  * yvu420p(YV12)
>  * NV12
>  * NV21
> 
> Also the following features and fixes were implemented for coda988:
>  * special config for mem_ctrl
>  * special config for encoder header (sps and pps)
>  * special set profile_idc
>  * special set RC config
>  * special set QP
>  * special set slice mode
>  * special set Motion Extimation (ME)
>  * v4l2_ctrl for h264 profile 
>  * v4l2_ctrl for h264 level
>  * v4l2_ctrl for h.264 RC mode
>  * v4l2_ctrl for h.264 skipFrame
>  * v4l2_ctrl for h.264 i-frame min/max qp
>  * v4l2_ctrl for h.264 p-frame min/max qp
>  * v4l2_ctrl for h.264 entropy mode
>  * v4l2_ctrl for h.264 8x8transform
>  * v4l2_ctrl for h.264 i-frame period
>  * v4l2_ctrl for h.264 Access Unit Delimiter(AUD)
>  * v4l2_ctrl for h.264 me x/y search range
>  * v4l2_ctrl for h.264 intra refresh period
>  * v4l2_ctrl for h.263 intra/inter qp
>  * v4l2_ctrl for h.263 min/max qp
>  * v4l2_ctrl for mpeg4 min/max qp
> 
> During adding support for "CODA988" we also did some extra work
> related to refactoring and improvement of generic part of C&M coda
> driver:
>  * Improve error checking for probe, irq-handle and etc.
>  * Update work with resets
>  * Replace hard_irq by threaded_irq
>  * Remove double setting of stop flag
>  * Improve some prints
>  * Fix loglevel to avoid performance failure
>  * Fix support of MPEG4 levels
>  * Fix setting gamma for h264enc
>  * Update default velues of QP for mpeg4 I/P
>  * Other minor fixes
> 
> Sergey Khimich (18):
>   media: coda: Add print if irq isn't present
>   media: coda: Use get_array to work use multiple reset
>   dt-bindings: media: coda: Fix resets count
>   media: coda: Add check result after reset
>   media: coda: using threaded_irq for 0 (bit) interrupt
>   media: coda: Add reset device before getting interrupt
>   media: coda: Add fake IRQ check
>   media: coda: Add log to finish_encode if buffer is too small
>   media: coda: Fix max h.264 level for CODA_DX6
>   media: coda: Remove double setting of stop flag
>   media: coda: Print size of encoded buff in other place
>   media: coda: Fix loglevel for seq mismatch print
>   media: coda: Fix support for all mpeg4 levels
>   media: coda: Fix handling wrong format in coda_try_fmt
>   media: coda: Use v4l2_ctrl to set gamma for h264enc
>   media: coda: Update default velues of QP for mpeg4 I/P
>   media: coda: Use preferred usleep_range than udelay
>   media: coda: add support coda988 enc and dec
> 
>  .../devicetree/bindings/media/coda.yaml       |    2 +-
>  .../platform/chips-media/coda/coda-bit.c      | 1114 ++++++++++++++-
> --
>  .../platform/chips-media/coda/coda-common.c   |  430 ++++++-
>  .../platform/chips-media/coda/coda-gdi.c      |  149 +++
>  .../platform/chips-media/coda/coda-h264.c     |   10 +
>  .../media/platform/chips-media/coda/coda.h    |   41 +-
>  .../platform/chips-media/coda/coda_regs.h     |  157 +++
>  .../media/platform/chips-media/coda/trace.h   |   16 +
>  8 files changed, 1703 insertions(+), 216 deletions(-)