<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:\5B8B\4F53;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@\5B8B\4F53";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi All!<o:p></o:p></p><p class=MsoNormal>I have downloaded the Hardware video decoding acceleration demo codes of VA API from freedesktop.org.<o:p></o:p></p><p class=MsoNormal>Since this codes decodes one H.264 I frame only,  I repeat decoding process of this I frame as 100000 times in<o:p></o:p></p><p class=MsoNormal>order to get its CPU usage.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Detail changes as following black codes in vaapi.c in function of vaapi_decode(), however, the cpu usage is still about 50%, <o:p></o:p></p><p class=MsoNormal>which means that hardware is not effective to decode h.264 stream. Meanwhile, I can use Mplayer with VAAPI to decode H.264 HD mp4 file ,<o:p></o:p></p><p class=MsoNormal>whose CPU usage is only 2-4%.  My hardware environment is Intel Core I7-3610QM and HD graphics 4000,  and software is Ubuntu 12.10, libva 1.0.0.15<o:p></o:p></p><p class=MsoNormal>and vaapi intel driver 1.0.17.<o:p></o:p></p><p class=MsoNormal>So I want to know How can change example codes to verify VA API hardware acceleration ?   <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>int vaapi_decode(void)<o:p></o:p></p><p class=MsoNormal>{<o:p></o:p></p><p class=MsoNormal>    VAAPIContext * const vaapi = vaapi_get_context();<o:p></o:p></p><p class=MsoNormal>    VABufferID va_buffers[3];<o:p></o:p></p><p class=MsoNormal>    unsigned int n_va_buffers = 0, <b>i</b> ;<o:p></o:p></p><p class=MsoNormal>    VAStatus status;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    if (!vaapi || vaapi->context_id == 0 || vaapi->surface_id == 0)<o:p></o:p></p><p class=MsoNormal>        return -1;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    if (commit_slices(vaapi) < 0)<o:p></o:p></p><p class=MsoNormal>        return -1;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    vaUnmapBuffer(vaapi->display, vaapi->pic_param_buf_id);<o:p></o:p></p><p class=MsoNormal>    va_buffers[n_va_buffers++] = vaapi->pic_param_buf_id;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    if (vaapi->iq_matrix_buf_id) {<o:p></o:p></p><p class=MsoNormal>        vaUnmapBuffer(vaapi->display, vaapi->iq_matrix_buf_id);<o:p></o:p></p><p class=MsoNormal>        va_buffers[n_va_buffers++] = vaapi->iq_matrix_buf_id;<o:p></o:p></p><p class=MsoNormal>    }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    if (vaapi->bitplane_buf_id) {<o:p></o:p></p><p class=MsoNormal>        vaUnmapBuffer(vaapi->display, vaapi->bitplane_buf_id);<o:p></o:p></p><p class=MsoNormal>        va_buffers[n_va_buffers++] = vaapi->bitplane_buf_id;<o:p></o:p></p><p class=MsoNormal>    }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-indent:9.0pt'><b>for(i = 0; i<100000;i++)<o:p></o:p></b></p><p class=MsoNormal style='text-indent:9.0pt'><b>{<o:p></o:p></b></p><p class=MsoNormal>           status = vaBeginPicture(vaapi->display, vaapi->context_id,<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>                            vaapi->surface_id);<o:p></o:p></p><p class=MsoNormal>           if (!vaapi_check_status(status, "vaBeginPicture()"))<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>        return -1;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal>          status = vaRenderPicture(vaapi->display, vaapi->context_id,<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>                             va_buffers, n_va_buffers);<o:p></o:p></p><p class=MsoNormal>          if (!vaapi_check_status(status, "vaRenderPicture()"))<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>        return -1;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal>         status = vaRenderPicture(vaapi->display, vaapi->context_id,<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>                             vaapi->slice_buf_ids,<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>                             vaapi->n_slice_buf_ids);<o:p></o:p></p><p class=MsoNormal>         if (!vaapi_check_status(status, "vaRenderPicture()"))<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>        return -1;<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal>         status = vaEndPicture(vaapi->display, vaapi->context_id);<o:p></o:p></p><p class=MsoNormal>         if (!vaapi_check_status(status, "vaEndPicture()"))<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'>        return -1;<o:p></o:p></p><p class=MsoNormal><b>   }<o:p></o:p></b></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    if (getimage_mode() == GETIMAGE_FROM_VIDEO)<o:p></o:p></p><p class=MsoNormal>        return vaapi_decode_to_image();<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    return 0;<o:p></o:p></p><p class=MsoNormal>} <o:p></o:p></p><p class=MsoNormal>Regards<o:p></o:p></p><p class=MsoNormal>Sean<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>