* [PATCH] media: vicodec: selection api should not care about signal/multiplanar
@ 2019-02-19 9:43 Dafna Hirschfeld
2019-02-19 9:51 ` Hans Verkuil
0 siblings, 1 reply; 2+ messages in thread
From: Dafna Hirschfeld @ 2019-02-19 9:43 UTC (permalink / raw)
To: linux-media; +Cc: hverkuil, helen.koike, Dafna Hirschfeld
Change the selection api to always accept both signal and
multiplanar buffer types.
Signed-off-by: Dafna Hirschfeld <dafna3@gmail.com>
---
drivers/media/platform/vicodec/vicodec-core.c | 25 +++++++------------
1 file changed, 9 insertions(+), 16 deletions(-)
diff --git a/drivers/media/platform/vicodec/vicodec-core.c b/drivers/media/platform/vicodec/vicodec-core.c
index d7636fe9e174..12692aa101fe 100644
--- a/drivers/media/platform/vicodec/vicodec-core.c
+++ b/drivers/media/platform/vicodec/vicodec-core.c
@@ -945,16 +945,12 @@ static int vidioc_g_selection(struct file *file, void *priv,
{
struct vicodec_ctx *ctx = file2ctx(file);
struct vicodec_q_data *q_data;
- enum v4l2_buf_type valid_cap_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- enum v4l2_buf_type valid_out_type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
+ v4l2_buf_type sec_type = s->type;
- if (multiplanar) {
- valid_cap_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
- valid_out_type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
- }
-
- if (s->type != valid_cap_type && s->type != valid_out_type)
- return -EINVAL;
+ if (sec_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
+ sec_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ if (sec_type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
+ sec_type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
q_data = get_q_data(ctx, s->type);
if (!q_data)
@@ -963,8 +959,8 @@ static int vidioc_g_selection(struct file *file, void *priv,
* encoder supports only cropping on the OUTPUT buffer
* decoder supports only composing on the CAPTURE buffer
*/
- if ((ctx->is_enc && s->type == valid_out_type) ||
- (!ctx->is_enc && s->type == valid_cap_type)) {
+ if ((ctx->is_enc && sec_type == V4L2_BUF_TYPE_VIDEO_OUTPUT) ||
+ (!ctx->is_enc && sec_type == V4L2_BUF_TYPE_VIDEO_CAPTURE)) {
switch (s->target) {
case V4L2_SEL_TGT_COMPOSE:
case V4L2_SEL_TGT_CROP:
@@ -992,12 +988,9 @@ static int vidioc_s_selection(struct file *file, void *priv,
{
struct vicodec_ctx *ctx = file2ctx(file);
struct vicodec_q_data *q_data;
- enum v4l2_buf_type out_type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-
- if (multiplanar)
- out_type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
- if (s->type != out_type)
+ if (s->type != V4L2_BUF_TYPE_VIDEO_OUTPUT &&
+ s->type != V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
return -EINVAL;
q_data = get_q_data(ctx, s->type);
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] media: vicodec: selection api should not care about signal/multiplanar
2019-02-19 9:43 [PATCH] media: vicodec: selection api should not care about signal/multiplanar Dafna Hirschfeld
@ 2019-02-19 9:51 ` Hans Verkuil
0 siblings, 0 replies; 2+ messages in thread
From: Hans Verkuil @ 2019-02-19 9:51 UTC (permalink / raw)
To: Dafna Hirschfeld, linux-media; +Cc: helen.koike
On 2/19/19 10:43 AM, Dafna Hirschfeld wrote:
> Change the selection api to always accept both signal and
> multiplanar buffer types.
>
> Signed-off-by: Dafna Hirschfeld <dafna3@gmail.com>
> ---
> drivers/media/platform/vicodec/vicodec-core.c | 25 +++++++------------
> 1 file changed, 9 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/media/platform/vicodec/vicodec-core.c b/drivers/media/platform/vicodec/vicodec-core.c
> index d7636fe9e174..12692aa101fe 100644
> --- a/drivers/media/platform/vicodec/vicodec-core.c
> +++ b/drivers/media/platform/vicodec/vicodec-core.c
> @@ -945,16 +945,12 @@ static int vidioc_g_selection(struct file *file, void *priv,
> {
> struct vicodec_ctx *ctx = file2ctx(file);
> struct vicodec_q_data *q_data;
> - enum v4l2_buf_type valid_cap_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
> - enum v4l2_buf_type valid_out_type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
> + v4l2_buf_type sec_type = s->type;
>
> - if (multiplanar) {
> - valid_cap_type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
> - valid_out_type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
> - }
> -
> - if (s->type != valid_cap_type && s->type != valid_out_type)
> - return -EINVAL;
> + if (sec_type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
> + sec_type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
> + if (sec_type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
> + sec_type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
I don't think you'll ever get an _MPLANE type. See v4l_g_selection
in drivers/media/v4l2-core/v4l2-ioctl.c.
So these four lines can be removed.
>
> q_data = get_q_data(ctx, s->type);
> if (!q_data)
> @@ -963,8 +959,8 @@ static int vidioc_g_selection(struct file *file, void *priv,
> * encoder supports only cropping on the OUTPUT buffer
> * decoder supports only composing on the CAPTURE buffer
> */
> - if ((ctx->is_enc && s->type == valid_out_type) ||
> - (!ctx->is_enc && s->type == valid_cap_type)) {
> + if ((ctx->is_enc && sec_type == V4L2_BUF_TYPE_VIDEO_OUTPUT) ||
> + (!ctx->is_enc && sec_type == V4L2_BUF_TYPE_VIDEO_CAPTURE)) {
> switch (s->target) {
> case V4L2_SEL_TGT_COMPOSE:
> case V4L2_SEL_TGT_CROP:
> @@ -992,12 +988,9 @@ static int vidioc_s_selection(struct file *file, void *priv,
> {
> struct vicodec_ctx *ctx = file2ctx(file);
> struct vicodec_q_data *q_data;
> - enum v4l2_buf_type out_type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
> -
> - if (multiplanar)
> - out_type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
>
> - if (s->type != out_type)
> + if (s->type != V4L2_BUF_TYPE_VIDEO_OUTPUT &&
> + s->type != V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
Same here, MPLANE is never used.
> return -EINVAL;
>
> q_data = get_q_data(ctx, s->type);
>
Regards,
Hans
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-02-19 9:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-19 9:43 [PATCH] media: vicodec: selection api should not care about signal/multiplanar Dafna Hirschfeld
2019-02-19 9:51 ` Hans Verkuil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).