Blame NEWS

Packit 1244b8
libyami NEWS -- summary of changes.  2018-09-19
Packit 1244b8
Copyright (c) 2010, The WebM Project authors.
Packit 1244b8
Copyright (C) 2011-2018 Intel Corporation
Packit 1244b8
Copyright (C) 2015-2016 Alibaba
Packit 1244b8
Packit 1244b8
libyami 1.3.1(API:0.6.0) release, work with libva 2.2.1.pre1 release
Packit 1244b8
=====================
Packit 1244b8
Major improvements:
Packit 1244b8
+af43e95 h264dec: fix low lantecy mode
Packit 1244b8
+160286a Add flags for SDL signoff called SDL325 - Compile With Defenses Enabled
Packit 1244b8
+727db97 common: add RGB 10 bits support
Packit 1244b8
+46c15b1 common: add RGB565 support
Packit 1244b8
+946b7ac common: add XRGB, ARGB, XBGR, ABGR support
Packit 1244b8
+9e1fc1d android: re-enable android build
Packit 1244b8
+3745982 yamivpp: add rotation function for vpp
Packit 1244b8
Packit 1244b8
libyami 1.2.0(API:0.5.0) release, work with libva 1.8.1 release
Packit 1244b8
=====================
Packit 1244b8
Major improvements:
Packit 1244b8
+180c3d5 improve vp9 10 bit decoder conformance
Packit 1244b8
+8d29d2d improve h265 8/10 bit decoder conformance
Packit 1244b8
+5b09484 add decoder/display zero-copy API.
Packit 1244b8
+e46f03b use decoder/display zero copy API in v4l2 decoder
Packit 1244b8
+441ee54 expose vp9 qp setting to the user.
Packit 1244b8
Packit 1244b8
We change API to from 0.4.0 to 0.5.0 for following interface changes.
Packit 1244b8
+1fe162e get/set surface in SurfaceAllocParams
Packit 1244b8
+7560ce7 add VIDEO_DATA_MEMORY_TYPE_EXTERNAL_DMA_BUF
Packit 1244b8
Packit 1244b8
libyami 1.1.0(API:0.4.0) release, work with libva 1.7.3 release
Packit 1244b8
=====================
Packit 1244b8
We add following major features:
Packit 1244b8
+c8299ca add h265 10 bits decoder
Packit 1244b8
+ea3bc34 add vp9 10 bits decoder
Packit 1244b8
+c7364f0 add h265 10 bits encoder
Packit 1244b8
+3daae20 add Hue, Saturation, Brightness and Contrast to vpp
Packit 1244b8
+0c8299c fix memory leak issue in v4l2
Packit 1244b8
+71ec018 fix h264 baseline encoder fail issue
Packit 1244b8
+d39104d fix h264/h265 encoder generate invalid frame for long GOP
Packit 1244b8
-h265,vp9 10 bits conformance pass rate is not high.
Packit 1244b8
Packit 1244b8
Packit 1244b8
We change API from 0.3.2 to 0.4.0 since following interface change
Packit 1244b8
+7c6050b add enablePrefixNalUnit to h264 encoder
Packit 1244b8
+3daae20 add Hue, Saturation, Brightness and Contrast to vpp
Packit 1244b8
+c7364f0 add h265 10 bits encoder
Packit 1244b8
Packit 1244b8
libyami 1.0.1(API:0.3.2) release, work with libva 1.7.3 release
Packit 1244b8
=====================
Packit 1244b8
This release mainly for SVC-T CBR support.We add following features:
Packit 1244b8
+0a241d2 add h264 SVC-T CBR support. This need libva 1.7.3.
Packit 1244b8
+77ba612 fix h264/h265 nalread issue in 32 bits arch
Packit 1244b8
+2c1fcf3 h264parser: change luma_weight_lx from int8_t to int16_t to avoid overflow
Packit 1244b8
+e2a9e07 vp8parser: fix one decoder conformance issue.
Packit 1244b8
+fb83012 make yocto buildable
Packit 1244b8
+518088e add wireframe function to ocl filters
Packit 1244b8
+other small issues.
Packit 1244b8
Packit 1244b8
We change API from 0.3.0 to 0.3.2 since following interface change
Packit 1244b8
+518088e add wireframe function to ocl filters
Packit 1244b8
+0a241d2 add h264 SVC-T CBR support.
Packit 1244b8
Packit 1244b8
Packit 1244b8
libyami 1.0.0(API:0.3.0) release, work with libva 2016Q3 release
Packit 1244b8
=====================
Packit 1244b8
We add following major features:
Packit 1244b8
+ 7423a97 add vp9 encoder
Packit 1244b8
+ f6f1483 add sharpening, denoise, deinterlace for vpp
Packit 1244b8
+ 366d909 add support for 422H, 422V and 444P
Packit 1244b8
+ 2d4a536 add wayland support to v4l2decoder
Packit 1244b8
+ 784ea0f improve h264 encoder speed for memory limited system
Packit 1244b8
+ e57989f improve mpeg2 pass rate from 70% to 100%
Packit 1244b8
+ 112b921 improve vc1 pass rate from 70% to 92%
Packit 1244b8
+ 7f2e032 add profile setting for h264encoder
Packit 1244b8
+ some more encoder setting for h264 and h265
Packit 1244b8
+ more bugs fix and features please refer to git log
Packit 1244b8
- convert odd resolution from NV12 to I420 will make output yuv twisted
Packit 1244b8
- some unittest will failed.
Packit 1244b8
Packit 1244b8
We change API from 0.2.0 to 0.3.0 since following interface change
Packit 1244b8
9f45ee7 add vp9 encoder
Packit 1244b8
765cb6d add single header Yami.h/YamiC.h for user to include
Packit 1244b8
99b85bc map tr1 name space to std name space
Packit 1244b8
ea0b5fd add SVC-T support for h264 CQP mode
Packit 1244b8
366d909 add support for jpeg 422H, 422V and 444P
Packit 1244b8
2d4a536 add wayland support to v4l2decoder
Packit 1244b8
1b53e29 deleted some unused encoder API
Packit 1244b8
3147d36 enc264: implement I/P/B QP setting on CQP mode
Packit 1244b8
f6f1483 vpp: add denoise,sharpening and deinterlace
Packit 1244b8
Packit 1244b8
Packit 1244b8
Packit 1244b8
libyami 0.4.0 release, work with libva 2016Q2 release
Packit 1244b8
=====================
Packit 1244b8
We relicensed entire project from LGPL to Apache V2
Packit 1244b8
+add mpeg2 decoder
Packit 1244b8
+add vc1 decoder
Packit 1244b8
+merge all so to single libyami.so
Packit 1244b8
-mpeg2/vc1 pass conformance rate is 70%
Packit 1244b8
    fix patch should ready in near future.
Packit 1244b8
Packit 1244b8
Packit 1244b8
Packit 1244b8
libyami 0.3.1 release, work with libva 2015Q4 release
Packit 1244b8
=====================
Packit 1244b8
+b frame for h264 encoder
Packit 1244b8
+CBR for h265 encoder
Packit 1244b8
+yamitransocde application, it will do zero copy transcode, much faster than yamiencode
Packit 1244b8
+fix static library link issue
Packit 1244b8
+fix various issue in vaapidisplay, vp8dec, h264enc, h265enc, factory
Packit 1244b8
-transocde application will use default configuration, it did not use user set one.
Packit 1244b8
-if you use latest ffmpeg, vp9 decoder will failed for some clips.mentioned in #347.
Packit 1244b8
    it's not core library's issue. It's a yamidecode's issue.
Packit 1244b8
    You can use ffmpeg 2.6 as workaround.
Packit 1244b8
Packit 1244b8
Packit 1244b8
libyami 0.3.0 release, work with libva 2015Q3 release
Packit 1244b8
=====================
Packit 1244b8
+h265 decoder
Packit 1244b8
+h265 encoder
Packit 1244b8
+new mode -2 for yamidecode, it will output per frame md5 for decoded yuv
Packit 1244b8
+some bug fix for vp8,vp9,h264 conformance.
Packit 1244b8
+simplify configure.ac
Packit 1244b8
Packit 1244b8
libyami 0.2.5 release, work with libva 2015Q2 release
Packit 1244b8
=====================
Packit 1244b8
+update codec parser to latest version
Packit 1244b8
+fix all compile warnings.
Packit 1244b8
+add  CBR for h264 and vp8 encoder.
Packit 1244b8
+add "SharedPtr<VideoFrame> getOutput()" to decoder
Packit 1244b8
+fix one loop filter issue in vp8dec
Packit 1244b8
+1 bug in NativeDisplayDrm
Packit 1244b8
+handle annexb format codec data in h264 decoder
Packit 1244b8
+one “deref NULL” bug in v4l2 encoder.
Packit 1244b8
+self-register enc/dec/vpp with their factories.
Packit 1244b8
+add a simple player to demo decoder api usage(200 lines)
Packit 1244b8
+add grid application to demo MxN ways decode + dipslay
Packit 1244b8
+select driver name base on decoder profile
Packit 1244b8
Packit 1244b8
Packit 1244b8
libyami 0.2.4 release
Packit 1244b8
=====================
Packit 1244b8
+add vpp interface for c++
Packit 1244b8
+fix momory leak, uinitilized variable and invalid read reported by valgrind
Packit 1244b8
+3 bug fix for vp8 encoder.
Packit 1244b8
+.gitignore file
Packit 1244b8
+ update correct profile name for vp9 since libva updated.
Packit 1244b8
+fix "resolution changed in v4l2 egl mode makes yami crash" issue
Packit 1244b8
-decode output dump can't gusss output fourcc from file extension
Packit 1244b8
Packit 1244b8
Packit 1244b8
Packit 1244b8
libyami 0.2.3 release
Packit 1244b8
=====================
Packit 1244b8
+add VIDIOC_G_CROP to io ctrl
Packit 1244b8
+fix one ImagePtr leak issue, since ImagePtr hold DisplayPtr, it also leak VaapiDisplay
Packit 1244b8
Packit 1244b8
libyami 0.2.2 release
Packit 1244b8
=====================
Packit 1244b8
Packit 1244b8
features update
Packit 1244b8
---------------
Packit 1244b8
+fix one include issue in capi header
Packit 1244b8
+3 fixes for vp9 decoder and parser
Packit 1244b8
+use cabac as default entropy mode for h264 encoder
Packit 1244b8
+fix servral issues when we use v4l2 decoder in gles mode
Packit 1244b8
Packit 1244b8
libyami 0.2.1 release
Packit 1244b8
=====================
Packit 1244b8
the main target of this release is bug fix, especially the busy waiting issue.
Packit 1244b8
Packit 1244b8
features update
Packit 1244b8
---------------
Packit 1244b8
+fix one busy waiting bug in v4l2decoder.
Packit 1244b8
     -It will drain out cpu resource even we pause the video.
Packit 1244b8
+4 patches apply to fix vp9 conformance test.
Packit 1244b8
+add fakedec, it's good start for performance measure.
Packit 1244b8
+fix random crash bug when we use "yamidecoder -m -1"
Packit 1244b8
Packit 1244b8
libyami 0.2.0 release
Packit 1244b8
=====================
Packit 1244b8
Packit 1244b8
features update
Packit 1244b8
---------------
Packit 1244b8
+ add VP9 decoder
Packit 1244b8
+ add VP8 encoder
Packit 1244b8
+ add JPEG encoder
Packit 1244b8
+ add Demux support leverage libavformat,: --enable-avformat
Packit 1244b8
  - yamidecode runs ok when there is no xwindow rendering (-m -1/0)
Packit 1244b8
  - v4l2decode is ok when there is with or w/o rendering
Packit 1244b8
  - support libvaformat from the version installed in Ubuntu13.10
Packit 1244b8
  -	known issue: when there is video rendering, yamidecode blocks at
Packit 1244b8
    XGetWindowAttributes() after libva dlopen(i965_drv).
Packit 1244b8
    Add XInitThreads() make things worse. It is strange.
Packit 1244b8
+ Fps update for "-m -1", we get stable performance data now
Packit 1244b8
+ V4l2 fixes: seek, unconditionally stop
Packit 1244b8
+ enable FFmpeg to use libyami for h264 decoding, create example player to
Packit 1244b8
  demonstrate it, especially on rendering video as texture through dma_buf
Packit 1244b8
  https://github.com/01org/player-ffmpeg-yami
Packit 1244b8
Packit 1244b8
known issues
Packit 1244b8
---------------
Packit 1244b8
- for avformat support in yamidecode,  when there is video rendering,
Packit 1244b8
  yamidecode blocks at XGetWindowAttributes() after libva dlopen(i965_drv).
Packit 1244b8
  Add XInitThreads() make things worse. It is strange.
Packit 1244b8
  v4l2decode doesn't have such issue. (yamidecode is one thread application)
Packit 1244b8
Packit 1244b8
thoughts on libyami (media framework and window system support)
Packit 1244b8
--------------------------------------------------
Packit 1244b8
these points are not our priority yet.
Packit 1244b8
Packit 1244b8
+ Wayland support
Packit 1244b8
  We did a lot to support Wayland before:
Packit 1244b8
  - add Wayland platform support in libva and driver, does hack to
Packit 1244b8
    copy wayland-drm protocol from mesa/egl
Packit 1244b8
  - add Wayland platform in middleware, gstreamer-vaapi for example
Packit 1244b8
Packit 1244b8
  the detects are:
Packit 1244b8
  - so far, only plain rendering is supported: wl_surface_attach/wl_surface_damage;
Packit 1244b8
    texture video rendering is still a gap
Packit 1244b8
  - the shared wl_display/wl_window/wl_event_queue are complex and problematic
Packit 1244b8
Packit 1244b8
  it should be much easier with dma_buf.
Packit 1244b8
  We neend't do anything special for native window system in either vaapi driver or
Packit 1244b8
  codec library. with dma_buf handle exported, application can draw the video
Packit 1244b8
  frame (dma_buf) by EGL/GLES, EGL handle native window system automatically(including
Packit 1244b8
  wrap it into a wl_buffer internally).
Packit 1244b8
Packit 1244b8
+ GStreamer support
Packit 1244b8
  We usually do a lot on hw video buffer sharing in GStreamer, hw video buffer are
Packit 1244b8
  platform dependent, but the framework requires to wrap them in a generic way. we do
Packit 1244b8
  a lot in decoder to wrap a platform dependent handle into a subclass of base
Packit 1244b8
  video buffer, then unwrap it in video sink. and tries best to hide hw detail when
Packit 1244b8
  a sw component request to access the frame data.
Packit 1244b8
Packit 1244b8
  it becomes simple when hw codec support dma_buf, since dma_buf is Linux generic.
Packit 1244b8
  it is possible that hw video become not the 2nd class citizen any more. we don't
Packit 1244b8
  need additional wrapper in decoder side, and we don't need a special video sink
Packit 1244b8
  for each hw video type.
Packit 1244b8
Packit 1244b8
+ dma_buf rendering for legacy support
Packit 1244b8
  in the above ideas, we usually consider EGL/GLES rendering context, how about
Packit 1244b8
  legacy usage? it is simple as well.
Packit 1244b8
Packit 1244b8
  DRI3 protocol support dma_buf, it means a dma_buf handle can be sent to server
Packit 1244b8
  for window update. Keith said mesa is using it, and on server side glamor handle
Packit 1244b8
  the dma_buf. the remaining gap is that YUV buffer hasn't been supported yet, but
Packit 1244b8
  not hard to add it.
Packit 1244b8
Packit 1244b8
libyami 0.1.4 release
Packit 1244b8
=====================
Packit 1244b8
Packit 1244b8
features update
Packit 1244b8
---------------
Packit 1244b8
    -   Additional fixes(most are thread race condition) for v4l2 wrapper (egl/gles)
Packit 1244b8
    -   Add glx support in v4l2 wrapper
Packit 1244b8
    -   Basic transcoding support: encoder test accepts input data from decoder output
Packit 1244b8
    -   Testscript is added, it supports one-run-for-all: with a folder including h264/vp8/jpeg/raw-ref,
Packit 1244b8
        we can test them in one run. It serves as BAT (basic acceptance test) for pull request merge.
Packit 1244b8
    -   Report fps in decode test, support decoding only test (skip rendering)
Packit 1244b8
    -   Vp8/jpeg are supported in v4l2 decoder as well
Packit 1244b8
    -   Decode test can be built/run without X11
Packit 1244b8
    -   Code refinement for decoder test output and encoder classes
Packit 1244b8
    -   dma_buf fixes, when video frame is exported as dma_buf, it renders well as texture
Packit 1244b8
    -   with additional patch for chrome:
Packit 1244b8
        V4L2VDA/V4L2VEA pass chrome video unit test
Packit 1244b8
        video playback in browser draft ok
Packit 1244b8
    -   for v4l2 wrapper, see: https://github.com/halleyzhao/yami-share/blob/master/Yami_V4L2_wrapper_for_Chrome.pdf
Packit 1244b8
Packit 1244b8
known issues
Packit 1244b8
---------------
Packit 1244b8
    -   this release is fully tested by validation team
Packit 1244b8
    -   some jpeg file similarity <0.99 (~0.98) after decoding
Packit 1244b8
            https://github.com/01org/libyami/issues/108
Packit 1244b8
Packit 1244b8
future release plan:
Packit 1244b8
====================
Packit 1244b8
    Dec: v0.2
Packit 1244b8
        jpeg encoder
Packit 1244b8
        vp9 decoder
Packit 1244b8
        vp8 encoder (depends on driver availability)
Packit 1244b8
        initial ffmpeg support
Packit 1244b8
Packit 1244b8
    Feb'15: v0.3
Packit 1244b8
        unified input/output buffer of yami
Packit 1244b8
        transcoding support with unified input/output buffer
Packit 1244b8
        camera dma_buf support, camera with jpeg input
Packit 1244b8
        use yami in ffmpeg for hw codec
Packit 1244b8
Packit 1244b8
    Future:
Packit 1244b8
        h265 decoder
Packit 1244b8
Packit 1244b8
Packit 1244b8
Libyami 0.1 release note
Packit 1244b8
===========================
Packit 1244b8
Packit 1244b8
Libyami is core video library to accelerate decoding/encoding based on libva.
Packit 1244b8
Libyami can be treated as development kit for VAAPI. It is developed by C++ language, with simple/efficient APIs, without external dependencies.
Packit 1244b8
libyami targets two type of usage:
Packit 1244b8
    - Hardware accelerated codec is the major gap (there is existing media framework ), for example: Chromeos/Android, maybe ffmpeg.
Packit 1244b8
    - Usage is simple enough that codec is the major interest, for example: remote desktop client/server, video surveillance.
Packit 1244b8
So far H.264 decode/encode, VP8 and JPEG decode are supported. VP8/JPEG encode support is under development.
Packit 1244b8
Packit 1244b8
There are rich tests/examples in yami for a try. The tests can run without Window system (X11/Wayland etc),
Packit 1244b8
some modes of video output are supported: including raw data dump and some modes of texture (TFP, drm flink name, dma_buf).
Packit 1244b8
Packit 1244b8
More details see: https://github.com/01org/libyami/wiki
Packit 1244b8
Packit 1244b8
Known issues:
Packit 1244b8
    some jpeg file similarity <0.99 (~0.98) after decoding
Packit 1244b8
        https://github.com/01org/libyami/issues/108
Packit 1244b8
    playback performance through gst-omx is not good:
Packit 1244b8
        https://github.com/01org/libyami/issues/34
Packit 1244b8
    Encodeing quality through gst-omx is not good:
Packit 1244b8
        https://github.com/01org/libyami/issues/36
Packit 1244b8
Packit 1244b8
       legacy codec: mpeg2 decoder/encoder, vc1 decoder, mpeg4/h263 decoder/encoder