cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

patch1
Journeyman III

Avivo /Unified Video Decoder application programming interface

Across multiple operating systems

I'm looking for programming information to enable graphics card hardware acceleration of video decoding. I'm aware it can be done via directX 10 but that is limited to vista, so not useful.


This thread suggest the information is not publicly available http://forum.videolan.org/viewtopic.php?f=2&t=42328&start=15

Looking on the AMD site I could find only information on the normal graphics processor. Perhaps I'm just looking in the wrong places.

0 Likes
9 Replies
patch1
Journeyman III

Given the lack of response, I assume that means there is no publically available interface to the Unified Video Decoder application programming interface unless you go via Vista.

Pitty AMD restricts their market that much.

BTW, incase anyone else is also looking for how to actually use the Avivo hardware on a non Vista machine, a good place to start is http://en.wikipedia.org/wiki/AVIVO & http://www.expreview.com/

0 Likes

I would also like to be able to use the hardware video decoder from Linux.  Has any additional information been released on this?

0 Likes

Originally posted by: donpellegrino I would also like to be able to use the hardware video decoder from Linux.


What are you hoping to use the video decoder for?

If it is for independent data processing it maybe worth having a look at openCL.

If it is for video card acceleration of local movie display you probably want openMax rather than openGL but unfortunately my understanding was AMD don't have drivers for openMax.

BTW, There are several useful references in this thread http://forum.videolan.org/viewtopic.php?f=2&t=9647

0 Likes

I was hoping specifically for video card acceleration of local movie display.  I guess it doesn't matter if the call is though OpenMAX, OpenCL or OpenGL although OpenMAX does seems to be the most appropriate API for this functionality.

I am currently using ATI's OpenGL library and kernel module for Linux but with the MESA headers (I couldn't find any headers or man pages from ATI to go along with their library).  It seems like the path of least resistance might have been for ATI to expose the Avivo functionality as a custom OpenGL extension in their library and provide a header and man page for it.  Alternatively an ATI library (aka driver) for OpenMAX with a set of headers and man pages for it would be good too.

For all I know Avivo is already exposed in ATI's Linux libGL as an extension but I am just lacking the header with calling signature to take advantage of it.  Did they provide a special separate lib and headers for Avivo on Windows or was it implemented as an extension to OpenGL?

0 Likes

Originally posted by: donpellegrino I was hoping specifically for video card acceleration of local movie display.  I guess it doesn't matter if the call is though OpenMAX, OpenCL or OpenGL although OpenMAX does seems to be the most appropriate API for this functionality.


Agree

I am currently using ATI's OpenGL library and kernel module for Linux but with the MESA headers (I couldn't find any headers or man pages from ATI to go along with their library).


Maybe my understanding is incorrect but I  thought openMax provided a level of abstraction beyond ATI (hypothetical) driver interface to it http://www.celinux.org/elc08_presentations/gst-openmax.pdf

So I suspect you want acces to an openMax library as well as ATI interfacing to the library. I could be wrong though.

It seems like the path of least resistance might have been for ATI to expose the Avivo functionality as a custom OpenGL extension in their library and provide a header and man page for it.


I suspect protection of trade secrets and possibly limitation of public access to Digital rights management decription algorithmns, are the reason ATI & NIVIDA don't do that.

Alternatively an ATI library (aka driver) for OpenMAX with a set of headers and man pages for it would be good too.


Or XvMC via their XvBA API may help http://www.phoronix.com/scan.php?page=article&item=amd_xvmc_xvba&num=1

For all I know Avivo is already exposed in ATI's Linux libGL as an extension but I am just lacking the header with calling signature to take advantage of it.  Did they provide a special separate lib and headers for Avivo on Windows or was it implemented as an extension to OpenGL?


I believe it is done via DirectX 10 in Vista or software developers signing non-disclosure agreements. There is a list of examples here http://en.wikipedia.org/wiki/AVIVO

0 Likes

Thanks for the detailed reply patch1.  Your knowledge of Avivo on Linux is impressive.  Based on XvMC/XvBA article referenced it seems like those APIs are the target for exposing the Avivo functionality, specifically via libAMDXvBA.so.1.o and libXvBAW.so.1.o.  I wonder how difficult it would be to put some sample code together that makes use of CreateUVDCommand, CreateUVDBufferPool, CreateUVDConfig, RegisterUVDClient, UVDSession, etc.

For ATI to get the most out of this great effort it might be good for them to put an example program on the developer site which can read a video file and pass it to UVD for playback.  This would be really helpful for the Mplayer, VLC, Gstreamer, etc coders to work the right modules into the players.  If you agree that I have interpreted this correctly maybe we could put an email into ATI for such a request.

0 Likes

Don't think I agree with your assessment of my abilities but the rest of your logic appears sound to me.

I was hoping AMD was monitoring their forum and would respond, but perhaps that is not how they work.

0 Likes

As I learn more about AVIVO on Linux I have some encouraging notes.  The X-Video Extension does appear to recognize AVIVO with the ATI driver installed:

$ xvinfo
X-Video Extension version 2.2
screen #0
  Adaptor #0: "ATI Radeon AVIVO Video"
    number of ports: 4
    port base: 131
    operations supported: PutImage
    supported visuals:
...

I compared "mplayer -vo xv" to other video output drivers and X-Video does have much lower CPU utilization that the alternatives.  Based on this it seems that I am getting a nice performance benefit from the GPU.

The next level of optimization might be to use X-Video Motion Compensation ("mplayer -vo xvmc").  The X log reports that xvmc is loaded:

$ cat /var/log/Xorg.0.log | grep Motion
(II) Loading extension XVideo-MotionCompensation

Although X reports XVideo-MotionCompensation is available mplayer reports that it is not:

$ mplayer -vo xvmc ...
vo_xvmc: X-Video extension 2.2
vo_xvmc: No X-Video MotionCompensation Extension on :0.0
Error opening/initializing the selected video_out (-vo) device.

This is a curious contradiction.

0 Likes

Hello, 

I would know the name of API in Windows for decode video for ATI Radeon, in Linux the name is "X-Video Bitstream Acceleration".

Also I would know the functionalities of this API for Windows.

Thanks for Advance.

 

 

 

0 Likes