lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 17 Dec 2014 14:12:26 +0100
From:	Jean-Michel Hautbois <jean-michel.hautbois@...alys.com>
To:	Nicolas Dufresne <nicolas.dufresne@...labora.com>
Cc:	Philipp Zabel <p.zabel@...gutronix.de>,
	Steve Longerbeam <slongerbeam@...il.com>,
	linux-kernel <linux-kernel@...r.kernel.org>,
	Frédéric Sureau <frederic.sureau@...alys.com>,
	Fabio Estevam <fabio.estevam@...escale.com>
Subject: Re: i.MX6 CSC and scaler

2014-12-16 15:50 GMT+01:00 Nicolas Dufresne <nicolas.dufresne@...labora.com>:
>
> Le 2014-12-16 09:27, Jean-Michel Hautbois a écrit :
>>
>> Have you already started something about that ?
>
> Yes, currently I do cropping right if there is no scaling. Doing this with
> S_CROP is really ackward, but very few m2m driver has been ported to
> G_SELECTION yet. The v4l2transform was tested to run with Exynos 4 FIMC
> driver. There was still issue with such driver doing middle rounding for
> alignment. This has been reported on this list. The proposed solution is to
> add flags to our internal alignment method, and update these driver to pick
> a direction.

Right now, I can get the driver probed (twice, as I have two IPUs) and
gstreamer creates two elements :
$> rm .cache/gstreamer-1.0/registry.arm.bin
$>
gst-inspect-1.0 |grep v4l2
video4linux2:  v4l2video3videodec: V4L2 Video Decoder
video4linux2:  v4l2video2h264enc: V4L2 H.264 Encoder
video4linux2:  v4l2video1convert: V4L2 Video Converter
video4linux2:  v4l2video0convert: V4L2 Video Converter
video4linux2:  v4l2deviceprovider (GstDeviceProviderFactory)
video4linux2:  v4l2radio: Radio (video4linux2) Tuner
video4linux2:  v4l2sink: Video (video4linux2) Sink
video4linux2:  v4l2src: Video (video4linux2) Source

$> gst-inspect-1.0 v4l2video0convert
Factory Details:
  Rank                     none (0)
  Long-name                V4L2 Video Converter
  Klass                    Filter/Converter/Video
  Description              Transform streams via V4L2 API
  Author                   Nicolas Dufresne <nicolas.dufresne@...labora.com>

Plugin Details:
  Name                     video4linux2
  Description              elements for Video 4 Linux
  Filename                 /usr/lib/gstreamer-1.0/libgstvideo4linux2.so
  Version                  1.5.0.1
  License                  LGPL
  Source module            gst-plugins-good
  Source release date      2014-12-15 11:41 (UTC)
  Binary package           GStreamer Good Plug-ins git
  Origin URL               Unknown package origin

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseTransform
                         +----GstV4l2Transform
                               +----v4l2video0convert

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-raw
                 format: { RGB16, RGB, BGR, xRGB, ARGB, BGRx, BGRA,
YUY2, UYVY, I420, YV12, NV12, NV21, Y42B }
                  width: [ 1, 32768 ]
                 height: [ 1, 32768 ]
              framerate: [ 0/1, 100/1 ]

  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw
                 format: { RGB16, RGB, BGR, xRGB, ARGB, BGRx, BGRA,
YUY2, UYVY, I420, YV12, NV12, NV21, Y42B }
                  width: [ 1, 32768 ]
                 height: [ 1, 32768 ]
              framerate: [ 0/1, 100/1 ]


Element Flags:
  no flags set

Element Implementation:
  Has change_state() function: gst_v4l2_transform_change_state

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SINK: 'sink'
    Pad Template: 'sink'
  SRC: 'src'
    Pad Template: 'src'

Element Properties:
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "v4l2video0convert0"
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  qos                 : Handle Quality-of-Service events
                        flags: readable, writable
                        Boolean. Default: true
  device              : Device location
                        flags: readable
                        String. Default: "/dev/video0"
  device-name         : Name of the device
                        flags: readable
                        String. Default: "mx6-m2m"
  device-fd           : File descriptor of the device
                        flags: readable
                        Integer. Range: -1 - 2147483647 Default: -1
  output-io-mode      : Output side I/O mode (matches sink pad)
                        flags: readable, writable
                        Enum "GstV4l2IOMode" Default: 0, "auto"
                           (0): auto             - GST_V4L2_IO_AUTO
                           (1): rw               - GST_V4L2_IO_RW
                           (2): mmap             - GST_V4L2_IO_MMAP
                           (3): userptr          - GST_V4L2_IO_USERPTR
                           (4): dmabuf           - GST_V4L2_IO_DMABUF
                           (5): dmabuf-import    - GST_V4L2_IO_DMABUF_IMPORT
  capture-io-mode     : Capture I/O mode (matches src pad)
                        flags: readable, writable
                        Enum "GstV4l2IOMode" Default: 0, "auto"
                           (0): auto             - GST_V4L2_IO_AUTO
                           (1): rw               - GST_V4L2_IO_RW
                           (2): mmap             - GST_V4L2_IO_MMAP
                           (3): userptr          - GST_V4L2_IO_USERPTR
                           (4): dmabuf           - GST_V4L2_IO_DMABUF
                           (5): dmabuf-import    - GST_V4L2_IO_DMABUF_IMPORT
  extra-controls      : Extra v4l2 controls (CIDs) for the device
                        flags: readable, writable
                        Boxed pointer of type "GstStructure"


When I try to use it, the driver fails to work, because S_FMT needs to
be called first.
$> gst-launch-1.0 -vve videotestsrc !
'video/x-raw,format=YUY2,width=320,height=240' ! v4l2video0convert !
'video/x-raw,format=NV12,width=320,height=240' ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data
flow error.

$> dmesg
[10005.548047] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.555784] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.563482] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.571225] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.578925] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.586781] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.594583] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.602292] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.610125] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.617864] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.625559] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.633970] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.641730] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.649488] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.657217] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.664927] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.672629] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.680336] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.688070] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.695770] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.703457] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.711184] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.718880] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.727170] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.734885] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.742592] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.750301] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.758205] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.765910] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.773603] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.781334] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.789028] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.796743] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.804444] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.812141] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation
[10005.819862] mx6-m2m ipum2m@...1: call capture S_FMT first to
determine segmentation


So, basically it should be working because using v4l2-ctl I can do :
$> v4l2-ctl -d0 --set-fmt-video=width=320,height=240,pixelformat=5
--set-fmt-video-out=width=1920,height=1080,pixelformat=NV12
[10127.455820] mx6-m2m ipum2m@...1: Capture format: 320x240 (1 320x240
segments), YUYV
[10127.463584] mx6-m2m ipum2m@...1: Output format: 1920x1080 (1
1920x1080 segments), NV12

I may need some help in order to modify the gstreamer plugin now ;-).
JM
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ