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.

HDVICP API

I have an application that does high-speed block matching on a frame-to-frame basis on video that I am trying to embed. Looking at potential processors, I see the DaVinci processor has many hardware-supported functions that would greatly accelerate the processing for my application, specifically, the HDVICP block. Ideally, my application would take a macroblock of fixed size and generate motion vectors for each macroblock based on SAD; this happens to be one of the primary functions of the HDVICP block, however it looks like that aspect can only be accessed when doing video encoding (judging from the SDK's API). Although accessing the motion vectors from the MPEG4 encoder codec (which appears to be possible) would be an acceptable solution, it adds a dimension of complexity that doesn't need to be there - does there exist some library or function call I have overlooked that performs just the block matching/motion estimation aspect of the encoding step?

  • Hi Dane,

    You can find block matching functions provided to enable high performance motion estimation algorithms that are used in applications such as MPEG Video Encode or H.26x Encode in the C64XPLUS-IMGLIB packet which can be downloaded from:
    http://www.ti.com/tool/sprc264
    After installing the packet you can find description in the TMS320C64x+ DSP Image/Video Processing Library (v2.0.1) programmer's guide - ../docs/SPRUF30A.pdf .

    BR
    Tsvetolin Shulev
  • Hello!

    Thanks for the response - I did find that library, though the only functions I saw that pertained to high-speed motion estimation were SAD and MAD block differencing algorithms, which are very important for block matching, but doesn't do the block matching itself - essentially, they allow very fast evaluation of a potential match (if the C code equivalent in the brief is to be believed). What I am really looking for (and what I believe the HDVICP's motion estimation acceleration engine provides - if not, then I may be barking up the wrong tree) is a full motion vector field between two images based on either SAD or MAD. I guess my question is a more basic one - does the motion acceleration engine just do high-speed evaluation of a single macroblock against an image patch of the same size, or does it evaluate the lowest-cost displacement of a macroblock against a larger image patch, or does it do evaluation of many macroblocks against the entire image?

    Thanks,

    Sparks