mdk-sdk version history
11 releases tracked, newest first.
v0.37.0
Jun 30, 2026- Added ProRes Raw color parameter parsing and rendering support
- Introduced disk cache for http(s) with configurable protocols and directory
- Improved frame drop handling for better playback sync and performance
- Enhanced GPU support for bayer formats and ProRes Raw rendering with color correction
6 downloads
v0.36.0
Apr 27, 2026- Added OpenHarmony (OHOS) support with hardware video decoder and HDR10 passthrough
- Introduced new lossless HAP compression and GLRenderer.depth option
- Improved Android audio with AAudio as default and AMediaCodec enhancements
- Various fixes for decoders, EGL, and performance optimizations
9 downloads
v0.35.1
Dec 30, 2025- API: Fix frame move assignment and constructor
- VT:
- Improve AV1 support
- Ignore session create error for hvc1, fix decoder open error on macOS 26
- VAAPI:
- Fallback to drm display if no wayland
- Add drm vendor option: vendor can be "nv", "intel" etc.
- rockchip decoder: supprt avs1 p2 p16(avs+), avs2
- Shader:
- Fix locale restore
- HLG extended model
- BRAW: stop decoding on error to fix corrupt file playback
- Fix subtitle font scale
- Fix audio + cover art wrong position after seek and loop
- Fix BC4 channel map and display white as red in dx, metal and vk renderer
- FFmpeg:
- Add property "codec.$name" to force a decoder for a codec, for example `"FFmpeg:codec.cavs=libcavs"`
- Keep streams order for muxer
13 downloads
v0.35.0
Sep 30, 2025- API:
- Add `Player.onSubtitleText()`, a callback to be invoked when new subtile text lines are ready to display
- Add global options `video.decoders.hint`, used by `player.setProperty("video.decoders", GetGlobalOption("video.decoders.hint"))`
- More properties. `avsync.audio` value "false" can sync to a steady clock
- VT:
- Fix vp9 alpha layer is not decoded
- HEVC alpha is always supported even for sw decoders
- Support "only" & "delivery" to drop frames, known to work for jpeg and maybe more
- Metal:
- Fix renderer and layer colorspace do not match, e.g. bt2100pq is used for prores raw's bt2100 scene referred linear
- Update renderer if "cc", "subtitle" property changed even when paused
- D3D11:
- Disable internal fence if kmt is used
- Avoid creating rtv for decoder error
- CUDA:
- Fix gfx resources are not unregistered
- Record active tracks only
- Optimize vk spirv blobs
- Fix macOS < 10.13 compatibility
- Fix wrong subtitle aspect ratio in vo size mode
- FFmpeg:
- Fix SAR if only exists in container
- Add property "avformat.input" to force input format, e.g. can be used by h264 raw stream over udp
- BRAW
9 downloads
v0.34.0
Sep 1, 2025- API:
- Add `VideoFrame.rotation()`
- Add `VideoFrame.metadata()`. Currently it's only used by exporting frame SEI, see [this feature request](https://github.com/wang-bin/mdk-sdk/issues/323)
- Add `Player.setAudioMix()`
- Add [rockchip decoder](https://github.com/wang-bin/mdk-rockchip) as a plugin, libmdk-rockchip.so from sdk is required(will be copied automatically if use FindMDK.cmake). `setDeoders(MediaType::Video, {"rockchip", "FFmpeg", "dav1d"})` will enable rockchip decoder. [Document](https://github.com/wang-bin/mdk-sdk/wiki/Decoders#rockchip)
- Decoder plugins are loaded automatically when invoking `setDecoders()`. plugin name is `mdk-$decodename_lowercase`. For example, `SetGlobalOption("plugins", "mdk-braw:mdk-r3d")` is no longer required for BRAW and R3D decoder.
- VT decoder:
- force prores raw output rgbaf16. Previously the default format is used, which is rgbaf16 on M1, `'b16q'`(a 4 planes bayer format) on M2+, but `'b16q'` is not supported by current renderers.
- ProRes Raw support scene referred extended linear trc. Now Metal renderer has almost the same result as QuickTime player.
- Add `scale` property to output a lower resolution
9 downloads
v0.33.1
Jul 5, 2025- GL:
- Support debug output, via `GLRenderAPI.debug = true` or env var `GL_DEBUG=1`
- Prefer EGL platform window
- Improve EGL init for GBM
- Prefer YUV sampler except [android](https://github.com/wang-bin/mdk-sdk/issues/314)
- [Fix immutable storage texture leak when rendering DRM objects](https://github.com/wang-bin/mdk-sdk/issues/304)
- CUDA:
- Use a stream for output
- Fix blank lines at bottom if coded height != height
- VAAPI:
- Support wayland display via `SetGlobalOption("wl_display*")`. It's optional because x11 and drm also work in wayland environment
- Fix dri3 interop was disabled and unusable long times ago
- va display is shared by default to avoid an potential crash in x11, can be disabled by decoder option `shared=0` or `SetGlobalOption("vaapi.shared", 0)`
- D3D11:
- Fix RTV leak in 0.33.0
- Disable `IDXSync` introduced in 0.33.0 for D3D11RenderAPI.rtv because a leak issue not yet fixed
- Fix high cpu load on linux when EOF is read
- Fix global options not applied for decoders output drm objects, except vaapi
- Fix a mem leak: drmGetFormatModifierName, pulse audio init
- Apple: fix audio renderer re
9 downloads
v0.33.0
May 28, 2025- API:
- Audio/VideoFrame is ref counted
- Add `VideoFrame.get(DX11Resource*, ID3D11Device*)` to get underlying dx11 resource, or convert to dx11 textures if device is provided(cuda only)
- Rockchip rkmpp decoder 10bit output can be directly imported by EGLImage w/o rga format conversion. Maybe it's the only player supports this feature.
- MFT:
- Support async and hardware mft via property `hardware=1` or `async=1`, hardware implies async. jpeg and vp8 can be async decoder
- `hardware` property value can be a vendor name, e.g. `nvidia`, `intel`, `amd`, `qcom`
- packed yuv format is not preferred
- D3D11:
- Render target D3D11RenderAPI.rtv can be an array texture. array index starts from 0, and increases if renderVideo() draws a new frame, i.e. returns a new timestamp
- Expose [IDXSync](https://github.com/wang-bin/mdk-sdk/wiki/Render-API#idxsync) for user, which can be used to sync between contexts if render decoded dx11 resource from `VideoFrame.get(DX11Resource*)` or encode/process dx11 texture rendered by `renderVideo()`. It's also used internally.
- Fix signal on a wrong fence
- Improve cross device rendering w/o cpu wait
- OpenGL
9 downloads
v0.32.0
Mar 22, 2025- API:
- Add `AudioFrame` and `Player.onFrame<AudioFrame>()`. Example: [obs](https://github.com/wang-bin/obs-mdk/commit/b5027fffa08765626954af8e5ca0566416e50f38)
- `VideoFrame.from()` can import CUDA and VAAPI resources
- **NEW: VP8/9, HEVC with Alpha support.** Maybe it's the 1st player engine supports those standard alpha videos.
- VP8/9, HEVC alpha layer decoding for all decoders.
- alpha layer rendering in all renderers. Alpha and base layer can be from different decoders and have different strides, and sampler types can be different.
- `alpha=0` can disable alpha layer decoding, e.g. `player.setProperty("video.decoder", "alpha=0")`
- non-standard alpha videos whose alpha data is at bottom or right, enable via decoder property `alpha=right` or `alpha=bottom`. sw decoder or hw decoder copy mode only.
- MFT: support HEVC base layer decoding if has multiple layers(alpha and MV-HEVC). By default such bitstream is rejected by MFT
- D3D11: fix downloading from stage texture, previously may crash on amd, arm64
- CUDA:
- Only decode base layer of has multiple layers. By default it decodes all layers(alpha and MV-HEVC).
- Add properties `device`,
10 downloads
v0.31.0
Jan 30, 2025- API:
- Add color space and dolby vision profile in MediaInfo
- Add `VideoEffect::ScaleChannels` and `ShiftChannels`
- Add `Player.subtitleText()` to get subtitle text(except bitmap subtitles) with ass style or not, even if subtitle rendering is disabled by `setProperty("subtitle", "0")`. see https://github.com/wang-bin/mdk-sdk/wiki/Player-APIs#stdstring-subtitletextdouble-time---1-int-style--0-const
- EGL:
- Support HDR color spaces. `player.set(ColorSpaceUnknown)` will switch between HDR and SDR color space depending on current rendering video frame. Tested on android, may work on linux
- Enable HDR10 metadata pass through, can be disabled by env var `EGL_HDR_METADATA=0`
- Prefer rgb10a2 to avoid recreating context when switching between SDR and HDR
- Support KHR_no_config_context to avoid recreating context when switching between SDR and HDR
- Subtitle:
- Fix properties not applied if set before play
- Support splitting ASS rendered rgba image into several smaller regions when possible to reduce total size and gpu bandwidth. controlled by player property `subtitle.ass.regions.max` or env `ASS_REGIONS_MAX`, value is int. use `subtit
9 downloads
v0.30.1
Nov 23, 2024- Fix a crash in audio renderer if get delay
- renderVideo() before the 1st frame will clear render target with background color. useful if render target content is undefined
- Fix some global options not applied immediately
- FFmpeg: prefer new avcodec_get_supported_config()
9 downloads
v0.30.0
Nov 8, 2024- API:
- Add `Player.appendBuffer()` to play streams with user provided data, for example data is from [websocket](https://github.com/wang-bin/mdk-examples/blob/master/Native/stream.cpp). media protocol is `stream`, i.e. `player.setMedia("stream:empty_or_any_string")`. `setTimeout()` can abort current playback if timedout to read data from user.
- Plain text subtitle(srt for example) style can be changed by user via [subtitle properties](https://github.com/wang-bin/mdk-sdk/wiki/Player-APIs#subtitle-properties)
- Multi channels audio rendering, no downmix to stereo
- Support dolby vision in mpeg ts
- PulseAudio is the default audio render for linux
- Improve audio renderer delay and AV sync
- VT: Fix hardware decoder disabled if hvcC has no PS NALUs
- D3D11:
- Fix UMA check if run x64 on arm64 and failed to create textures
- Disable cross context 0-copy for AMD gpus to avoid corrupt result on many gpus
- Set usage for swapchain, fix back buffer RTV create error on some win7 devices
- VAAPI:
- Map YUYV fourcc, fix jpeg yuv 422 rendering
- Convert to RGB with VPP if DRM to EGLImage is not possible(desktop gl + external only formats)
- DRM Prime:
9 downloads