h264, vp8 encoding on beagleboard

Hi,

My familiarity with DaVinci product family is very low, so bear with my naive questions. Also, I am only evaluating whether to go for Beagleboard or another board, and don’t yet have one.
Has someone attempted h264 & vp8 encoding and decoding on Beagleboard, for live streaming over say RTP ? I did find mention of h264/vp8 decoding, and google’s arm7 vp8 codec being okay for 360p but not for 720p, but my question is around encoding.
Is the h264 & vp8 encoding on Beagleboard use the DSP or on the MCU/CPU? In the Freescale i.MX series, some families use a HW encoder/decoder, which offloads much of the task from CPU.
Idea is to see how much CPU horsepower is available on the Beagleboard, during such encoding process. Is there any hope of running some computer vision algos (which are computationally intensive) in parallel ?
Does someone have data on what frame-size and frame-rate is achievable for h264 / vp8 encoding (& decoding) on Beagleboard ?

Also, if used in a commercial application, does the developer/seller have to pay license-fees/royalties for use of h264, or is this something TI covers ?
Read a comment in an earlier post, that for the vp8 dsp codec, one needs to pay (significant!) license-fees. Can someone confirm / deny this ?

Appreciate some clarity around this.

regards,
Jay

Hi Jay,

Has someone attempted h264 & vp8 encoding and decoding on Beagleboard, for
live streaming over say RTP ?

I am working on the project where we are using BeagleBoard (BB) for
live h264 encoding and streaming (http://veter-project.blogspot.com).
However, I did not try vp8 because I am not aware about DSP
accelerated vp8 implementation for BB (would also appreciate any
references if I overlooked it). So the answers below are only about my
experience with h264 encoding.

I did find mention of h264/vp8 decoding, and
google's arm7 vp8 codec being okay for 360p but not for 720p, but my
question is around encoding.
Is the h264 & vp8 encoding on Beagleboard use the DSP or on the MCU/CPU?

There is h264 encoder from TI which is using DSP. I've never heard
about vp8 encoder though.

Idea is to see how much CPU horsepower is available on the Beagleboard,
during such encoding process. Is there any hope of running some computer
vision algos (which are computationally intensive) in parallel ?
Does someone have data on what frame-size and frame-rate is achievable for
h264 / vp8 encoding (& decoding) on Beagleboard ?

I am using Gstreamer with gstreamer-ti plugins for encoding. I did not
made precise measurements but very rough estimations based on my
observations are the following. If there is no need for colorspace
conversion, i.e. if video grabber or camera can provide the UYVY raw
frames (the only colorspace supported by TI's DSP accelerated encoder
on BB), then it is possible to encode 320x240@30fps with about 50-60%
CPU load. Standard PAL resolution would also work but with slightly
higher CPU load (about 70%). As I remember 640x480 was driving the
load up to almost 100%. If you will need to do the colorspace
conversion, then you can add 10-15% load to the numbers above (because
it is done on CPU). But again, please take these numbers with the
grain of salt. They are just my rough observations and not a precise
measurements.

Speaking about computer vision - OpenCV works fine on BB but pretty
slow because it does not use DSP. There is google summer of code
project where the guys were trying to reimplement some core algorithms
using DSP but I do not know a lot about final performance improvements
they were able to achieve. What might be interesting in your case is
the DSP accelerated image processing library from TI:

. It provides basic building blocks such as for example edge
detection, fft, etc.

Also, if used in a commercial application, does the developer/seller have to
pay license-fees/royalties for use of h264, or is this something TI covers ?
Read a comment in an earlier post, that for the vp8 dsp codec, one needs to
pay (significant!) license-fees. Can someone confirm / deny this ?

Sorry, but I can not comment on this. Have no idea about all this
licensing staff.

HTH,
Andrey.

Hi Andrey,

Thanks for a very informative response. In fact until visiting the veter-project link, I was hoping that your benchmarks (even rough) are from a pre-xM Beagleboard, and that xM would provide some extra headroom, but figured that the VGA level performance you see is indeed CPU saturation on xM. There’s quite a bit of very useful information on veter-project site, thanks for the links. Good luck with your project(s).

regards,
Jay

Hi,

Has someone attempted h264 & vp8 encoding and decoding on Beagleboard,

you can encode/decode H264 BP at VGA resolution using the free codecs
provided by TI on the dsp.

for live streaming over say RTP ? I did find mention of h264/vp8
decoding, and google's arm7 vp8 codec being okay for 360p but not for
720p, but my question is around encoding.

you can decode VP8 360p-480p on the ARM, there is no DSP VP8 codec for
the omap3 and it is very unlikely that there will ever be one.

Is the h264 & vp8 encoding on Beagleboard use the DSP or on the MCU/CPU?

h264 can use the GPP or the DSP, VP8 is GPP only.

during such encoding process. Is there any hope of running some computer
vision algos (which are computationally intensive) in parallel ?

if you encode H264 on the DSP, you have all the GPP free to do other
stuff

Also, if used in a commercial application, does the developer/seller
have to pay license-fees/royalties for use of h264, or is this something
TI covers ?

check the licencing terms on the free DSP codecs that TI provides.
though I think you always need to cover the H264 patent royalties
yourself for commercial use.

Read a comment in an earlier post, that for the vp8 dsp codec, one needs
to pay (significant!) license-fees. Can someone confirm / deny this ?

there is no VP8 dsp codec

Thank you, Vladimir. That was precisely the kind of information I was looking for.