Releases: wang-bin/mdk-sdk
Releases · wang-bin/mdk-sdk
Version 0.16.0
- Blackmagic RAW playback support, decoder name is
BRAW
. Plugin is opensource - Seek callback will always report the correct result position
- Improve seek
- Fix D3D/MFT decoder + WGL on windows may displays green image
- Supports DNG
- More pixel formats, bayer, float rgb etc.
- Fix audio crash on win7
- Fix snapshot crash if render with transform, fix incorrect transform if point map is set
- VideoFrame.to() will copy to host memory first if necessary
- Fix decoded video timestamp maybe not monotonic
Version 0.15.0
- Add new decoder "hap" to decode Hap1, Hap5, HapY and HapM videos into compressed gpu textures(BC1~4). Only desktop platforms are enabled. It's preferred over "FFmpeg" if Player.setDecoders() is not called by user. See https://github.com/wang-bin/mdk-sdk/wiki/Decoders#hap
- Support gpu accelerated Hap rendering via decoder name "hap".
- Support backward seek by frame.
pos
inseek(pos, SeekFlag::FromNow|SeekFlag::Frame)
can be negative, -1 means go back 1 frame. - Add SeekFlag::InCache to support seeking in cached data to improve online video seeking. Target position must be in range
(position(), position() + Player.buffered()]
. - VT Supports mpeg2video
VideoFrame.save()
can save original data. Also select closest format if save as an image.- Improve rendering RGB with X/0(unused alpha channel) formats
- Fix position() is not correctly when seeking by frame.
- Fix playback may stop unexpected, and seeking is slow if seek near EOF
- Fix wrong playback speed if resume from paused state on apple platforms
- Fix empty png snapshot
- Fix snapshot error on OpenGL ES2
- Fix A-B loop may block if too many players
- Fix wrong
Player.position()
and audio timestamp ifplaybackRate()
!= 1 - Fix
prepare()
callback not called or called many times - Fix shader compiling affected by locale and may crash, e.g. LC_ALL == de_CH
- FFmpeg:
- Improve avdevice playback
- Supports ffmpeg 5.1+
Version 0.14.2
- CUDA decoder:
- support av1 8 and 10 bit
- support gray format (mjpeg)
- fix context error, which results in jpeg decode error
- VT decoder:
- support deinterlace and enabled by default
- add "threads" property for software decoding
- support 16bit yuv with alpha, e.g. ProRes with alpha
- disable h264 422 10bit for macOS < 11.0. decoded image is corrupt(macOS bug?)
- fix color info from decoder
- Support dav1d 1.0
- Improve playing live recording ts file near EOF
- Fix record before running state
- Fix recorded video may be malformed when using hardware decoders
- Fix loop at end does not work if "continue_at_end" property is set
Version 0.14.1
- Fix android undefined __emutls_get_address
- Improve accurate seek and seek callback
- D3D11: fix rendering MFT output w/o hw decoding
- D3D11: Wait for fence in gpu
- Support rendering float 16/32 textures
- Fix packed yuv may not be correctly rendered
- Fix mediaInfo() crash
- Support exr image
- VT: support more codecs, including ProRes Raw
Version 0.14.0
- API:
- Add
Player.setPointMap()
- Add
- Fix Player::foreignGLContextDestroyed() does nothing. Useful to realease gl resources if player is destroyed before context
- Release GL resources ASAP.
- Fix realtime streams frame drop
- Fix rtp decode error
- Fix a crash if recreate opengl context frequently
- Fix macCatalyst build, fix macOS < 11
- Fix ffmpeg av1 can not fallback to dav1d
- Fix metal snapshot and resize renders a green frame
- Fix seeking may output a frame with wrong timestamp
Version 0.13.0
- API:
- Add Player.setFrameRate(). Default is 25fps if no timestamp in stream.
- MFT:
- Fix crash on some new drivers
- Add "activate" property to select mft plugin
- Add "threads" property for software decoding
- VT:
- Support more 420, 422 16 bit semi-planar formats, use the closest format
- Support HEVC with alpha
- Support HEVC gray formats
- AMediaCodec:
- Support decoding dolby vision profile 5
- Enable YUV with alpha for all renderers
- Support semi-planar yuv with alpha: NV12A, P416A, 16bit gray format L016
- GL, D3D11, Metal timestamp query
- Fix fail to render hw frame mapped to host for all renderers
- Fix wrong OpenGL blend state
- Fix D3D11 renderer crash on device change
- Use vulkan loader set by env var
QT_VULKAN_LIB
orVULKAN_LIB
- Fix CUDA decoder crash
- Fix subtitle endless decode loop at EOF
- Compat with latest FFmpeg 5.0 abi
Version 0.12.0
- API:
- Add Player.setVolume(float value, int channel) to control channel volume
- Deprecate setState(State), use set(State)
- Add GetGlobalOption()
- Fix uyvy422, yuvy422 rendering
- Fix MediaInfo.start_time if < 0
- Fix crash in decoder name is not supported
- Fix a track may endless wait for loop end
- Fix muti-tracks stream can not loop
- Fix slow down near EOF in loop mode at high playback rate
- Fix VAAPI not work in wayland
- VT decoder:
- Fix decoder stops when bad data error occurs
- Fix frames are out of order from the 2nd loop
- D3D11 prefers fence for synchronization.
- FFmpeg: support 4.x and 5.x abi, prefer 5.x
version 0.11.1
- Deprecate Player.setState(State), use Player.set(State)
- Add VideoFrame.save() to encode and save as a file
- Buffer range for realtime streams(rtsp, rtp etc.) is unlimited by default
- Unify pixel format channel map algorithm. Fix incorrect color for some formats(e.g. nv21)
- Ignore incorrect hdr metadata
- Allow renderVideo() in RenderCallback
- VT decoder:
- Support jpeg, more prores profiles
- Support h264, hevc GBRP 8bit input pixel format
- MFT:
- Fix h264 profile check
- Add property "blacklist", default is "mpeg4", mpeg4 is not well supported so disabled for now
- FFmpeg:
- continue to decode by default if error ocurrs. can stop decoding by setting property "error=0"
- Use 4.4 instead of master because of abi break
- Auto reset log handler to fix potential crash when exiting
- Fix seek on pause may never be executed forever without resume playback
- Fix endless wait if seek near EOF in loop mode
- Fix license check, appid is utf8. License generator and validator is opensource now as appke
- Fix crash if snapshot failed
version 0.11.0
- API changes:
- Add setActiveTracks()
- Deprecate
javaVM(JavaVM*)
, useSetGlobalOption("jvm", void*)
instead. See Wiki - Deprecate
setLogLevel(LogLevel)
, useSetGlobalOption("logLevel", name or LogLevel or int value)
instead. See Wiki](https://github.com/wang-bin/mdk-sdk/wiki/Global-Options) - Deprecate
Player.setVideoDecoders(...)
andPlayer.setAudioDecoders(...)
, usePlayer.setDecoders(MediaType, ...)
instead - Add VideoFrame.isValid()
- Add "dav1d" decoder. Default load libdav1d.5.dylib, libdav1d.so(android), libdav1d.so.5(linux), libdav1d.dll(windows), or set library name via environment var "DAV1D_LIB"
- Support frame step forward via
seek(1, SeekFlag::FromNow|SeekFlag::Frame)
, also support N frame forward seek()
supports seeking to the last frame or the last key frame(hasSeekFlag::KeyFrame
) if target position > duration- Improve video decoder switch
- setLogHandler(nullptr) once to log to std::clog, set again to disable log completely
- Fix potential endless wait if stop playback in loop mode
- Fix the first frame after seek is not the latest frame
- Fix music cover image not rendered if prepare from pos > 0
- Fix wrong position() and prepared callback invoked multiple times if play with an audio track file
- Fix the first frame rendered after seek is not the lastest frame
- FFmpeg:
- Support avdevice via "avdevice://format:filename"
- Support avformat options via url query, starts with "mdkopt=avformat", e.g. "some_url?mdkopt=avformat&fflags=nobuffer"
Release Version 0.10.4
- Support macCatalyst
- Support vulkan on apple silicon
- VT decoder:
- Support VP9 on macOS 11+. Profile 0 and 2 are confirmed
- Support more(all) semi-planar formats, output a format with the same chroma subsample size as original format, e.g. 'p410' for hevc yuv444p10le.
- Fix high depth channel formats output error on apple silicon. It's r10g10a10a2 for 10bit Y plane, but not support yet in renderer, so use p010('x420')
- Add "hardware" property to enable/disable hardware acceleration
- Add "width" and "height" property
- Support HDR in mkv
- Reduce compressed packet copy
- VAAPI, VDPAU: fix not work since 0.10.2
- MFT video decoder: fix h264 constrained baseline profile check
- CUDA decoder: fix chroma format
- FFmpeg:
- Fix a crash if avio open error
- Fix "drop" option does not work correctly
- Improve decoder switch in paused state
- Fix can't switch to a new decoder via setVideoDecoders() since 0.10.0
- Fix a blank frame in gapless playback
- Fix 2 crashes in player dtor, 1 race in setNextMedia(), 1 race/crash if faile to open a media
- Examples:
- Enable glfw for apple silicon