From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com>,
hverkuil@xs4all.nl, horms@verge.net.au, magnus.damm@gmail.com
Cc: laurent.pinchart@ideasonboard.com, linux-media@vger.kernel.org,
linux-sh@vger.kernel.org
Subject: Re: [PATCH v3 1/1] V4L2: platform: Renesas R-Car JPEG codec driver
Date: Wed, 29 Apr 2015 21:59:11 +0000 [thread overview]
Message-ID: <5541542F.7010505@cogentembedded.com> (raw)
In-Reply-To: <1430344409-11928-1-git-send-email-mikhail.ulyanov@cogentembedded.com>
On 04/30/2015 12:53 AM, Mikhail Ulyanov wrote:
> Here's the the driver for the Renesas R-Car JPEG processing unit driver.
One "the" is enough. And one "driver" too, you probbaly forgot to remove
the word at the end.
> The driver is implemented within the V4L2 framework as a mem-to-mem device. It
Perhaps "memory-to-memory"?
> presents two video nodes to userspace, one for the encoding part, and one for
> the decoding part.
> It was found that the only working mode for encoding is no markers output, so we
> generate it with software. In current version of driver we also use software
> JPEG header parsing because with hardware parsing performance is lower then
> desired.
> From a userspace point of view the encoding process is typical (S_FMT, REQBUF,
> optionally QUERYBUF, QBUF, STREAMON, DQBUF) for both the source and destination
> queues. The decoding process requires that the source queue performs S_FMT,
> REQBUF, (QUERYBUF), QBUF and STREAMON. After STREAMON on the source queue, it is
> possible to perform G_FMT on the destination queue to find out the processed
> image width and height in order to be able to allocate an appropriate buffer -
> it is assumed that the user does not pass the compressed image width and height
> but instead this information is parsed from the JPEG input. This is done in
> kernel. Then REQBUF, QBUF and STREAMON on the destination queue complete the
> decoding and it is possible to DQBUF from both queues and finish the operation.
> During encoding the available formats are: V4L2_PIX_FMT_NV12M and
> V4L2_PIX_FMT_NV16M for source and V4L2_PIX_FMT_JPEG for destination.
> During decoding the available formats are: V4L2_PIX_FMT_JPEG for source and
> V4L2_PIX_FMT_NV12M and V4L2_PIX_FMT_NV16M for destination.
> Performance of current version:
> 1280x800 NV12 image encoding/decoding
> decoding ~121 FPS
> encoding ~190 FPS
> Signed-off-by: Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com>
> ---
> Changes since v2:
> - Kconfig entry reordered
> - unnecessary clk_disable_unprepare(jpu->clk) removed
> - ref_count fixed in jpu_resume
> - enable DMABUF in src_vq->io_modes
> - remove jpu_s_priority jpu_g_priority
> - jpu_g_selection fixed
> - timeout in jpu_reset added and hardware reset reworked
> - remove unused macros
> - JPEG header parsing now is software because of performance issues
> based on s5p-jpu code
> - JPEG header generation redesigned:
> JPEG header(s) pre-generated and memcpy'ed on encoding
> we only fill the necessary fields
> more "transparent" header format description
> - S_FMT, G_FMT and TRY_FMT hooks redesigned
Still need a comma before "and" -- the English punctuation rules are
different from the Russian ones.
> partially inspired by VSP1 driver code
> - some code was reformatted
> - image formats handling redesigned
> - multi-planar V4L2 API now in use
> - now passes v4l2-compliance tool check
> Cnanges since v1:
> - s/g_fmt function simplified
> - default format for queues added
> - dumb vidioc functions added to be in compliance with standard api:
> jpu_s_priority, jpu_g_priority
> - standard v4l2_ctrl_subscribe_event and v4l2_event_unsubscribe
> now in use by the same reason
[...]
WBR, Sergei
WARNING: multiple messages have this Message-ID (diff)
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
To: Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com>,
hverkuil@xs4all.nl, horms@verge.net.au, magnus.damm@gmail.com
Cc: laurent.pinchart@ideasonboard.com, linux-media@vger.kernel.org,
linux-sh@vger.kernel.org
Subject: Re: [PATCH v3 1/1] V4L2: platform: Renesas R-Car JPEG codec driver
Date: Thu, 30 Apr 2015 00:59:11 +0300 [thread overview]
Message-ID: <5541542F.7010505@cogentembedded.com> (raw)
In-Reply-To: <1430344409-11928-1-git-send-email-mikhail.ulyanov@cogentembedded.com>
On 04/30/2015 12:53 AM, Mikhail Ulyanov wrote:
> Here's the the driver for the Renesas R-Car JPEG processing unit driver.
One "the" is enough. And one "driver" too, you probbaly forgot to remove
the word at the end.
> The driver is implemented within the V4L2 framework as a mem-to-mem device. It
Perhaps "memory-to-memory"?
> presents two video nodes to userspace, one for the encoding part, and one for
> the decoding part.
> It was found that the only working mode for encoding is no markers output, so we
> generate it with software. In current version of driver we also use software
> JPEG header parsing because with hardware parsing performance is lower then
> desired.
> From a userspace point of view the encoding process is typical (S_FMT, REQBUF,
> optionally QUERYBUF, QBUF, STREAMON, DQBUF) for both the source and destination
> queues. The decoding process requires that the source queue performs S_FMT,
> REQBUF, (QUERYBUF), QBUF and STREAMON. After STREAMON on the source queue, it is
> possible to perform G_FMT on the destination queue to find out the processed
> image width and height in order to be able to allocate an appropriate buffer -
> it is assumed that the user does not pass the compressed image width and height
> but instead this information is parsed from the JPEG input. This is done in
> kernel. Then REQBUF, QBUF and STREAMON on the destination queue complete the
> decoding and it is possible to DQBUF from both queues and finish the operation.
> During encoding the available formats are: V4L2_PIX_FMT_NV12M and
> V4L2_PIX_FMT_NV16M for source and V4L2_PIX_FMT_JPEG for destination.
> During decoding the available formats are: V4L2_PIX_FMT_JPEG for source and
> V4L2_PIX_FMT_NV12M and V4L2_PIX_FMT_NV16M for destination.
> Performance of current version:
> 1280x800 NV12 image encoding/decoding
> decoding ~121 FPS
> encoding ~190 FPS
> Signed-off-by: Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com>
> ---
> Changes since v2:
> - Kconfig entry reordered
> - unnecessary clk_disable_unprepare(jpu->clk) removed
> - ref_count fixed in jpu_resume
> - enable DMABUF in src_vq->io_modes
> - remove jpu_s_priority jpu_g_priority
> - jpu_g_selection fixed
> - timeout in jpu_reset added and hardware reset reworked
> - remove unused macros
> - JPEG header parsing now is software because of performance issues
> based on s5p-jpu code
> - JPEG header generation redesigned:
> JPEG header(s) pre-generated and memcpy'ed on encoding
> we only fill the necessary fields
> more "transparent" header format description
> - S_FMT, G_FMT and TRY_FMT hooks redesigned
Still need a comma before "and" -- the English punctuation rules are
different from the Russian ones.
> partially inspired by VSP1 driver code
> - some code was reformatted
> - image formats handling redesigned
> - multi-planar V4L2 API now in use
> - now passes v4l2-compliance tool check
> Cnanges since v1:
> - s/g_fmt function simplified
> - default format for queues added
> - dumb vidioc functions added to be in compliance with standard api:
> jpu_s_priority, jpu_g_priority
> - standard v4l2_ctrl_subscribe_event and v4l2_event_unsubscribe
> now in use by the same reason
[...]
WBR, Sergei
next prev parent reply other threads:[~2015-04-29 21:59 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-29 21:53 [PATCH v3 1/1] V4L2: platform: Renesas R-Car JPEG codec driver Mikhail Ulyanov
2015-04-29 21:53 ` Mikhail Ulyanov
2015-04-29 21:59 ` Sergei Shtylyov [this message]
2015-04-29 21:59 ` Sergei Shtylyov
2015-04-29 22:08 ` Sergei Shtylyov
2015-04-29 22:08 ` Sergei Shtylyov
2015-05-03 10:21 ` Hans Verkuil
2015-05-03 10:21 ` Hans Verkuil
2015-05-03 23:32 ` Laurent Pinchart
2015-05-03 23:32 ` Laurent Pinchart
2015-05-05 22:03 ` Mikhail Ulianov
2015-05-05 22:03 ` Mikhail Ulianov
2015-06-18 19:48 ` Laurent Pinchart
2015-06-18 19:48 ` Laurent Pinchart
2015-06-22 14:54 ` Kamil Debski
2015-06-22 14:54 ` Kamil Debski
2015-06-26 11:34 ` Mikhail Ulyanov
2015-06-26 11:34 ` Mikhail Ulyanov
2015-06-26 12:14 ` Kamil Debski
2015-06-26 12:14 ` Kamil Debski
2015-06-26 12:23 ` Mikhail Ulyanov
2015-06-26 12:23 ` Mikhail Ulyanov
2015-05-06 5:46 ` Mikhail Ulianov
2015-05-06 5:46 ` Mikhail Ulianov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5541542F.7010505@cogentembedded.com \
--to=sergei.shtylyov@cogentembedded.com \
--cc=horms@verge.net.au \
--cc=hverkuil@xs4all.nl \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mikhail.ulyanov@cogentembedded.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.