Releases: wang-bin/mdk-sdk
Releases · wang-bin/mdk-sdk
Release Version 0.6.1
- Improve D3D11 renderer, more pixel formats
- Player.snapshot() supports saving to file
- Support QSV decoder via DXVA2, and 0-copy rendering
- Subtitle WIP.
- Encoder WIP.
- Fix endless wait in loop mode
- Environment var name change: GL_MMAL_FORMAT=>MMAL_GL_FORMAT, GL_VAAPI=>VAAPI_GL, GL_VDPAU=>VDPAU_GL
Release Version 0.6.0
- D3D11 Renderer: now has almost the same features as OpenGL renderer
- HDR tone mapping support
- Support UWP.
ICoreWindow
orISwapchainPanel
can be used as the surface ofPlayer.updateNativeSurface()
- Zero copy rendering for hardware decoders, including d3d11, dxva2 and cuda based decoders.
- Add env vars "SWAPCHAIN_BUFFERS", "DXGI_ADAPTER_RENDER" and "GPU_DEBUG" to control swap chain buffers adapter index and debug layer
- Support feature level 9.1~12.1(default), controlled by env "D3D_FEATURE_LEVEL_RENDER"
- Save and restore pipeline states before and after rendering
- Support foreign context provided by user via
Player.setRenderAPI()
,D3D11RenderAPI.context
andD3D11RenderAPI.rtv
must be provided - Remove restriction of calling
Player.setRenderAPI()
before any other apis havevo_opaque
parameter.updateNativeSurface()
still have to be called aftersetRenderAPI()
- Support more pixel formats, including nv12, p010 etc. Packed formats with 3 channels are not supported by d3d11 without cpu convertion, leaves them as unsupported.
- MFT: decoder device feature level can be set by property "feature_level"
- Reduce cpu load on pause
- Range loop: fix seek to A failure
- macOS:
- Fix ui apis called on non-ui thread when creating CGL context(crash on macOS 10.15+)
- Weak link to libffmpeg.4.dylib because macOS 10.15+ disallow dlopen. also can be replaced by user provided ffmpeg libraries(avutil, avcodec etc.) at runtime via
SetGlobalOption("avutil", (void*)handle)
- FFmpeg:
- Set ffmpeg module handle via
SetGlobalOption("name", (void*)handle)
, where name is avutil, avcodec, avformat etc. - Fix crash if custom ffmpeg libraries are not complete. Required modules are "avutil", "avformat", "avcodec"
- D3D11 decoder improve
- Fix VAAPI seek crash cause by wrong ref count
- Set ffmpeg module handle via
release version 0.5.0
- ABI Changes:
- PrepareCallback return type change in Player.prepare()
- Player.snapshot() callback return type change. Return a file path to save as file(not implemented yet)
- Add SeekFlag for prepare(), setNextMedia() and gaplessSwitch()
- APIs Changes:
- Add RenderAPI.h: provides necessary informations to use a graphics api other than OpenGL
- Add Player.setRenderAPI(): select platform graphics api for video rendering. Now OpenGL(default) and D3D11 are supported.
- Add version macros
- New Features:
- Experimental D3D11 rendering support. Now can render frames from software decoders. Color is not precise as OpenGL. Only the context created internally from a HWND via updateNativeSurface is tested. Foreign contexts may work, not tested.
- Improve seeking performance, fix unchanged display when seeking continuously. Now it's close to mpv, and should be better than most players like potplayer, vlc, mpc-hc etc.
- Fix seek position if media start time > 0
- Accurate seek is the default for the start position of prepare(), setNextMedia() and gaplessSwitch()
- OpenGL: Skip uploading video frame to gpu when redrawing
- setState(State::Stopped) now clears video renderer viewport and releases video renderer resources
- Fix stopping playback is not executed immediately
- setState(State::Stopped) now releases host and gpu resouces and clear background color. Normal playback end does not, and still keep the last frame displayed
- Fix setState() sometimes does not work
- MFT Decoder:
- Disable low latency by default only for hevc. Previous release turned off low latency mode for all codecs, then h264 decoding may be too slow
- Add property "ignore_profile" and "ignore_level"
- Add FFmpeg decoder property "drop" to control decoder frame dropping when seeking
- glfwplay example:
- new seek options:
-seek_step
,-seek_any
- support d3d11 rendering using
-d3d11 -gfxthread
- new seek options:
release version 0.4.1
- macOS: fix glx weak link
- support ubuntu >= 14.04
- load vaapi dynamically
- improve vaapi host map, control via env var VAIMAGE_DERIVE, VAIMAGE_FORMAT
- fix many playback loop bugs when more tracks are enabled
- fix too many packets buffered when decoding the 1st frame
- MFT: disable low latency to fix frames out of order
- subtitle support WIP.
- decode embedded subtitle tracks via avcodec
- decode loop and thread
- FFmpeg
- versioned dso is preferred
- reload ffmpeg symbols if dso is changed by SetGlobalOption()
- log level is controlled by SetGlobalOption("ffmpeg.loglevel", val), val can be "quiet", "panic", "fatal", "error", "warning", "info", "verbose", "debug", "trace"
release version 0.4.0
- API:
- add Player.setRange(a, b)
- add Player.setLoop(count), onLoop(callback)
- Reduce pixel format storage
- Fix onEvent() can not add multiple callbacks
- Support windows on arm64
- VA-API: support map to host
- GL: support creating ES context from WGL
- avglue plugin is now merged into main library
- FFmpeg code is no longer embedded into mdk by default. External ffmpeg4.0+ is loaded automatically. Distributing mdk sdk is easier especially on linux
release version 0.3.1
This is a bug fix release
- fix user stop block
- fix some bugs at eof, e.g. unable to seek
- fix setLoop(0) can not disable looping
- support clang-cl 9.0
- c++ api: support g++ 4.9
- vaapi: sync surface after exporting drm handle
- improve ci. now nightly packages are uploaded automatically to https://sourceforge.net/projects/mdk-sdk/files/nightly
- now mdk can be installed via nuget in visual studio. https://www.nuget.org/packages/mdk
release version 0.3.0
- support A-B loop via setLoop()
- API:
- fix player.mediaInfo() crash
- add chapters description in MediaInfo
- add setLoop()
- GL:
- add hdr tone mapping. can be disabled by env var "GL_TONE_MAP=0"
- can create wgl context with specified version and profile
- improve glsl
- raspberry pi:
- fix legacy driver check. gl and mmal works correctly on all drivers
- load libwayland-egl.so.1 when needed
- mmal zero copy rendering supports yuv textures. not perfect. not the default. enabled by "GL_MMAL_FORMAT=yuv420p"
- MFT(windows media foundation):
- fix dolby decoder output format
- input/output type index can be specified by property, example: decoder name is "MFT:in_type=0:out_type=0"
- add missing metadata in MediaInfo
- improve EOS handling in demux thread
- remove terminal null in log
- videotoolbox: stop decoding if decoded frame is invalid
- stop annexb conversion if error occurs
- fix video output drop rate is not desired value
- fix crash if cuda is not available when using CUDA decoder
- fix xaudio2 crash
- fix iOS 32bit min version
v0.2.3
- muxer: skip unwanted stream packets
- GL:
- support gbrp formats
- improve yuv to rgb
- xyz gamma correction
- generic color space, trc, primaries support. done in renderer, demuxers and decoders(FFmpeg, VT, AMediaCodec, MFT)
- android AudioTrack: do not use deprecated 7.1 channel value, which may not work in new OSes
- FFmpeg:
- fix sw format after seek
- check hw pixfmt of decoded frame, fix sw fallback
- support avcodec options via property, e.g. FFmpeg:thread=2
- fix annexb check for CUDA, MFT, AMediaCodec decoder
- try next decoder set by user if failed to decode a frame
- AMediaCodec decoder:
- profile, level and capabilities check before using a codec
- fix nv12 plane line size in copy mode
- async mode support
- detect decode error
- VT decoder(VideoToolbox): add property "copy"
- MFT decoder:
- apply property "copy", "pool" on the fly
- fix annexb check
- raspberry pi:
- enable builtin mmal decoder. decoder name is "mmal", while FFmpeg's is "MMAL"