RE: [PATCH] [media] s5p-mfc: Add a control for IVF format for VP8 encoder

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

 



Hi Pawel, Hans,

I think we talked some time ago on IRC about this patch.
If I remember correctly, the conclusion was that it would be better to use
a specific pixel formats for this kind of out codec output.

Akin to:
V4L2_PIX_FMT_H264			'H264'	H264 video elementary stream
with start codes.
V4L2_PIX_FMT_H264_NO_SC		'AVC1'	H264 video elementary stream without
start codes.

Could you confirm this?

Best wishes,
-- 
Kamil Debski
Samsung R&D Institute Poland


> -----Original Message-----
> From: Arun Kumar K [mailto:arunkk.samsung@xxxxxxxxx] On Behalf Of Arun
> Kumar K
> Sent: Thursday, March 06, 2014 7:04 AM
> To: linux-media@xxxxxxxxxxxxxxx; linux-samsung-soc@xxxxxxxxxxxxxxx
> Cc: k.debski@xxxxxxxxxxx; s.nawrocki@xxxxxxxxxxx; posciak@xxxxxxxxxxxx;
> arunkk.samsung@xxxxxxxxx
> Subject: [PATCH] [media] s5p-mfc: Add a control for IVF format for VP8
> encoder
> 
> From: Pawel Osciak <posciak@xxxxxxxxxxxx>
> 
> Add a control to enable/disable IVF output stream format for VP8 encode.
> Set the IVF format output to disabled as default.
> 
> Signed-off-by: Pawel Osciak <posciak@xxxxxxxxxxxx>
> Signed-off-by: Arun Kumar K <arun.kk@xxxxxxxxxxx>
> ---
>  Documentation/DocBook/media/v4l/controls.xml    |    8 ++++++++
>  drivers/media/platform/s5p-mfc/s5p_mfc_common.h |    1 +
>  drivers/media/platform/s5p-mfc/s5p_mfc_enc.c    |   11 +++++++++++
>  drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c |    2 ++
>  drivers/media/v4l2-core/v4l2-ctrls.c            |    1 +
>  include/uapi/linux/v4l2-controls.h              |    1 +
>  6 files changed, 24 insertions(+)
> 
> diff --git a/Documentation/DocBook/media/v4l/controls.xml
> b/Documentation/DocBook/media/v4l/controls.xml
> index 0e1770c..07fb64a 100644
> --- a/Documentation/DocBook/media/v4l/controls.xml
> +++ b/Documentation/DocBook/media/v4l/controls.xml
> @@ -3222,6 +3222,14 @@ V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD
> as a golden frame.</entry>  Acceptable values are 0, 1, 2 and 3
> corresponding to encoder profiles 0, 1, 2 and 3.</entry>
>  	      </row>
> 
> +	      <row><entry></entry></row>
> +	      <row>
> +		<entry
> spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_IVF_FORMAT</constant>&n
> bsp;</entry>
> +		<entry>boolean</entry>
> +	      </row>
> +	      <row><entry spanname="descr">Outputs the VP8 encoded stream
> in IVF file format.</entry>
> +	      </row>
> +
>            <row><entry></entry></row>
>          </tbody>
>        </tgroup>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
> b/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
> index 5c28cc3..4d17df9 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
> @@ -418,6 +418,7 @@ struct s5p_mfc_vp8_enc_params {
>  	u8 rc_frame_qp;
>  	u8 rc_p_frame_qp;
>  	u8 profile;
> +	bool ivf;
>  };
> 
>  /**
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> index df83cd1..a67913e 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> @@ -676,6 +676,14 @@ static struct mfc_control controls[] = {
>  		.step = 1,
>  		.default_value = 0,
>  	},
> +	{
> +		.id = V4L2_CID_MPEG_VIDEO_VPX_IVF_FORMAT,
> +		.type = V4L2_CTRL_TYPE_BOOLEAN,
> +		.minimum = 0,
> +		.maximum = 1,
> +		.step = 1,
> +		.default_value = 0,
> +	},
>  };
> 
>  #define NUM_CTRLS ARRAY_SIZE(controls)
> @@ -1636,6 +1644,9 @@ static int s5p_mfc_enc_s_ctrl(struct v4l2_ctrl
> *ctrl)
>  	case V4L2_CID_MPEG_VIDEO_VPX_PROFILE:
>  		p->codec.vp8.profile = ctrl->val;
>  		break;
> +	case V4L2_CID_MPEG_VIDEO_VPX_IVF_FORMAT:
> +		p->codec.vp8.ivf = ctrl->val;
> +		break;
>  	default:
>  		v4l2_err(&dev->v4l2_dev, "Invalid control, id=%d, val=%d\n",
>  							ctrl->id,
ctrl->val);
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c
> b/drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c
> index f64621a..90edb19 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c
> @@ -1243,6 +1243,8 @@ static int s5p_mfc_set_enc_params_vp8(struct
> s5p_mfc_ctx *ctx)
> 
>  	/* VP8 specific params */
>  	reg = 0;
> +	/* Bit set to 1 disables IVF stream format. */
> +	reg |= p_vp8->ivf ? 0 : (0x1 << 12);
>  	reg |= (p_vp8->imd_4x4 & 0x1) << 10;
>  	switch (p_vp8->num_partitions) {
>  	case V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION:
> diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-
> core/v4l2-ctrls.c
> index e9e12c4..19e78df 100644
> --- a/drivers/media/v4l2-core/v4l2-ctrls.c
> +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
> @@ -752,6 +752,7 @@ const char *v4l2_ctrl_get_name(u32 id)
>  	case V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP:		return "VPX
I-
> Frame QP Value";
>  	case V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP:		return "VPX
P-
> Frame QP Value";
>  	case V4L2_CID_MPEG_VIDEO_VPX_PROFILE:			return "VPX
> Profile";
> +	case V4L2_CID_MPEG_VIDEO_VPX_IVF_FORMAT:		return "VPX
Output
> stream in IVF format";
> 
>  	/* CAMERA controls */
>  	/* Keep the order of the 'case's the same as in videodev2.h! */
> diff --git a/include/uapi/linux/v4l2-controls.h
> b/include/uapi/linux/v4l2-controls.h
> index cda6fa0..b2763d6 100644
> --- a/include/uapi/linux/v4l2-controls.h
> +++ b/include/uapi/linux/v4l2-controls.h
> @@ -565,6 +565,7 @@ enum v4l2_vp8_golden_frame_sel {
>  #define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP
> 	(V4L2_CID_MPEG_BASE+509)
>  #define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP
> 	(V4L2_CID_MPEG_BASE+510)
>  #define V4L2_CID_MPEG_VIDEO_VPX_PROFILE
> 	(V4L2_CID_MPEG_BASE+511)
> +#define V4L2_CID_MPEG_VIDEO_VPX_IVF_FORMAT
> 	(V4L2_CID_MPEG_BASE+512)
> 
>  /*  MPEG-class control IDs specific to the CX2341x driver as defined
> by V4L2 */
>  #define V4L2_CID_MPEG_CX2341X_BASE
> 	(V4L2_CTRL_CLASS_MPEG | 0x1000)
> --
> 1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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