<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>