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.

OMAP 4430 video encoding

Other Parts Discussed in Thread: OMAP3530

Hello everyone,

I am using a Gumstix Duovero Zephyr, which is based on OMAP4430, and I would like to use the OMAP video encoding capabilities.

I got this working with a Gumstix Overo IronStorm, which is based on OMAP3530, using the gstreamer-ti target of the meta-ti layer but that does not seem to be the way for OMAP4430.

I browsed the web and got lost in a bunch of terms (IVA3, Ducati, xDM, xDAIS,...) but could not find what is needed in a linux system to be able to encode video using the OMAP capabilities.

Can anybody give me any pointer please?

  • Hi Manuel,

    I don't have experience with that exact board: Gumstix Duovero Zephyr, but in order to utilize OMAP44xx video encoding capabilities, you need to port Ducati.

    For Android, ducati binaries can be found on the following page: http://omappedia.org/wiki/Android:_Working_with_pre-built_binaries

    For GLP (Ubuntu releases) ducati can be found here:

    http://omappedia.org/wiki/Ubuntu_Pre-Built_Binaries  (ducati should be integrated in the filesystem)


    When using Android encoding is done via OMX and for Ubuntu GStreamer is used.

    Best Regards,

    Yordan

  • Hello Yordan,


    First of all, thank you for taking the time to help me. I really appreciate it.

    About Ducati, I am using Yocto/Poky as my linux distribution so I guess I would have to rebuild it. Is this correct? Are there any compatible pre-built binaries?


    If I understood correctly, once built and installed in the system, I would have to use the "omx_h264enc" GStreamer element. Again, is this correct?

  • Hi,

    -1- See if the kernel version of the Ubuntu distributions matches the one you use (from Yocto/Poky), you should be able to use the prebuilt binary from GLP release. If not you would have to build the binary against your kernel.

    You can find kernels from the following links:
    http://omapedia.org/wiki/Prebuilt_ubuntu_binaries

    http://omapedia.org/wiki/OMAP_Ubuntu_Core

    http://omapedia.org/wiki/OMAP_Ubuntu_Main

    Useful ducati link is: http://omappedia.org/wiki/Ducati_For_Dummies

    -2- Yes that is the GST element you have to use.

    FYI, If you don't have the Ducati sources to rebuild them, you could research the option to use V4L (but Ducati is recommended).

    Best Regards,

    Yordan

  • Thank you very much. I read those link and give it a try.


    You mentioned V4L. What do you mean by that? How can I encode h264 video with it?

  • Hi,

    V4L utilizes OMAP4 ISS module (camera applications), sorry this is my mistake you cannot encode h264 video with it, it is used for processing (to some extent) data stream from camera sensor. Also it is not an official TI release, but a community project.

    Best Regards,

    Yordan

  • Thank you anyway.


    I am currently trying to build all the modules needed to enable the encoding. I will let you know.

  • Hi Manuel,

    Thank you for posting this as I am also (and have been for the past few months) trying to get the OMAP4ISS to work on the Gumstix DuoVero Zephyr with a MIPI camera module.

    Here are some things I have learned and completed. I have also used the Parlor board with the DuoVero for development.

    1) Installing Ubuntu 12.04 Core on DuoVero.

    Based on Mike Seese's very helpful post (http://gumstix.8.x6.nabble.com/Ubuntu-12-04-Sakoman-s-Yocto-3-6-Kernel-and-Modules-on-DuoVero-td4969026.html), I have been able to use Sakoman's Yocto 3.6.0 Kernel with the Ubuntu 12.04 Preinstalled Core image file system to boot up the board, use a keyboard, and display to HDMI monitor.

    a) Download the two compressed files from the link above and create bootable SD card (http://gumstix.org/getting-started-guide/242-create-a-bootable-microsd-card.html).

    Download the mk2partsd script (https://github.com/gumstix/meta-gumstix-extras/blob/next/scripts/mk2partsd).

    I created a bash script to utilize the mk2partsd script as well copying MLO, u-boot.img, uImage to the boot partition and also extracting the Ubuntu Core FS to the rootfs partition. Feel free to take a look at it and use/edit it.

    5417.1_sd_card_creation_ubuntu_on_gumstix_duovero.txt <- Remove .txt extension.

    b) After installing and booting up, enable Ethernet (uses connector on Parlor board obviously), replace /etc/apt/sources.list file with my updated sources.list to add the Ubuntu Universe and TI OMAP Release PPA's, and add public key for TI OMAP PPA.

    6064.sources.list.txt <- Remove .txt extension.

    2251.2_update_post_configuration.txt <- Remove .txt extension.

    c) Install Ubuntu Desktop (optional) on DuoVero.

    This script installs the Ubuntu Desktop environment which may be helpful.

    4643.3_ubuntu_desktop_installation_post_update.txt <- Remove .txt extension.

    I have installed this on my DuoVero to try to use gstreamer-properties to test the camera.

    I'll post more later regarding what kernels I have tried in order to acquire video from the camera using OMAP4ISS driver on the DuoVero.

    I also have a Pandaboard that successfully acquires video from the same camera module using 3.4.0-1490-omap4 kernel.

    However, this kernel version cannot be used/copied to the DuoVero because the SD card detect signal is inverted from the Pandaboard.

    This has been my main problem porting from Pandaboard to DuoVero because the proper kernel source has to be recompiled and I have yet to successfully recompile the 3.4.0-1490-omap4 kernel just using the working .config file...

    Thanks,

    James

  • Thank you very much. I will definitely take a look at that.


    This is where I stand now:

    I tried to follow Yordan's suggestions but I have not been able to get GStreamer for OMAP into my system image. The problems are related to the settings in my image build system (Bitbake). I was hoping to get this and the other packages working at some point and report back. I have not given up yet.

    I took some time off from Yordan's option to test a suggestion made in Yocto's meta-ti mailing list: I was told that I might be able to use the meta-arago-extras layer. I thought that this could be easier than Yordan's option but it turned out that it is not. I will make a few more attempts on this option but it does not look promising.

    After this, I will check the Ubuntu Core option and let you know.


    If I fail on that too, I will go back to Yordan's option. I got stuck a couple of times with it but I was able to overcome the problems and move forward so it looks very promising to me right now. There is still a lot of work to do though so I rather test any other procedure that might be faster and/or easier.

    Once again, thank you all for your help. I will keep you posted.

  • James,


    I tried your instructions and I got stuck because "apt-get" cannot connect to the Ubuntu servers. Can you confirm that the URLs are correct please?


    By the way, the image does not include an SSH server or even ping. I guess that that is intended.

  • Manuel,

    My apologies. I forgot to specify that I use a virtual machine (also Ubuntu 12.04) to download the compressed files (boot and rootfs files), then download the mk2partsd script, then execute the "sd_card_creation_ubuntu_on_gumstix_duovero" script on the virtual machine to create SD card, in my case connected via USB SD card reader (my built-in SD card reader on my laptop cannot connect to my virtual machine due to hw issues). I usually prepare the SD card using GParted by deleting all partitions and just noting what the device name is.

    Then, after the SD card creation is successful, copy the sources.list file to the SD card /etc/apt directory, replacing the original sources.list file. You may need to remount the SD card after running the above script (you may want to look through the script first as some of my directories won't exist in your case, etc.).

    Using newly created SD card, boot DuoVero, then execute the "update_post_configuration" script on the DuoVero. This will bring up the Ethernet which will allow you to install packages using "apt-get".

    Also, the "ubuntu_desktop_installation_post_update" is to be run on the DuoVero, but that's optional and definitely takes some time.

    James

  • I got the SD card working and Ubuntu running on the DuoVero. After that, I connected thought the serial terminal and brought up the network interface. I checked that I got a valid IP address. I wanted to ping another computer but I could not because ping is not included in the image. I pinged the DuoVero from my PC and it responded. Then, I used Vim to replace the content of the sources.list file with the one you provided, I imported the key for the PPA, I ran "apt-get update" and got an error about not being able to connect to the Ubuntu servers. I restored the contents of the file and got the same result. This is where I got stuck.

  • Manuel,

    I'm not sure but it may be a proxy issue?

    Another option you may want to try is to follow the instructions here (https://groups.google.com/forum/#!topic/pandaboard/vKunvhMNV8k) to export your proxy and add the TI OMAP PPA using

    $add-apt-repository ppa:tiomap-dev/release

    which I think does the same as adding the PPA manually to the sources.list file, but it's worth a try.

    James

  • I have no proxy. I will keep looking into the connectivity issues but the lack of network tools in the image makes it quite difficult.


    I will not be able to work on this until later in the week. I will keep you posted.

  • I know I said I was not going to work on this for a couple of days but my schedule changed.


    I found that ping was available in busybox so I confirmed that I have internet access. This takes me to what I told you some posts ago: the sources.list URLs may not be valid. Have you tested those lately?.

  • I have tested further and, as strange as it seems, it is HTTP what is not working. I cannot get any http resource using wget. I can connect to my computer from the the board using telnet (board) and ncat (computer) so TCP is working. DNS queries (nslookup) are also working. I have never seen anything like this before.


    I am going back to Yordan's proposal. I will post my findings.

  • Hi Manuel,

    That is strange that HTTP is not working.

    I used the same "sources.list" file that I posted earlier, and all the repositories were "hit". I have attached the log here below.

    1651.original-sources.list-sudo-apt-get-update.log

    One thing that I have done if the DuoVero isn't able to connect to the Internet is to "chroot" the SD card on my virtual machine, then using "sudo apt-get install ______", etc. I was then able to install anything I needed onto the SD card.

    Best of luck figuring out the HTTP problem and/or Yordan's proposal. Thanks for keeping us posted.

    James

  • Yordan, I am having difficulties building the modules. It would be great if you could help:

    I managed to build gstreamer but, when I try to build gst-plugins-base, i get this error: "http://pastebin.com/cx71L7hk"

    I tried to keep moving and build gst-plugins-good and got this error: "http://pastebin.com/SVmb99vB". This one might be related to the failure of gst-plugins-base.

    I thought that I might be missing a dependency so I tried to build libdce and got this one: "http://pastebin.com/9hZG7wsg"

    I am using these repositories, listed at "http://www.omappedia.com/wiki/GStream_Build_instructions":

    • git://gitorious.org/gstreamer-omap/gstreamer.git: v0.10.35+ti
    • git://gitorious.org/gstreamer-omap/gst-plugins-base.git: v0.10.35+ti
    • git://gitorious.org/gstreamer-omap/gst-plugins-good.git: v0.10.30+ti
    • git://gitorious.org/gstreamer-omap/gst-plugins-bad.git: v0.10.22+ti
    • git://gitorious.org/gstreamer-omap/gst-ducati.git: master
    • git://gitorious.org/gstreamer-omap/libdce.git: master

    I will try to build gst-ducati now and see what happens...