Skip to content

Releases: wang-bin/mdk-sdk

Release Version 0.6.1

06 Jan 08:01
Compare
Choose a tag to compare
  • 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

02 Dec 02:15
Compare
Choose a tag to compare
  • D3D11 Renderer: now has almost the same features as OpenGL renderer
    • HDR tone mapping support
    • Support UWP. ICoreWindow or ISwapchainPanel can be used as the surface of Player.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 and D3D11RenderAPI.rtv must be provided
    • Remove restriction of calling Player.setRenderAPI() before any other apis have vo_opaque parameter. updateNativeSurface() still have to be called after setRenderAPI()
    • 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

release version 0.5.0

04 Nov 02:34
Compare
Choose a tag to compare
  • 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

release version 0.4.1

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

06 Sep 05:53
Compare
Choose a tag to compare
  • 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

15 Aug 12:51
Compare
Choose a tag to compare

This is a bug fix release

release version 0.3.0

01 Aug 13:00
Compare
Choose a tag to compare
  • 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

02 Jul 01:35
Compare
Choose a tag to compare
  • 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"