<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:SimSun;
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:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:SimSun;
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;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
span.EmailStyle18
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:windowtext;}
span.EmailStyle19
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-priority:99;
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";}
span.EmailStyle22
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@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"><span style="color:#1F497D">Besides some feature update,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - We created patches to use libyami in ffmpeg.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - I added some thoughts on Wayland, GStreamer support etc.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">If you have some interest, please read below.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Zhao, Halley
<br>
<b>Sent:</b> Friday, January 09, 2015 6:07 PM<br>
<b>To:</b> 'libyami@lists.01.org'<br>
<b>Cc:</b> Li, Jocelyn; Kelley, Sean V<br>
<b>Subject:</b> libyami 0.2.0 release<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">libyami 0.2.0 release<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">=====================<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">features update<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">---------------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ add VP9 decoder<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ add VP8 encoder<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ add JPEG encoder<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ add Demux support leverage libavformat,: --enable-avformat<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - yamidecode runs ok when there is no xwindow rendering (-m -1/0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - v4l2decode is ok when there is with or w/o rendering<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - support libvaformat from the version installed in Ubuntu13.10<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - known issue: when there is video rendering, yamidecode blocks at<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> XGetWindowAttributes() after libva dlopen(i965_drv).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> Add XInitThreads() make things worse. It is strange.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ Fps update for "-m -1", we get stable performance data now<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ V4l2 fixes: seek, unconditionally stop<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ enable FFmpeg to use libyami for h264 decoding, create example player to<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> demonstrate it, especially on rendering video as texture through dma_buf<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> <a href="https://github.com/01org/player-ffmpeg-yami">
https://github.com/01org/player-ffmpeg-yami</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">known issues<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">---------------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">- for avformat support in yamidecode, when there is video rendering,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> yamidecode blocks at XGetWindowAttributes() after libva dlopen(i965_drv).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> Add XInitThreads() make things worse. It is strange.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> v4l2decode doesn't have such issue. (yamidecode is one thread application)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">thoughts on libyami (media framework and window system support)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">--------------------------------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">these points are not our priority yet.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ Wayland support<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> We did a lot to support Wayland before:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - add Wayland platform support in libva and driver, does hack to<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> copy wayland-drm protocol from mesa/egl<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - add Wayland platform in middleware, gstreamer-vaapi for example<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> the detects are:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - so far, only plain rendering is supported: wl_surface_attach/wl_surface_damage;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> texture video rendering is still a gap<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> - the shared wl_display/wl_window/wl_event_queue are complex and problematic<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> it should be much easier with dma_buf.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> We needn't do anything special for native window system in either vaapi driver or<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> codec library. with dma_buf handle exported, application can draw the video
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> frame (dma_buf) by EGL/GLES, EGL handle native window system automatically(including<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> wrap it into a wl_buffer internally).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ GStreamer support<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> We usually do a lot on hw video buffer sharing in GStreamer, hw video buffer are<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> platform dependent, but the framework requires to wrap them in a generic way. we do<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> a lot in decoder to wrap a platform dependent handle into a subclass of base<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> video buffer, then unwrap it in video sink. and tries best to hide hw detail when<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> a sw component request to access the frame data.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> it becomes simple when hw codec support dma_buf, since dma_buf is Linux generic.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> it is possible that hw video become not the 2nd class citizen any more. we don't<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> need additional wrapper in decoder side, and we don't need a special video sink<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> for each hw video type.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">+ dma_buf rendering for legacy support<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> in the above ideas, we usually consider EGL/GLES rendering context, how about<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> legacy usage? it is simple as well.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> DRI3 protocol support dma_buf, it means a dma_buf handle can be sent to server<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> for window update. Keith said mesa is using it, and on server side glamor handle<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> the dma_buf. the remaining gap is that YUV buffer hasn't been supported yet, but<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"> not hard to add it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Zhao, Halley
<br>
<b>Sent:</b> Friday, November 28, 2014 2:26 PM<br>
<b>To:</b> <a href="mailto:libyami@lists.01.org">libyami@lists.01.org</a><br>
<b>Cc:</b> Li, Jocelyn; Kelley, Sean V<br>
<b>Subject:</b> libyami 0.1.4 release<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">libyami 0.1.4 release<o:p></o:p></p>
<p class="MsoNormal">=====================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">features update<o:p></o:p></p>
<p class="MsoNormal">---------------<o:p></o:p></p>
<p class="MsoNormal"> - Additional fixes(most are thread race condition) for v4l2 wrapper (egl/gles)<o:p></o:p></p>
<p class="MsoNormal"> - Add glx support in v4l2 wrapper<o:p></o:p></p>
<p class="MsoNormal"> - Basic transcoding support: encoder test accepts input data from decoder output<o:p></o:p></p>
<p class="MsoNormal"> - Testscript is added, it supports one-run-for-all: with a folder including h264/vp8/jpeg/raw-ref,<o:p></o:p></p>
<p class="MsoNormal"> we can test them in one run. It serves as BAT (basic acceptance test) for pull request merge.<o:p></o:p></p>
<p class="MsoNormal"> - Report fps in decode test, support decoding only test (skip rendering)<o:p></o:p></p>
<p class="MsoNormal"> - Vp8/jpeg are supported in v4l2 decoder as well<o:p></o:p></p>
<p class="MsoNormal"> - Decode test can be built/run without X11<o:p></o:p></p>
<p class="MsoNormal"> - Code refinement for decoder test output and encoder classes<o:p></o:p></p>
<p class="MsoNormal"> - dma_buf fixes, when video frame is exported as dma_buf, it renders well as texture<o:p></o:p></p>
<p class="MsoNormal"> - with additional patch for chrome:<o:p></o:p></p>
<p class="MsoNormal"> V4L2VDA/V4L2VEA pass chrome video unit test<o:p></o:p></p>
<p class="MsoNormal"> video playback in browser draft ok<o:p></o:p></p>
<p class="MsoNormal"> - for v4l2 wrapper, see: <a href="https://github.com/halleyzhao/yami-share/blob/master/Yami_V4L2_wrapper_for_Chrome.pdf">
https://github.com/halleyzhao/yami-share/blob/master/Yami_V4L2_wrapper_for_Chrome.pdf</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">known issues<o:p></o:p></p>
<p class="MsoNormal">---------------<o:p></o:p></p>
<p class="MsoNormal"> - this release has been fully tested by validation team<o:p></o:p></p>
<p class="MsoNormal"> - some jpeg file similarity <0.99 (~0.98) after decoding<o:p></o:p></p>
<p class="MsoNormal"> <a href="https://github.com/01org/libyami/issues/108">
https://github.com/01org/libyami/issues/108</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">future release plan:<o:p></o:p></p>
<p class="MsoNormal">====================<o:p></o:p></p>
<p class="MsoNormal"> Dec: v0.2<o:p></o:p></p>
<p class="MsoNormal"> jpeg encoder<o:p></o:p></p>
<p class="MsoNormal"> vp9 decoder<o:p></o:p></p>
<p class="MsoNormal"> vp8 encoder (depends on driver availability)<o:p></o:p></p>
<p class="MsoNormal"> initial ffmpeg support<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> Feb'15: v0.3<o:p></o:p></p>
<p class="MsoNormal"> unified input/output buffer of yami<o:p></o:p></p>
<p class="MsoNormal"> transcoding support with unified input/output buffer<o:p></o:p></p>
<p class="MsoNormal"> camera dma_buf support, camera with jpeg input<o:p></o:p></p>
<p class="MsoNormal"> use yami in ffmpeg for hw codec<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> Future:<o:p></o:p></p>
<p class="MsoNormal"> h265 decoder<o:p></o:p></p>
</div>
</div>
</body>
</html>