This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Hardware accelerated codecs on OMAP5

Hi there,

I am using OMAP5432 ES2.0. I'm trying to use the gst ducati plugin elements. The linux version used is Linux-3.8.4 provided in the SDK on the TI site.

The script in http://gitorious.org/ubuntu-omap/ubuntu-omap5-extras/blobs/master/debian/ubuntu-omap5-extras-config.upstart indicates I need to load omap_remoteproc and omapdce kernel modules. The additional rpmsg and rpc modules are not found in the kernel source. Do I need them in order to use hardware accelerated codecs ?

I loaded the modules,  and copied the ducati firmware from libdce package. But I'm getting

# gst-launch-0.10 -v filesrc location="/home/1080p/mp4/MP4-H.264/Big Buck Bunny_
1080p.mp4" ! qtdemux name=demux demux.video_00 ! h264parse ! ducatih264dec ! kms
sink
Setting pipeline to PAUSED ...
libdce-x11.c:64:        dce_auth_x11    info: attempting to open X11 connection
libdce-x11.c:67:        dce_auth_x11    error: Could not open display
libdce.c:447:   init    info: no X11/wayland, fallback to opening DRM device directly
libdce.c:459:   init    error: could not get plugin ioctl base: -22
ERROR: Pipeline doesn't want to pause.

What is going wrong ? What are the packages and kernel modules required in order to use hardware accelerated codecs ?

Thanks in advance,

Carol

  • Hi,

    Log when the modules are loaded.

    # insmod /lib/modules/3.8.4/kernel/drivers/video/omapdrm_pvr.ko
    [   29.673339] of_get_named_gpio_flags: can't parse gpios property
    # [   29.687499] of_get_named_gpio_flags: can't parse gpios property
    [   29.693847] omap-dma-engine omap-dma-engine: allocating channel for 78
    [   29.700958] omap-dma-engine omap-dma-engine: allocating channel for 77
    [   29.708007] omap_hsmmc 480ad000.mmc: vmmc regulator missing
    [   29.714019] omap-dma-engine omap-dma-engine: freeing channel for 77
    [   29.720733] omap-dma-engine omap-dma-engine: freeing channel for 78
    [   29.727508] platform 480ad000.mmc: Driver omap_hsmmc requests probe deferral

    #
    # modprobe omap_remoteproc.ko
    [   36.221740]  remoteproc0: ipu_c0 is available
    [   36.226715]  remoteproc0: Note: remoteproc is still under development and considered experimental.
    [   36.236358]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
    [   36.248901] of_get_named_gpio_flags: can't parse gpios property
    # [   36.259918] of_get_named_gpio_flags: can't parse gpios property
    [   36.266510] omap-dma-engine omap-dma-engine: allocating channel for 78
    [   36.273529] omap-dma-engine omap-dma-engine: allocating channel for 77
    [   36.280578] omap_hsmmc 480ad000.mmc: vmmc regulator missing
    [   36.286437] omap-dma-engine omap-dma-engine: freeing channel for 77
    [   36.293243] omap-dma-engine omap-dma-engine: freeing channel for 78
    [   36.300048] platform 480ad000.mmc: Driver omap_hsmmc requests probe deferral
    [   36.373596]  remoteproc0: registered virtio0 (type 7)
    [   36.384338]  remoteproc0: registered virtio1 (type 3)
    # modprobe omapdce.ko
    [   43.599670] cma: dma_alloc_from_contiguous(cma ed8a2a00, count 3, align 2)
    [   43.613098] cma: dma_alloc_from_contiguous(): returned c103b000
    [   43.619506] cma: dma_alloc_from_contiguous(cma ed8a2a00, count 3, align 2)
    [   43.626983] cma: dma_alloc_from_contiguous(): returned c103b080
    [   43.633514]  remoteproc0: powering up ipu_c0
    [   43.641754]  remoteproc0: Booting fw image ducati-m3-core0.xem3, size 1165847
    [   43.650024] omap-iommu omap-iommu.0: ipu_mmu: version 2.1
    [   43.655914] cma: dma_alloc_from_contiguous(cma ed8a2a00, count 24576, align 8)
    [   43.671447] cma: dma_alloc_from_contiguous(): returned c103d000
    [   43.723388] cma: dma_alloc_from_contiguous(cma ed8a2a00, count 1024, align 8)
    [   43.733215] cma: dma_alloc_from_contiguous(): returned c10fd000
    [   43.741577] cma: dma_alloc_from_contiguous(cma ed8a2a00, count 256, align 8)
    [   43.749298] cma: dma_alloc_from_contiguous(): returned c1105000
    [   43.788177] omap-rproc omap-rproc.1: omap_mbox_get failed: -22
    [   43.794281]  remoteproc0: can't start rproc ipu_c0: -22
    [   43.803436] cma: dma_release_from_contiguous(page c103d000)
    [   43.852172] cma: dma_release_from_contiguous(page c10fd000)
    [   43.859985] cma: dma_release_from_contiguous(page c1105000)
    [   43.879302] omap_hwmod: ipu_mmu: _wait_target_disable failed
    [   43.885772]  remoteproc0: rproc_boot() failed -22
    [   43.890838] cma: dma_release_from_contiguous(page c103b000)
    [   43.896667] cma: dma_release_from_contiguous(page c103b080)
    [   43.902740] virtio_rpmsg_bus: probe of virtio0 failed with error -22
    [   43.915100] omapdce: module is from the staging directory, the quality is unknown, you have been warned.
    #

    Regards,

    Carol

  • Hi Carol,

        Use the xem3 binary by building the ipumm in the glsdk release.

    Thanks & Regards,

    Amarinder

  • Hi Amarinder,

    I have freshly built the xem3 binary. I wanted to know if we need rpmsg and rpc modules. If yes, where do I find the kernel source ?

    Thanks,

    Carol

  • Hi,

     The drivers that are needed for xem3  to load are remoteproc.ko, omap_remoteproc.ko (drivers/remoteproc), virtio_rpmsg_bus.ko (drivers/rpmsg) and omapdce.ko(drivers/staging/omapdce). These drivers would be loaded using modprobe also if you have installed the modules on the filesystem.

    Thanks & Regards,

    Amarinder

  • Hi Amarinder,

    Thanks a lot for the help. I was able to run video using dri2videosink and ducati codecs. But I'm facing problem with scaling the video down so as to fit the screen. I used set_render_rectangle() API which works fine on pvrvideosink but doesn't seem to work with dri2videosink. How else can I set the width and height of the video in a pipeline which uses dri2videosink ?

    Regards,

    Carol

  • Hi, 

    You can use the this pipeline  ffmpegcolorspace ! ffvideoscale ! dri2videosink as sink.