<div dir="ltr"><div><div>Hi, I saw the battle between you and ffmpeg developers, whats the latest status on this, is the ffmpeg patch available somewhere that I could try out? <br><br></div>Thanks<br><br></div>Ratin<br><div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 9, 2015 at 2:09 AM, Zhao, Halley <span dir="ltr"><<a href="mailto:halley.zhao@intel.com" target="_blank">halley.zhao@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div link="blue" vlink="purple" lang="EN-US">
<div>
<p class="MsoNormal"><span style="color:#1f497d">Besides some feature update,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - We created patches to use libyami in ffmpeg.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - I added some thoughts on Wayland, GStreamer support etc.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">If you have some interest, please read below.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></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> '<a href="mailto:libyami@lists.01.org" target="_blank">libyami@lists.01.org</a>'<br>
<b>Cc:</b> Li, Jocelyn; Kelley, Sean V<br>
<b>Subject:</b> libyami 0.2.0 release<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><span style="color:#1f497d">libyami 0.2.0 release<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">=====================<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">features update<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">---------------<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ add VP9 decoder<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ add VP8 encoder<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ add JPEG encoder<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ add Demux support leverage libavformat,: --enable-avformat<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - yamidecode runs ok when there is no xwindow rendering (-m -1/0)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - v4l2decode is ok when there is with or w/o rendering<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - support libvaformat from the version installed in Ubuntu13.10<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - known issue: when there is video rendering, yamidecode blocks at<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> XGetWindowAttributes() after libva dlopen(i965_drv).<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> Add XInitThreads() make things worse. It is strange.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ Fps update for "-m -1", we get stable performance data now<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ V4l2 fixes: seek, unconditionally stop<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ enable FFmpeg to use libyami for h264 decoding, create example player to<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> demonstrate it, especially on rendering video as texture through dma_buf<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> <a href="https://github.com/01org/player-ffmpeg-yami" target="_blank">
https://github.com/01org/player-ffmpeg-yami</a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">known issues<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">---------------<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">- for avformat support in yamidecode, when there is video rendering,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> yamidecode blocks at XGetWindowAttributes() after libva dlopen(i965_drv).<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> Add XInitThreads() make things worse. It is strange.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> v4l2decode doesn't have such issue. (yamidecode is one thread application)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">thoughts on libyami (media framework and window system support)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">--------------------------------------------------<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">these points are not our priority yet.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ Wayland support<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> We did a lot to support Wayland before:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - add Wayland platform support in libva and driver, does hack to<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> copy wayland-drm protocol from mesa/egl<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - add Wayland platform in middleware, gstreamer-vaapi for example<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> the detects are:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - so far, only plain rendering is supported: wl_surface_attach/wl_surface_damage;<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> texture video rendering is still a gap<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> - the shared wl_display/wl_window/wl_event_queue are complex and problematic<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> it should be much easier with dma_buf.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> We needn't do anything special for native window system in either vaapi driver or<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> codec library. with dma_buf handle exported, application can draw the video
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> frame (dma_buf) by EGL/GLES, EGL handle native window system automatically(including<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> wrap it into a wl_buffer internally).<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ GStreamer support<u></u><u></u></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<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> platform dependent, but the framework requires to wrap them in a generic way. we do<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> a lot in decoder to wrap a platform dependent handle into a subclass of base<u></u><u></u></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<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> a sw component request to access the frame data.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> it becomes simple when hw codec support dma_buf, since dma_buf is Linux generic.<u></u><u></u></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<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> need additional wrapper in decoder side, and we don't need a special video sink<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> for each hw video type.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d">+ dma_buf rendering for legacy support<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> in the above ideas, we usually consider EGL/GLES rendering context, how about<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> legacy usage? it is simple as well.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></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<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> for window update. Keith said mesa is using it, and on server side glamor handle<u></u><u></u></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<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"> not hard to add it.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:#1f497d"><u></u> <u></u></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" target="_blank">libyami@lists.01.org</a><br>
<b>Cc:</b> Li, Jocelyn; Kelley, Sean V<br>
<b>Subject:</b> libyami 0.1.4 release<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">libyami 0.1.4 release<u></u><u></u></p>
<p class="MsoNormal">=====================<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">features update<u></u><u></u></p>
<p class="MsoNormal">---------------<u></u><u></u></p>
<p class="MsoNormal"> - Additional fixes(most are thread race condition) for v4l2 wrapper (egl/gles)<u></u><u></u></p>
<p class="MsoNormal"> - Add glx support in v4l2 wrapper<u></u><u></u></p>
<p class="MsoNormal"> - Basic transcoding support: encoder test accepts input data from decoder output<u></u><u></u></p>
<p class="MsoNormal"> - Testscript is added, it supports one-run-for-all: with a folder including h264/vp8/jpeg/raw-ref,<u></u><u></u></p>
<p class="MsoNormal"> we can test them in one run. It serves as BAT (basic acceptance test) for pull request merge.<u></u><u></u></p>
<p class="MsoNormal"> - Report fps in decode test, support decoding only test (skip rendering)<u></u><u></u></p>
<p class="MsoNormal"> - Vp8/jpeg are supported in v4l2 decoder as well<u></u><u></u></p>
<p class="MsoNormal"> - Decode test can be built/run without X11<u></u><u></u></p>
<p class="MsoNormal"> - Code refinement for decoder test output and encoder classes<u></u><u></u></p>
<p class="MsoNormal"> - dma_buf fixes, when video frame is exported as dma_buf, it renders well as texture<u></u><u></u></p>
<p class="MsoNormal"> - with additional patch for chrome:<u></u><u></u></p>
<p class="MsoNormal"> V4L2VDA/V4L2VEA pass chrome video unit test<u></u><u></u></p>
<p class="MsoNormal"> video playback in browser draft ok<u></u><u></u></p>
<p class="MsoNormal"> - for v4l2 wrapper, see: <a href="https://github.com/halleyzhao/yami-share/blob/master/Yami_V4L2_wrapper_for_Chrome.pdf" target="_blank">
https://github.com/halleyzhao/yami-share/blob/master/Yami_V4L2_wrapper_for_Chrome.pdf</a><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">known issues<u></u><u></u></p>
<p class="MsoNormal">---------------<u></u><u></u></p>
<p class="MsoNormal"> - this release has been fully tested by validation team<u></u><u></u></p>
<p class="MsoNormal"> - some jpeg file similarity <0.99 (~0.98) after decoding<u></u><u></u></p>
<p class="MsoNormal"> <a href="https://github.com/01org/libyami/issues/108" target="_blank">
https://github.com/01org/libyami/issues/108</a><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">future release plan:<u></u><u></u></p>
<p class="MsoNormal">====================<u></u><u></u></p>
<p class="MsoNormal"> Dec: v0.2<u></u><u></u></p>
<p class="MsoNormal"> jpeg encoder<u></u><u></u></p>
<p class="MsoNormal"> vp9 decoder<u></u><u></u></p>
<p class="MsoNormal"> vp8 encoder (depends on driver availability)<u></u><u></u></p>
<p class="MsoNormal"> initial ffmpeg support<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"> Feb'15: v0.3<u></u><u></u></p>
<p class="MsoNormal"> unified input/output buffer of yami<u></u><u></u></p>
<p class="MsoNormal"> transcoding support with unified input/output buffer<u></u><u></u></p>
<p class="MsoNormal"> camera dma_buf support, camera with jpeg input<u></u><u></u></p>
<p class="MsoNormal"> use yami in ffmpeg for hw codec<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"> Future:<u></u><u></u></p>
<p class="MsoNormal"> h265 decoder<u></u><u></u></p>
</div>
</div>
</div>
<br>_______________________________________________<br>
Libva mailing list<br>
<a href="mailto:Libva@lists.freedesktop.org">Libva@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/libva" target="_blank">http://lists.freedesktop.org/mailman/listinfo/libva</a><br>
<br></blockquote></div><br></div>