Skip to content

Releases: wang-bin/mdk-sdk

Release Version 0.10.3

04 Jan 05:22
Compare
Choose a tag to compare
  • Player.setMedia() will stop previous media
  • Default buffer range changes to 1000~2000ms
  • Deprecate foreignGLContextDestroyed(), does nothing now. Use setVideoSurfaceSize(-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

18 Nov 09:14
Compare
Choose a tag to compare
  • 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

09 Oct 15:39
Compare
Choose a tag to compare
  • 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

01 Sep 02:10
Compare
Choose a tag to compare
  • 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

30 Jul 02:53
Compare
Choose a tag to compare
  • 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

30 Jun 13:53
Compare
Choose a tag to compare
  • 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:
  • 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

29 May 11:35
Compare
Choose a tag to compare
  • 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:

Release Version 0.8.1

01 May 09:59
Compare
Choose a tag to compare
  • 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

19 Mar 15:41
Compare
Choose a tag to compare
  • 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

18 Feb 02:22
Compare
Choose a tag to compare
  • 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
  • ABI: no break
  • setBackgroundColor(): if alpha is 0(default), you have to call glClearColor(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:
  • 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