All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-media@vger.kernel.org, kernel@pengutronix.de
Subject: Re: [PATCH 08/13] media: coda: add decoder MPEG-4 profile and level controls
Date: Tue, 21 May 2019 08:29:40 -0300	[thread overview]
Message-ID: <20190521082940.774cb91e@coco.lan> (raw)
In-Reply-To: <20190412155135.13907-8-p.zabel@pengutronix.de>

Em Fri, 12 Apr 2019 17:51:30 +0200
Philipp Zabel <p.zabel@pengutronix.de> escreveu:

> The MPEG-4 decoder firmware reports profile and level indication values
> that can be used to update V4L2 MPEG-4 profile and level controls.
> 
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>

This one causes a GCC error:

drivers/media/platform/coda/coda-common.c: In function 'coda_decode_ctrls':
drivers/media/platform/coda/coda-common.c:2143:11: error: 'struct coda_ctx' has no member named 'mpeg2_level_ctrl'; did you mean 'mpeg4_level_ctrl'?
 2143 |  if (ctx->mpeg2_level_ctrl)
      |           ^~~~~~~~~~~~~~~~
      |           mpeg4_level_ctrl
drivers/media/platform/coda/coda-common.c:2144:8: error: 'struct coda_ctx' has no member named 'mpeg2_level_ctrl'; did you mean 'mpeg4_level_ctrl'?
 2144 |   ctx->mpeg2_level_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
      |        ^~~~~~~~~~~~~~~~
      |        mpeg4_level_ctrl
make[3]: *** [scripts/Makefile.build:279: drivers/media/platform/coda/coda-common.o] Error 1
make[2]: *** [scripts/Makefile.build:489: drivers/media/platform/coda] Error 2
make[1]: *** [scripts/Makefile.build:489: drivers/media/platform] Error 2
make: *** [Makefile:1596: _module_drivers/media] Error 2
***********
***ERROR***
***********

Please fix.


> ---
>  drivers/media/platform/coda/Makefile      |  2 +-
>  drivers/media/platform/coda/coda-common.c | 23 +++++++++++
>  drivers/media/platform/coda/coda-mpeg4.c  | 48 +++++++++++++++++++++++
>  drivers/media/platform/coda/coda.h        |  5 +++
>  4 files changed, 77 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/media/platform/coda/coda-mpeg4.c
> 
> diff --git a/drivers/media/platform/coda/Makefile b/drivers/media/platform/coda/Makefile
> index 858284328af9..3a068206cea8 100644
> --- a/drivers/media/platform/coda/Makefile
> +++ b/drivers/media/platform/coda/Makefile
> @@ -1,6 +1,6 @@
>  ccflags-y += -I$(src)
>  
> -coda-objs := coda-common.o coda-bit.o coda-gdi.o coda-h264.o coda-jpeg.o
> +coda-objs := coda-common.o coda-bit.o coda-gdi.o coda-h264.o coda-mpeg4.o coda-jpeg.o
>  
>  obj-$(CONFIG_VIDEO_CODA) += coda.o
>  obj-$(CONFIG_VIDEO_IMX_VDOA) += imx-vdoa.o
> diff --git a/drivers/media/platform/coda/coda-common.c b/drivers/media/platform/coda/coda-common.c
> index 667dafc06afb..9d25899a9af6 100644
> --- a/drivers/media/platform/coda/coda-common.c
> +++ b/drivers/media/platform/coda/coda-common.c
> @@ -1580,6 +1580,15 @@ void coda_update_profile_level_ctrls(struct coda_ctx *ctx, u8 profile_idc,
>  		profile = coda_h264_profile(profile_idc);
>  		level = coda_h264_level(level_idc);
>  		break;
> +	case V4L2_PIX_FMT_MPEG4:
> +		codec_name = "MPEG-4";
> +		profile_cid = V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE;
> +		level_cid = V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL;
> +		profile_ctrl = ctx->mpeg4_profile_ctrl;
> +		level_ctrl = ctx->mpeg4_level_ctrl;
> +		profile = coda_mpeg4_profile(profile_idc);
> +		level = coda_mpeg4_level(level_idc);
> +		break;
>  	default:
>  		return;
>  	}
> @@ -2109,6 +2118,20 @@ static void coda_decode_ctrls(struct coda_ctx *ctx)
>  		&coda_ctrl_ops, V4L2_CID_MPEG_VIDEO_H264_LEVEL, max, 0, max);
>  	if (ctx->h264_level_ctrl)
>  		ctx->h264_level_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
> +
> +	ctx->mpeg4_profile_ctrl = v4l2_ctrl_new_std_menu(&ctx->ctrls,
> +		&coda_ctrl_ops, V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE,
> +		V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY, 0,
> +		V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY);
> +	if (ctx->mpeg4_profile_ctrl)
> +		ctx->mpeg4_profile_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
> +
> +	ctx->mpeg4_level_ctrl = v4l2_ctrl_new_std_menu(&ctx->ctrls,
> +		&coda_ctrl_ops, V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL,
> +		V4L2_MPEG_VIDEO_MPEG4_LEVEL_5, 0,
> +		V4L2_MPEG_VIDEO_MPEG4_LEVEL_5);
> +	if (ctx->mpeg2_level_ctrl)
> +		ctx->mpeg2_level_ctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
>  }
>  
>  static int coda_ctrls_setup(struct coda_ctx *ctx)
> diff --git a/drivers/media/platform/coda/coda-mpeg4.c b/drivers/media/platform/coda/coda-mpeg4.c
> new file mode 100644
> index 000000000000..762091ae1956
> --- /dev/null
> +++ b/drivers/media/platform/coda/coda-mpeg4.c
> @@ -0,0 +1,48 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Coda multi-standard codec IP - MPEG-4 helper functions
> + *
> + * Copyright (C) 2019 Pengutronix, Philipp Zabel
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/videodev2.h>
> +#include <coda.h>
> +
> +int coda_mpeg4_profile(int profile_idc)
> +{
> +	switch (profile_idc) {
> +	case 0:
> +		return V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE;
> +	case 15:
> +		return V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE;
> +	case 2:
> +		return V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE;
> +	case 1:
> +		return V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE;
> +	case 11:
> +		return V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY;
> +	default:
> +		return -EINVAL;
> +	}
> +}
> +
> +int coda_mpeg4_level(int level_idc)
> +{
> +	switch (level_idc) {
> +	case 0:
> +		return V4L2_MPEG_VIDEO_MPEG4_LEVEL_0;
> +	case 1:
> +		return V4L2_MPEG_VIDEO_MPEG4_LEVEL_1;
> +	case 2:
> +		return V4L2_MPEG_VIDEO_MPEG4_LEVEL_2;
> +	case 3:
> +		return V4L2_MPEG_VIDEO_MPEG4_LEVEL_3;
> +	case 4:
> +		return V4L2_MPEG_VIDEO_MPEG4_LEVEL_4;
> +	case 5:
> +		return V4L2_MPEG_VIDEO_MPEG4_LEVEL_5;
> +	default:
> +		return -EINVAL;
> +	}
> +}
> diff --git a/drivers/media/platform/coda/coda.h b/drivers/media/platform/coda/coda.h
> index 1c822dfdb3ce..d8c8b3777db8 100644
> --- a/drivers/media/platform/coda/coda.h
> +++ b/drivers/media/platform/coda/coda.h
> @@ -217,6 +217,8 @@ struct coda_ctx {
>  	struct v4l2_ctrl_handler	ctrls;
>  	struct v4l2_ctrl		*h264_profile_ctrl;
>  	struct v4l2_ctrl		*h264_level_ctrl;
> +	struct v4l2_ctrl		*mpeg4_profile_ctrl;
> +	struct v4l2_ctrl		*mpeg4_level_ctrl;
>  	struct v4l2_fh			fh;
>  	int				gopcounter;
>  	int				runcounter;
> @@ -328,6 +330,9 @@ int coda_sps_parse_profile(struct coda_ctx *ctx, struct vb2_buffer *vb);
>  int coda_h264_sps_fixup(struct coda_ctx *ctx, int width, int height, char *buf,
>  			int *size, int max_size);
>  
> +int coda_mpeg4_profile(int profile_idc);
> +int coda_mpeg4_level(int level_idc);
> +
>  void coda_update_profile_level_ctrls(struct coda_ctx *ctx, u8 profile_idc,
>  				     u8 level_idc);
>  



Thanks,
Mauro

  reply	other threads:[~2019-05-21 11:29 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-12 15:51 [PATCH 01/13] media: coda: move register debugging to coda_debug level 3 Philipp Zabel
2019-04-12 15:51 ` [PATCH 02/13] media: coda: move job ready message to coda_debug level 2 Philipp Zabel
2019-04-12 15:51 ` [PATCH 03/13] media: coda: add coda_frame_type_char helper Philipp Zabel
2019-04-12 15:51 ` [PATCH 04/13] media: coda: improve decoder job finished debug message Philipp Zabel
2019-04-12 15:51 ` [PATCH 05/13] media: coda: demote s_ctrl debug messages to level 2 Philipp Zabel
2019-04-12 15:51 ` [PATCH 06/13] media: coda: add menu strings to s_ctrl debug output Philipp Zabel
2019-04-12 15:51 ` [PATCH 07/13] media: coda: update profile and level controls after sequence initialization Philipp Zabel
2019-04-12 15:51 ` [PATCH 08/13] media: coda: add decoder MPEG-4 profile and level controls Philipp Zabel
2019-05-21 11:29   ` Mauro Carvalho Chehab [this message]
2019-05-22  9:09     ` [PATCH v2] " Philipp Zabel
2019-05-27 12:19       ` [PATCH v3] " Philipp Zabel
2019-04-12 15:51 ` [PATCH 09/13] media: v4l2-ctrl: add MPEG-2 " Philipp Zabel
2019-04-24  9:29   ` Hans Verkuil
2019-04-24 10:43   ` [PATCH v2] " Philipp Zabel
2019-04-12 15:51 ` [PATCH 10/13] media: coda: add decoder " Philipp Zabel
2019-05-27 12:20   ` [PATCH v2] " Philipp Zabel
2019-04-12 15:51 ` [PATCH 11/13] media: coda: add lockdep asserts Philipp Zabel
2019-04-12 15:51 ` [PATCH 12/13] media: coda: use v4l2_m2m_buf_copy_metadata Philipp Zabel
2019-04-12 15:51 ` [PATCH 13/13] media: coda: fix unset field and fail on invalid field in buf_prepare Philipp Zabel
2019-04-25 18:55   ` Ezequiel Garcia

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=20190521082940.774cb91e@coco.lan \
    --to=mchehab+samsung@kernel.org \
    --cc=kernel@pengutronix.de \
    --cc=linux-media@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    /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.