Releases: wang-bin/mdk-sdk
Releases · wang-bin/mdk-sdk
Release Version 0.10.3
- Player.setMedia() will stop previous media
- Default buffer range changes to 1000~2000ms
- Deprecate
foreignGLContextDestroyed()
, does nothing now. UsesetVideoSurfaceSize(-1, -1)
instead - Support key-frame only decoding via env "KEY_FRAMES_ONLY=1" (per player option will be better)
- Support play/seek dynamic duration streams, e.g. recording mpeg ts
- Support 'x444'/p410 pixel format
- OpenGL:
- smart resources release, no leak even if no context destroyed
- fix external image in essl3 may crash on android
- VT decoder:
- force nv12 for mpeg?video
- support hevc yuv444p10le decoded format 'x444'
- Change macOS framework struct to support codesign better
- AMediaCodec decoder: use baseline as fallback of CBP(constrainted baseline) to fix decoder open error
- Fix crash when destroying player if use native surface
- Fix unable to seek if EOS is decoded
- FindMDK.cmake:
- support xcframework
- support android studio
- New swift binding: https://github.com/wang-bin/swiftMDK
- New android java wrapper and example: https://github.com/wang-bin/mdk-android
Release Version 0.10.2
- Support apple sillicon(not tested on real device)
- Support swift language
- Support cocoapods for macOS via
pod 'mdk'
- Add xcframework, including both macOS and iOS frameworks
- Add av1 support for CUDA decoder
- check pixel format support for mmal to fix yuv444p error
- mmal decoder: force copy if no 0-copy support
- Add ACES HDR tone map, via env
GPU_TONE_MAP=aces
- Metal, d3d11, vulkan renderer support alpha blending if video has alpha channel
- Metal: fix crash if frame is invalid
- Fix a/v sync regression after seek since v0.10.1
Release Version 0.10.1
- Vulkan: support Player.snapshot()
- GLRenderAPI.egl/opengl/opengles combinations
- Fix Player.setProperty("audio.avfilter")
- D3D11 supports shared nt handle 0-copy rendering via decoder "D3D11:nthandle=1"
- Simplify ffmpeg runtime loading
- Fix some crashes and endless waits
Release Version 0.10.0
- API:
- Add VulkanRenderAPI
- Support Vulkan: win32, macOS, android(buggy). Everything works except hardware decoder 0-copy rendering, only software decoders and hardware decoder with ":copy=1" are supported.
- Correct HDR trc if obviously wrong from decoder(mediacodec vp9)
- AMediaCodec:
- Improve async mode
- Fix blocks on some devices
- No need to call setLogHandler(nullptr) manually
- Remove redundant gpu color primaries convertion
- Fix D3D11 hevc decoder wrong result because of ignoring profile/level
- Fix D3D11 decoder + D3D11 0-copy rendering wrong result on RTX2060
- Partialy upport mac catalyst build
Release Version 0.9.2
- API:
- Add version()
- Add
Player.set(VideoEffect effect, const float& values, void* vo_opaque)
to set brightness, constrast, hue, saturation
- Metal: Fix viewport resize if create from user provided view
- D3D11/Metal: Fix stop playback does not clear background
- Fix XAudio2 crash on win7, fix leak
- HDR:
- support HLG transfer function
- use primaries from decoder(maybe wrong values) iff env "USE_METADATA_PRIMARIES" is 1
- tone mapping improves
- Add AV1 for android "AMediaCodec" decoder
- Fix another A-B range loop endless waiting
- Vulkan WIP: apple, swapchain, debug, queue, apis, clear background render pass etc.
Release Version 0.9.1
- API:
- D3D11RenderAPI.rtv can be a texture to reduce platform dependent user code, context is optional if rtv is set
- Add GLRenderAPI.fbo, so no need to bind & restore fbo in user code
- Add MDK_strdup(). Fix potential crashes if msvc build configuration(Debug) != SDK(Release)
- HDR:
- BT.2390 is the default tone map curve. Controlled by env GPU_TONE_MAP=2390/hable
- All decoder and renderer combinations has almost the same result
- MFT:
- Read HDR metadata
- Support AV1 decoder, need to install av1 extension from store: https://www.microsoft.com/en-us/p/av1-video-extension/9mvzqvxjbq9v
- Clear background on stop can be disabled by SetGlobalOption("videoout.clear_on_stop", 0)
- Default log level is Info. Must manually set to Debug to see more. playback progress log only appears in LogLevel::All
- Seek: ensure the last request will be executed. Useful for timeline preview
- Fix D3D11 backbuffer resize error
- Fix A-B range loop endless waiting if stop playback by user
- Fix change decoder error and wait forever near EOF
- Fix D3D11/Metal renderer crash if change from GPU decoder to CPU decoder
- Fix D3D11RenderAPI.feature_level
- Fix mute crash (avfilter)
- Fix crash if a chapter tile is empty
- Fix failed to save snapshot as png
- Fix win64 cmake search dir
- Deploy: requires vcruntime140_1.dll by win64
- WIP: vulkan
release version 0.9.0
- API: Add GLRenderAPI and MetalRenderAPI
- Support Metal on macOS and iOS. Lower CPU and GPU load.
- Windows:
- Fix com initialization may affect cef
- D3D11 support decode in 1 gpu and render in another (poor performance).
- D3D11 upport some 16bit pixel formats if R16 is not supported
- Add D3D11 debug mode for MFT decoder("MFT:debug=1") and D3D11 renderer
- Android:
- Fix EGL load
- Fix decoding EOS frame in sync and async mode
- Apple
- Add debug symbol
- (macOS) weak link to standard ffmpeg dylibs so no need to dlopen by user. see https://github.com/wang-bin/mdk-sdk/wiki/FFmpeg-Runtime#macos
- Support software decoder direct rendering, decode to CVPixelBuffer via decoder "FFmpeg:pool=CVPixelBuffer". Less memory use.
- VT decoder supports ProRes, decode into P010 frames
- FFmpeg:
- Print ffmpeg logs in log mdk log handler. Fix multi-lines logs not print completely
- Support reload via library handle
- Custom frame pool
- Add "sw_fallback" property
- Examples:
- Modified apple official metal example: https://github.com/wang-bin/HelloTriangle/tree/master
- QtQuick RHI example. supports d3d11, metal and opengl: https://github.com/wang-bin/mdk-examples/tree/master/Qt/qmlrhi
Release Version 0.8.1
- API:
- Player.onSync() default interval is 10
- Add options for creating D3D11RenderAPI
- CUDA: supports decoding yuv444 formats and 0-copy rendering
- Support rendering gray formats
- Fix MFT:d3d=11 texture leak
- Fix Player.setMute()
- Player.setState(State::Stopped) is much faster
- Fix seek error after setPlaybackRate() if sync to audio
- Apple: enable arc
Release Version 0.8.0
- API:
- Add Player.mapPoint() to map coordinates between video frame and viewport
- Aspect ratio change: negative is scale and crop, positive is scale without crop
- Add Player.onSync() to support sync to user provided clock. Currently only video can sync to it
- D3D11 renderer:
- Supports 16bit be formats
- Convert to rgb by cpu if format is not supported
- Linux multi arch cross build. Less platform specific code
- Add V4L2M2M decoder
- Improve EGL
- Fix a crash on macOS when destroying player
setBackgroundColor()
: always draw background if color is valid. Fix regression since 0.7.0.- Fix playback speed is too fast if resume after paused seek. Regression since v0.5.0
- Fix video only stream clock sync if change playback rate
- Fix wrong position when seeking (if media 1st pts > 0)
- GLX is not linked
- Use clang-8 for rpi to fix invalid armv6 so
- Fix undefined symbol for sunxi
- Enable cf guard for windows
Release Version 0.7.0
- API:
- add
Player.setProperty()
- add
VideoFrame
class - add
Player.onFrame()
to get decoded frame, can be used by custom filters - support
MediaStatus::Seeking
- add snapshot MediaEvent
seek()
callback parameter is -2 if seek request is ignored
- add
- ABI: no break
setBackgroundColor()
: if alpha is 0(default), you have to callglClearColor
(or d3d11 api) manually.- Add FindMDK.cmake in sdk lib/cmake dir, support multiple target architectures.
- Fix multiple D3D11 renderer crash
- Fix crash if audio device is not available
- Fix music with cover buffering progress error
- Fix last frames not rendered if prepare() from a position closed to end of stream.
- Player.setVideoSurfaceSize(-1, -1) can remove the renderer
- prepare() starts from 0 if requested start position > stream duration or duration is unknown
- Improve A-B loop if B is closed to or larger than end of file
- Fix block if A-B loop restarts when previous seeking is not finished
- Music with cover art: fix png not rendered. fix block if stop by user.
- Seek:
- Fix SeekFromNow
- Fix audio file read error after seek
- When end of stream decoded and in paused state
- Fix seek never work if previous seek failed
- position() never change after a seek error or a frequent seek request
- snapshot: fix msvc crash
- OpenGL:
- Save and restore blend states
- Skip loading EGL if context is not created by mdk
- FFmpeg:
- support avfilter complex filters via Player property "video.avfilter" and "audio.avfilter"
- Optimize audio filter if in/out parameters are the same
- Improve video encoder
- VT decoder:
- Fix the last frame not rendered
- Support AnnexB streams
- Reduce exported classes
- Fix crashes, memory leaks in stress tests.
- Metal renderer: WIP
- Audio encoder: WIP