Re: [PATCH v9 2/9] media: v4l: Add definitions for MPEG-2 slice format and metadata

2018-09-10 Thread Hans Verkuil
On 09/10/2018 11:47 AM, Paul Kocialkowski wrote:
> Hi,
> 
> Le lundi 10 septembre 2018 à 11:41 +0200, Hans Verkuil a écrit :
>> On 09/07/2018 12:24 AM, Paul Kocialkowski wrote:
>>> From: Paul Kocialkowski 
>>>
>>> Stateless video decoding engines require both the MPEG-2 slices and
>>> associated metadata from the video stream in order to decode frames.
>>>
>>> This introduces definitions for a new pixel format, describing buffers
>>> with MPEG-2 slice data, as well as control structure sfor passing the
>>> frame metadata to drivers.
>>>
>>> This is based on work from both Florent Revest and Hugues Fruchet.
>>>
>>> Signed-off-by: Paul Kocialkowski 
>>> ---
>>>  .../media/uapi/v4l/extended-controls.rst  | 176 ++
>>>  .../media/uapi/v4l/pixfmt-compressed.rst  |  16 ++
>>>  .../media/uapi/v4l/vidioc-queryctrl.rst   |  14 +-
>>>  .../media/videodev2.h.rst.exceptions  |   2 +
>>>  drivers/media/v4l2-core/v4l2-ctrls.c  |  63 +++
>>>  drivers/media/v4l2-core/v4l2-ioctl.c  |   1 +
>>>  include/media/v4l2-ctrls.h|  18 +-
>>>  include/uapi/linux/v4l2-controls.h|  65 +++
>>>  include/uapi/linux/videodev2.h|   5 +
>>>  9 files changed, 351 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/Documentation/media/uapi/v4l/extended-controls.rst 
>>> b/Documentation/media/uapi/v4l/extended-controls.rst
>>> index 9f7312bf3365..f1951236266a 100644
>>> --- a/Documentation/media/uapi/v4l/extended-controls.rst
>>> +++ b/Documentation/media/uapi/v4l/extended-controls.rst
>>> @@ -1497,6 +1497,182 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
>>>  
>>>  
>>>  
>>> +.. _v4l2-mpeg-mpeg2:
>>> +
>>> +``V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS (struct)``
>>> +Specifies the slice parameters (as extracted from the bitstream) for 
>>> the
>>> +associated MPEG-2 slice data. This includes the necessary parameters 
>>> for
>>> +configuring a stateless hardware decoding pipeline for MPEG-2.
>>> +The bitstream parameters are defined according to :ref:`mpeg2part2`.
>>> +
>>> +.. c:type:: v4l2_ctrl_mpeg2_slice_params
>>> +
>>> +.. cssclass:: longtable
>>> +
>>> +.. flat-table:: struct v4l2_ctrl_mpeg2_slice_params
>>> +:header-rows:  0
>>> +:stub-columns: 0
>>> +:widths:   1 1 2
>>> +
>>> +* - __u32
>>> +  - ``bit_size``
>>> +  - Size (in bits) of the current slice data.
>>> +* - __u32
>>> +  - ``data_bit_offset``
>>> +  - Offset (in bits) to the video data in the current slice data.
>>> +* - struct :c:type:`v4l2_mpeg2_sequence`
>>> +  - ``sequence``
>>> +  - Structure with MPEG-2 sequence metadata, merging relevant fields 
>>> from
>>> +   the sequence header and sequence extension parts of the bitstream.
>>> +* - struct :c:type:`v4l2_mpeg2_picture`
>>> +  - ``picture``
>>> +  - Structure with MPEG-2 picture metadata, merging relevant fields 
>>> from
>>> +   the picture header and picture coding extension parts of the bitstream.
>>> +* - __u8
>>> +  - ``quantiser_scale_code``
>>> +  - Code used to determine the quantization scale to use for the IDCT.
>>> +* - __u8
>>> +  - ``backward_ref_index``
>>> +  - Index for the V4L2 buffer to use as backward reference, used with
>>> +   B-coded and P-coded frames.
>>> +* - __u8
>>> +  - ``forward_ref_index``
>>> +  - Index for the V4L2 buffer to use as forward reference, used with
>>> +   P-coded frames.
>>
>> Should this be "B-coded frames"?
> 
> Oops, that's right, B-coded frames.
> 
> Should I make a follow-up patch for that (maybe gathered with other
> changes if required)?

Follow-up patches, please. All on top of my last pull request that adds the
cedrus driver.

Regards,

Hans
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v9 2/9] media: v4l: Add definitions for MPEG-2 slice format and metadata

2018-09-10 Thread Paul Kocialkowski
Hi,

Le lundi 10 septembre 2018 à 11:41 +0200, Hans Verkuil a écrit :
> On 09/07/2018 12:24 AM, Paul Kocialkowski wrote:
> > From: Paul Kocialkowski 
> > 
> > Stateless video decoding engines require both the MPEG-2 slices and
> > associated metadata from the video stream in order to decode frames.
> > 
> > This introduces definitions for a new pixel format, describing buffers
> > with MPEG-2 slice data, as well as control structure sfor passing the
> > frame metadata to drivers.
> > 
> > This is based on work from both Florent Revest and Hugues Fruchet.
> > 
> > Signed-off-by: Paul Kocialkowski 
> > ---
> >  .../media/uapi/v4l/extended-controls.rst  | 176 ++
> >  .../media/uapi/v4l/pixfmt-compressed.rst  |  16 ++
> >  .../media/uapi/v4l/vidioc-queryctrl.rst   |  14 +-
> >  .../media/videodev2.h.rst.exceptions  |   2 +
> >  drivers/media/v4l2-core/v4l2-ctrls.c  |  63 +++
> >  drivers/media/v4l2-core/v4l2-ioctl.c  |   1 +
> >  include/media/v4l2-ctrls.h|  18 +-
> >  include/uapi/linux/v4l2-controls.h|  65 +++
> >  include/uapi/linux/videodev2.h|   5 +
> >  9 files changed, 351 insertions(+), 9 deletions(-)
> > 
> > diff --git a/Documentation/media/uapi/v4l/extended-controls.rst 
> > b/Documentation/media/uapi/v4l/extended-controls.rst
> > index 9f7312bf3365..f1951236266a 100644
> > --- a/Documentation/media/uapi/v4l/extended-controls.rst
> > +++ b/Documentation/media/uapi/v4l/extended-controls.rst
> > @@ -1497,6 +1497,182 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
> >  
> >  
> >  
> > +.. _v4l2-mpeg-mpeg2:
> > +
> > +``V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS (struct)``
> > +Specifies the slice parameters (as extracted from the bitstream) for 
> > the
> > +associated MPEG-2 slice data. This includes the necessary parameters 
> > for
> > +configuring a stateless hardware decoding pipeline for MPEG-2.
> > +The bitstream parameters are defined according to :ref:`mpeg2part2`.
> > +
> > +.. c:type:: v4l2_ctrl_mpeg2_slice_params
> > +
> > +.. cssclass:: longtable
> > +
> > +.. flat-table:: struct v4l2_ctrl_mpeg2_slice_params
> > +:header-rows:  0
> > +:stub-columns: 0
> > +:widths:   1 1 2
> > +
> > +* - __u32
> > +  - ``bit_size``
> > +  - Size (in bits) of the current slice data.
> > +* - __u32
> > +  - ``data_bit_offset``
> > +  - Offset (in bits) to the video data in the current slice data.
> > +* - struct :c:type:`v4l2_mpeg2_sequence`
> > +  - ``sequence``
> > +  - Structure with MPEG-2 sequence metadata, merging relevant fields 
> > from
> > +   the sequence header and sequence extension parts of the bitstream.
> > +* - struct :c:type:`v4l2_mpeg2_picture`
> > +  - ``picture``
> > +  - Structure with MPEG-2 picture metadata, merging relevant fields 
> > from
> > +   the picture header and picture coding extension parts of the bitstream.
> > +* - __u8
> > +  - ``quantiser_scale_code``
> > +  - Code used to determine the quantization scale to use for the IDCT.
> > +* - __u8
> > +  - ``backward_ref_index``
> > +  - Index for the V4L2 buffer to use as backward reference, used with
> > +   B-coded and P-coded frames.
> > +* - __u8
> > +  - ``forward_ref_index``
> > +  - Index for the V4L2 buffer to use as forward reference, used with
> > +   P-coded frames.
> 
> Should this be "B-coded frames"?

Oops, that's right, B-coded frames.

Should I make a follow-up patch for that (maybe gathered with other
changes if required)?

Cheers,

Paul

-- 
Developer of free digital technology and hardware support.

Website: https://www.paulk.fr/
Coding blog: https://code.paulk.fr/
Git repositories: https://git.paulk.fr/ https://git.code.paulk.fr/


signature.asc
Description: This is a digitally signed message part
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v9 2/9] media: v4l: Add definitions for MPEG-2 slice format and metadata

2018-09-10 Thread Hans Verkuil
On 09/07/2018 12:24 AM, Paul Kocialkowski wrote:
> From: Paul Kocialkowski 
> 
> Stateless video decoding engines require both the MPEG-2 slices and
> associated metadata from the video stream in order to decode frames.
> 
> This introduces definitions for a new pixel format, describing buffers
> with MPEG-2 slice data, as well as control structure sfor passing the
> frame metadata to drivers.
> 
> This is based on work from both Florent Revest and Hugues Fruchet.
> 
> Signed-off-by: Paul Kocialkowski 
> ---
>  .../media/uapi/v4l/extended-controls.rst  | 176 ++
>  .../media/uapi/v4l/pixfmt-compressed.rst  |  16 ++
>  .../media/uapi/v4l/vidioc-queryctrl.rst   |  14 +-
>  .../media/videodev2.h.rst.exceptions  |   2 +
>  drivers/media/v4l2-core/v4l2-ctrls.c  |  63 +++
>  drivers/media/v4l2-core/v4l2-ioctl.c  |   1 +
>  include/media/v4l2-ctrls.h|  18 +-
>  include/uapi/linux/v4l2-controls.h|  65 +++
>  include/uapi/linux/videodev2.h|   5 +
>  9 files changed, 351 insertions(+), 9 deletions(-)
> 
> diff --git a/Documentation/media/uapi/v4l/extended-controls.rst 
> b/Documentation/media/uapi/v4l/extended-controls.rst
> index 9f7312bf3365..f1951236266a 100644
> --- a/Documentation/media/uapi/v4l/extended-controls.rst
> +++ b/Documentation/media/uapi/v4l/extended-controls.rst
> @@ -1497,6 +1497,182 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
>  
>  
>  
> +.. _v4l2-mpeg-mpeg2:
> +
> +``V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS (struct)``
> +Specifies the slice parameters (as extracted from the bitstream) for the
> +associated MPEG-2 slice data. This includes the necessary parameters for
> +configuring a stateless hardware decoding pipeline for MPEG-2.
> +The bitstream parameters are defined according to :ref:`mpeg2part2`.
> +
> +.. c:type:: v4l2_ctrl_mpeg2_slice_params
> +
> +.. cssclass:: longtable
> +
> +.. flat-table:: struct v4l2_ctrl_mpeg2_slice_params
> +:header-rows:  0
> +:stub-columns: 0
> +:widths:   1 1 2
> +
> +* - __u32
> +  - ``bit_size``
> +  - Size (in bits) of the current slice data.
> +* - __u32
> +  - ``data_bit_offset``
> +  - Offset (in bits) to the video data in the current slice data.
> +* - struct :c:type:`v4l2_mpeg2_sequence`
> +  - ``sequence``
> +  - Structure with MPEG-2 sequence metadata, merging relevant fields from
> + the sequence header and sequence extension parts of the bitstream.
> +* - struct :c:type:`v4l2_mpeg2_picture`
> +  - ``picture``
> +  - Structure with MPEG-2 picture metadata, merging relevant fields from
> + the picture header and picture coding extension parts of the bitstream.
> +* - __u8
> +  - ``quantiser_scale_code``
> +  - Code used to determine the quantization scale to use for the IDCT.
> +* - __u8
> +  - ``backward_ref_index``
> +  - Index for the V4L2 buffer to use as backward reference, used with
> + B-coded and P-coded frames.
> +* - __u8
> +  - ``forward_ref_index``
> +  - Index for the V4L2 buffer to use as forward reference, used with
> + P-coded frames.

Do these indices refer to the output or capture buffers? I think these should
refer to the output buffers, since this control is used in a request for the
output side.

Regards,

Hans
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v9 2/9] media: v4l: Add definitions for MPEG-2 slice format and metadata

2018-09-10 Thread Hans Verkuil
On 09/07/2018 12:24 AM, Paul Kocialkowski wrote:
> From: Paul Kocialkowski 
> 
> Stateless video decoding engines require both the MPEG-2 slices and
> associated metadata from the video stream in order to decode frames.
> 
> This introduces definitions for a new pixel format, describing buffers
> with MPEG-2 slice data, as well as control structure sfor passing the
> frame metadata to drivers.
> 
> This is based on work from both Florent Revest and Hugues Fruchet.
> 
> Signed-off-by: Paul Kocialkowski 
> ---
>  .../media/uapi/v4l/extended-controls.rst  | 176 ++
>  .../media/uapi/v4l/pixfmt-compressed.rst  |  16 ++
>  .../media/uapi/v4l/vidioc-queryctrl.rst   |  14 +-
>  .../media/videodev2.h.rst.exceptions  |   2 +
>  drivers/media/v4l2-core/v4l2-ctrls.c  |  63 +++
>  drivers/media/v4l2-core/v4l2-ioctl.c  |   1 +
>  include/media/v4l2-ctrls.h|  18 +-
>  include/uapi/linux/v4l2-controls.h|  65 +++
>  include/uapi/linux/videodev2.h|   5 +
>  9 files changed, 351 insertions(+), 9 deletions(-)
> 
> diff --git a/Documentation/media/uapi/v4l/extended-controls.rst 
> b/Documentation/media/uapi/v4l/extended-controls.rst
> index 9f7312bf3365..f1951236266a 100644
> --- a/Documentation/media/uapi/v4l/extended-controls.rst
> +++ b/Documentation/media/uapi/v4l/extended-controls.rst
> @@ -1497,6 +1497,182 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
>  
>  
>  
> +.. _v4l2-mpeg-mpeg2:
> +
> +``V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS (struct)``
> +Specifies the slice parameters (as extracted from the bitstream) for the
> +associated MPEG-2 slice data. This includes the necessary parameters for
> +configuring a stateless hardware decoding pipeline for MPEG-2.
> +The bitstream parameters are defined according to :ref:`mpeg2part2`.
> +
> +.. c:type:: v4l2_ctrl_mpeg2_slice_params
> +
> +.. cssclass:: longtable
> +
> +.. flat-table:: struct v4l2_ctrl_mpeg2_slice_params
> +:header-rows:  0
> +:stub-columns: 0
> +:widths:   1 1 2
> +
> +* - __u32
> +  - ``bit_size``
> +  - Size (in bits) of the current slice data.
> +* - __u32
> +  - ``data_bit_offset``
> +  - Offset (in bits) to the video data in the current slice data.
> +* - struct :c:type:`v4l2_mpeg2_sequence`
> +  - ``sequence``
> +  - Structure with MPEG-2 sequence metadata, merging relevant fields from
> + the sequence header and sequence extension parts of the bitstream.
> +* - struct :c:type:`v4l2_mpeg2_picture`
> +  - ``picture``
> +  - Structure with MPEG-2 picture metadata, merging relevant fields from
> + the picture header and picture coding extension parts of the bitstream.
> +* - __u8
> +  - ``quantiser_scale_code``
> +  - Code used to determine the quantization scale to use for the IDCT.
> +* - __u8
> +  - ``backward_ref_index``
> +  - Index for the V4L2 buffer to use as backward reference, used with
> + B-coded and P-coded frames.
> +* - __u8
> +  - ``forward_ref_index``
> +  - Index for the V4L2 buffer to use as forward reference, used with
> + P-coded frames.

Should this be "B-coded frames"?

Regards,

Hans
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v9 2/9] media: v4l: Add definitions for MPEG-2 slice format and metadata

2018-09-06 Thread Paul Kocialkowski
From: Paul Kocialkowski 

Stateless video decoding engines require both the MPEG-2 slices and
associated metadata from the video stream in order to decode frames.

This introduces definitions for a new pixel format, describing buffers
with MPEG-2 slice data, as well as control structure sfor passing the
frame metadata to drivers.

This is based on work from both Florent Revest and Hugues Fruchet.

Signed-off-by: Paul Kocialkowski 
---
 .../media/uapi/v4l/extended-controls.rst  | 176 ++
 .../media/uapi/v4l/pixfmt-compressed.rst  |  16 ++
 .../media/uapi/v4l/vidioc-queryctrl.rst   |  14 +-
 .../media/videodev2.h.rst.exceptions  |   2 +
 drivers/media/v4l2-core/v4l2-ctrls.c  |  63 +++
 drivers/media/v4l2-core/v4l2-ioctl.c  |   1 +
 include/media/v4l2-ctrls.h|  18 +-
 include/uapi/linux/v4l2-controls.h|  65 +++
 include/uapi/linux/videodev2.h|   5 +
 9 files changed, 351 insertions(+), 9 deletions(-)

diff --git a/Documentation/media/uapi/v4l/extended-controls.rst 
b/Documentation/media/uapi/v4l/extended-controls.rst
index 9f7312bf3365..f1951236266a 100644
--- a/Documentation/media/uapi/v4l/extended-controls.rst
+++ b/Documentation/media/uapi/v4l/extended-controls.rst
@@ -1497,6 +1497,182 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
 
 
 
+.. _v4l2-mpeg-mpeg2:
+
+``V4L2_CID_MPEG_VIDEO_MPEG2_SLICE_PARAMS (struct)``
+Specifies the slice parameters (as extracted from the bitstream) for the
+associated MPEG-2 slice data. This includes the necessary parameters for
+configuring a stateless hardware decoding pipeline for MPEG-2.
+The bitstream parameters are defined according to :ref:`mpeg2part2`.
+
+.. c:type:: v4l2_ctrl_mpeg2_slice_params
+
+.. cssclass:: longtable
+
+.. flat-table:: struct v4l2_ctrl_mpeg2_slice_params
+:header-rows:  0
+:stub-columns: 0
+:widths:   1 1 2
+
+* - __u32
+  - ``bit_size``
+  - Size (in bits) of the current slice data.
+* - __u32
+  - ``data_bit_offset``
+  - Offset (in bits) to the video data in the current slice data.
+* - struct :c:type:`v4l2_mpeg2_sequence`
+  - ``sequence``
+  - Structure with MPEG-2 sequence metadata, merging relevant fields from
+   the sequence header and sequence extension parts of the bitstream.
+* - struct :c:type:`v4l2_mpeg2_picture`
+  - ``picture``
+  - Structure with MPEG-2 picture metadata, merging relevant fields from
+   the picture header and picture coding extension parts of the bitstream.
+* - __u8
+  - ``quantiser_scale_code``
+  - Code used to determine the quantization scale to use for the IDCT.
+* - __u8
+  - ``backward_ref_index``
+  - Index for the V4L2 buffer to use as backward reference, used with
+   B-coded and P-coded frames.
+* - __u8
+  - ``forward_ref_index``
+  - Index for the V4L2 buffer to use as forward reference, used with
+   P-coded frames.
+
+.. c:type:: v4l2_mpeg2_sequence
+
+.. cssclass:: longtable
+
+.. flat-table:: struct v4l2_mpeg2_sequence
+:header-rows:  0
+:stub-columns: 0
+:widths:   1 1 2
+
+* - __u16
+  - ``horizontal_size``
+  - The width of the displayable part of the frame's luminance component.
+* - __u16
+  - ``vertical_size``
+  - The height of the displayable part of the frame's luminance component.
+* - __u32
+  - ``vbv_buffer_size``
+  - Used to calculate the required size of the video buffering verifier,
+   defined (in bits) as: 16 * 1024 * vbv_buffer_size.
+* - __u8
+  - ``profile_and_level_indication``
+  - The current profile and level indication as extracted from the
+   bitstream.
+* - __u8
+  - ``progressive_sequence``
+  - Indication that all the frames for the sequence are progressive instead
+   of interlaced.
+* - __u8
+  - ``chroma_format``
+  - The chrominance sub-sampling format (1: 4:2:0, 2: 4:2:2, 3: 4:4:4).
+
+.. c:type:: v4l2_mpeg2_picture
+
+.. cssclass:: longtable
+
+.. flat-table:: struct v4l2_mpeg2_picture
+:header-rows:  0
+:stub-columns: 0
+:widths:   1 1 2
+
+* - __u8
+  - ``picture_coding_type``
+  - Picture coding type for the frame covered by the current slice
+   (V4L2_MPEG2_PICTURE_CODING_TYPE_I, V4L2_MPEG2_PICTURE_CODING_TYPE_P or
+   V4L2_MPEG2_PICTURE_CODING_TYPE_B).
+* - __u8
+  - ``f_code[2][2]``
+  - Motion vector codes.
+* - __u8
+  - ``intra_dc_precision``
+  - Precision of Discrete Cosine transform (0: 8 bits precision,
+   1: 9 bits precision, 2: 10 bits precision, 3: 11 bits precision).
+* - __u8
+  - ``picture_structure``
+  - Picture structure (1: interlaced top field, 2: interlaced bottom field,
+   3: progressive frame).
+* - __u8
+  - ``top_field_first``
+  - If set to 1 and interlaced stream, top field is output first.
+