CARVIEW |
Select Language
HTTP/2 200
date: Thu, 24 Jul 2025 21:38:38 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"9853283ee61db2e88ccbed7f752f105c"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=sCVhCYj5GK0re8Um3q5Wttq8JxoUyhZE3rdZSpnG7pteH%2F3KL5AxJTwdxh02%2Ba9vWF3ly57%2FvhWuN31%2BI6dH6d4DRH94XPFeqBuIyMiEAUfUUbZzukmFxni3VUygsRCgh8sJKCvH0t64McLMZCt%2FCTJr9sd%2BniPvsJRzCu8wXW%2FUNbclh2CKxyg%2Bpn0d8gI6q1ITTThvEI70WswKVeK0DnHGokY3Xc9WCeRn90GIpVgRwXdNS%2FuNZ%2FiuIKA0yvk4yP3N9f03Pblc0cqQWV1gZw%3D%3D--cwJJOCo9HMPkJ2Jh--p0iBHO39S%2Bx5ZmdFtY0DZw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1716797800.1753393117; Path=/; Domain=github.com; Expires=Fri, 24 Jul 2026 21:38:37 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Fri, 24 Jul 2026 21:38:37 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: E822:277C9A:9EBEA:DC17C:6882A7DD
Releases Β· wang-bin/mdk-sdk Β· GitHub
05 Jul 16:11
28 May 06:11
Loading
22 Mar 10:56
Loading
30 Jan 13:32
Loading
23 Nov 13:53
Loading
08 Nov 16:52
Loading
30 Aug 14:04
Loading
03 Jul 05:54
Loading
01 Jun 16:10
Loading
06 May 07:13
Loading
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 35
Releases: wang-bin/mdk-sdk
Releases Β· wang-bin/mdk-sdk
v0.33.1
Compare
- GL:
- Support debug output, via
GLRenderAPI.debug = true
or env varGL_DEBUG=1
- Prefer EGL platform window
- Improve EGL init for GBM
- Prefer YUV sampler except android
- Fix immutable storage texture leak when rendering DRM objects
- Support debug output, via
- 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
orSetGlobalOption("vaapi.shared", 0)
- Support wayland display via
- 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 recursive init
- BRAW: support 4.5+ SDK
- R3D: support 9.0+ SDK and N-RAW. But still built with 8.6 SDK because of a bug in 9.0
- FFmpeg:
- Fix missing rotation data for when avfilter is used
- Fix can't load avdevice on android
Assets 27
- sha256:4a0dbc2577afa725ce33daa534d746cdb0c01b924f41088053a199eee30d7e55
2025-07-06T06:52:15Z - sha256:c9fc2309093148869c250c551225de778ff774f2ac4a1f4b7476283e90e6e00d
2025-07-06T06:52:39Z - sha256:d9963e660be7515bf3920efd72eacb3c3d645a021baa6cb6fe1abe4982e52b79
2025-07-06T06:52:35Z - sha256:14e37df188d0b99f653db6a3bdfb410e86e889e07f134ed85a331f3b8a0c075e
2025-07-06T06:52:28Z - sha256:ab743c92408921d967e3b3a6de6ba2d69da51d00ca7ee1c035d7b6cd0cc2e371
2025-07-06T06:52:33Z - sha256:bf2a923920fa82f3e09e5c24f7b48298e6f8613bd464870f5e6bef7735c2b4c9
2025-07-06T06:52:13Z - sha256:44bd8f1a9ef28433122016725298afdb811f719f8daf139e0262615094ebc585
2025-07-05T16:05:00Z - sha256:95863b34ef69abf2a315b5ac7feba6eb39b09e8a6f57c9bf4ef1ac8995d631e8
2025-07-05T16:05:00Z - sha256:f549477623c0d46fe5480f1f0686b538e5a347d5ca0f97a17283bb7866fb7e6c
2025-07-05T16:05:00Z - sha256:65b3a0568f9eaad0903d435d99efecae6ec6deed63ad02679741e15463cc19c7
2025-07-05T16:05:00Z -
2025-07-05T15:45:53Z -
2025-07-05T15:45:53Z - Loading
4 people reacted
v0.33.0
Compare
- 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
orasync=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
- Support async and hardware mft via property
- 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 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 byrenderVideo()
. It's also used internally. - Fix signal on a wrong fence
- Improve cross device rendering w/o cpu wait
- OpenGL:
- Fix yuv sampler shader
- Don't use GL_OES_EGL_image_external for ES3, fix error on some devices(e.g. rk3588 mali driver)
- More EGL platform types, and platform extension is used when possible.
- Metal: render target supports array texture
- CUDA:
- Add decoder property
array=N
or global optioncuda.array
for dx11 to use an array texture as output - Add decoder property
persistent
or global optioncuda.persistent
for gl and dx11 to map as cuda resource only once
- Add decoder property
- Dolby vision: support profile 20, used by MV-HEVC
- Use rgba format for GBM to fix no EGLConfig for rgb. env var
GBM_FORMAT
can force another format, the value is a GBM fourcc, e.g.AR24
- record() without any decoder will remux the media. steps:
setMedia(..., {}) => record(file,...) => set(State::Playing) => waitFor(State::Stopped)
- Fix avfilter processed audio format
- Fix bitmap subtitle display area
- Fix some subtitle crash
- Fix mirror for rotated video used by OpenGL FBO
- build with libc++21
- lto is disabled for apple platforms because of compiler bug.
- FFmpeg: support 8.0 abi
- Add global option
ffmpeg
andlibffmpeg
to reload all av modules, value can be libffmpeg path or handle
- Add global option
Assets 27
2 people reacted
Version 0.32.0
Compare
- API:
- Add
AudioFrame
andPlayer.onFrame<AudioFrame>()
. Example: obs VideoFrame.from()
can import CUDA and VAAPI resources
- Add
- 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
oralpha=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
,stream
,pbo
etc. see https://github.com/wang-bin/mdk-sdk/wiki/Decoders#cuda - Fix a crash when destroying the last frame
- VT:
RequestedMVHEVCVideoLayerIDs
bug reported by me in 2024 is fixed in macOS 15.4, so remove workaroud for macOS 15.4+ - VAAPI: add "vpp" property, 1 to convert to rgb via vpp
- EGL:
- Prefer storage extension for desktop gl. external only formats support is vendor dependent. Works well on all gpus including raspberry pi. previously only OpenGL ES + external image can be used for extenal only formats.
- Fix no hdr metadata warnings in system log on android
- Support android platform display
- Fix HDR display if no colorspace extension(regression in 0.31.0)
- Fix crash if no client extension(regression in 0.31.0)
- Add value "fit" to property "subtitle.size" to scale subtitle to renderer size and keep aspect ratio
- CMake: add rpath-link for linux libc++
- Load libshaderc.so instead of libshaderc-shared.so on linux
- global option videoout.hdr10_metadata=0 can disable hdr10 metadata passthru to display
- Fix old subtitle rendered if track switched
- Fix point map if render api changed(default opengl, to another)
- Don't clear render target if failed to open a decoder
- FFmpeg:
- Add "format" option for sw decoder. used by hevc alpha, for example
format=yuva420p
- "sw_fallback" property applies for codecs w/o hwaccel
- Add "format" option for sw decoder. used by hevc alpha, for example
Assets 27
6 people reacted
v0.31.0
Compare
- API:
- Add color space and dolby vision profile in MediaInfo
- Add
VideoEffect::ScaleChannels
andShiftChannels
- Add
Player.subtitleText()
to get subtitle text(except bitmap subtitles) with ass style or not, even if subtitle rendering is disabled bysetProperty("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
- Support HDR color spaces.
- 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 envASS_REGIONS_MAX
, value is int. usesubtitle.ass.regions.debug
or envASS_REGIONS_DEBUG
to visualize regions and show debug messages. - Keep colorspace the same as video, fix dark in bt2020 pq
- Add player property
subtitle.scale
to scale all kind of subtitles. default is 1.0, i.e. no scale - Fix
subtitle.blur
is not applied because of a libass bug - Add player property
subtitle.size
, default value isvideo
to render in video frame size, other values will render in video renderer resolution - Redraw subtitle if output resolution changed even if playback is paused, e.g. rendering in renderer resolution, and resize the renderer
- Redraw subtitle for any subtitle property change even if playback is paused.
- Render earlier
- Fix dead lock
- Fix unexpected null texture for some timestamp values and blinking
- Set ass storage size
- Dolby vision: Fix shader error if yuv sampler is used for MediaCodec decoder
- GL: add
glFinish()
before context destroyed - D3D11: Improve UMA support check. UMA optimized texture download. can be disabled by env
GPU_OPTIMAL_DOWNLOAD=0
- DXGI: Use the 1st screen's HDR capability
- Metal: Fix rendering mutiple overlayes
- MFT: return error if output type is not supported
- Fix wrong start time if
record()
multiple times. - Fix buffered packets out of range of the value set by
setBufferRange()
- Fix audio not decoded after seek if paused and result in a/v desync(apple only).
- Fix seek(if not started) callback may be called twice.
- Fix global subtitle options not applied, regression in 0.30.1
- FFmpeg:
- Support webvtt in mkv. Patch is from avbuild, not merged by upstream.
- Workaround aac packets from rtsp have no keyframe if ffmpeg > 7.1
Assets 25
4 people reacted
v0.30.1
Compare
- 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()
Assets 25
1 person reacted
Version 0.30.0
Compare
- API:
- Add
Player.appendBuffer()
to play streams with user provided data, for example data is from websocket. media protocol isstream
, i.e.player.setMedia("stream:empty_or_any_string")
.setTimeout()
can abort current playback if timedout to read data from user.
- Add
- Plain text subtitle(srt for example) style can be changed by user via 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:
- Error if no OpenGL ES2/3 context for external only formats, then VAAPI can fallback to suboptimal rendering instead of blank
- Map more formats
- Player property "audio.tracks", "video.tracks" and "subtitle.tracks" is same as
setActiveTracks()
, value is a int list string, e.g."0,1"
- Reset more callbacks before deleting player object to simplify user code
- Fix undefined symbol on wayland < 1.10, compatible with more linux distributions, e.g. ubuntu 14.04
- More packed yuv formats
- MFT: fix d3d9 not tried if d3d11 is not supported
- Fix null callback invoked if reset by user
- Will try to load Ass.framework on apple OS except macOS, to be compatible with media-kit's frameworks
- FFmpeg: Fix wromg abi version if avfilter is disabled when swresample is loaded and crash, e.g. qt6's ffmpeg dlls
- Add nvjpeg2000 plugin for windows x64, requires cudart64_12.dll and nvjpeg2k_0.dll
- Compatible with libc++20
Assets 25
1 person reacted
Version 0.29.1
Compare
- Android 64bit is built with 16KB page size support
- Supprt GL_EXT_EGL_image_storage for drm, via global option "eglimage.storage=1"
- VAAPI: prefer x11 display to support both EGL and GLX
- Add privacy manifest for apple platforms
- Improve demuxer cache
- Enable http reconnect
- Fix OpenGL symbols not resolved on android 15 emulator
- Fix snapshot in OpenGL renderers
- Fix snapshot callback not invoked if failed
- Fix muxer write after close
- Fix a decoder crash when stopping playback
- Fix waitFor(State::Stopped)
- Stop demuxer immediately if io is aborted.
- Apply ffmmpeg muxer options
- Prefer ffmpeg dynamic library even if statically linked. mainly used by iOS user provided FFmpeg.framework
Assets 21
3 people reacted
Version 0.29.0
Compare
- Support demuxer cache for http(s), can be enabled via
player.setProperty("demux.buffer.ranges", "8"/*or other positive int*/)
.{count, "cache.ranges"}
event will be triggered when cached time ranges are created, dropped(via LRU cache) or merged. Other protocols can be enabled via player propertyplayer.setProperty("demux.buffer.ranges", "http,https,proto1,proto2");
. - Add
Player.bufferedTimeRanges()
- Dolby vision: support reading metadata from av1 in all decoders, previously only supported by ffmpeg hwaccels and software decoder.
- Support pause/resume rtsp stream in
Player.set(State)
. Enable viaplayer.setProperty("reader.pause", "1");
. - Record video from non-key frame if property "reader.starts_with_key" is "0"
- Support nvJPEG2000 as a plugin
- Support planar xyz format, produced by nvJPEG2000
- Support p012, p212, p412, can be produced by VT decoder(can be tested with VT:fourcc=tv20)
- OpenGL:
- Detect(guess) invalid foreign context, usually in old OSes(ubuntu 20.04) and with
GLRenderAPI.getProcAddress
set by user. - Fix blank display if failed update textures
- Detect(guess) invalid foreign context, usually in old OSes(ubuntu 20.04) and with
- D3D11: fix crash if decoder and renderer adapters are different
- Metal:
- Set layer scale, fix low resolution
- Build highest shader version
- VT: support ProRes without fourcc
- VAAPI:
- Prefer drm display over x11, less errors, better performance
- Fix upload unmapped host memory crash
- Fix wrong channels in recorded pcm
- Fix prepare callback not invoked if decoder changed
- Fix rgb48be rendering
- FFmpeg
- Improve abi compatibility, found in x86 32bit ffmpeg 4.x
- Fix flipped frame in avfilter
- Compatible with msvcp 14.40+
Assets 25
2 people reacted
Version 0.28.0
Compare
- Support rendering in a foreign render pass for all renderers. Previously only foreign opengl context are implemented. The performance should be better than rendering to texture. Now it's able to render in a Qt RHI window
- Support decoding A53 closed caption in all video decoders. Previously only supported by ffmpeg hwaccels and software decoder. Can be disabled by player property "cc=0".
- Add new player properties: "buffer", "audio.decoders", "video.decoders". Convenient to control player in flutter.
- Support video frames with negative stride, frames are vertically flipped
- BRAW: support 4.0 SDK, compatible with 3.0
- Improve NALU start code and EBP search
- VT decoder:
- fix hevc mpegts decode error after seek
- max continuous session restart on error is 1 by default, controlled by property "error=1"
- MFT: fix mf shutdown too early and crash when releasing a sample after stop
- Fix CUDA decoder error after seek. It's a regression in the previous release.
- OpenGL: Fix UBO error, requires glsl150(OpenGL 3.2, ES 3.0)
- Fix alpha channel value of render target when blending subtitle, now output alpha >= background alpha
- Fix multiple frames rendered if prepare() without play
- Fix wrong position() value after prepare() without play
- Fix buffering progress value
- Fix play a new media if previously an individual audio track file/url is used
- Fix endless wait when buffering on apple
- Fix audio channels on apple
- Fix no frame decoded if decoder changed when seeking
- Vulkan: fix wsi extension check
- Metal: fix layer colorspace and disable EDR for SDR
- Fix wrong frame height if copy DX9/11 textures to host memory
- Fix negative duration and start time for live streams, should be 0
Assets 20
4 people reacted
Version 0.27.0
Compare
- Dolby Vision profile 5 support:
- Works for all renderers: OpenGL, D3D11/12, Metal, Vulkan
- Support SDR and HDR10 display
- Works for all decoders. For ffmpeg software decoder and hwaccels, dolby vision metadata are parsed by ffmpeg. For other decoders including ffmpeg external decoders and mdk hardware decoders, metadata is parsed in mdk
- AMediaCodec system dolby vision decoder is disabled by default(previously was enabled). Can turn on via property "dv=1".
- Improve gpu const buffer/uniform update for all renderers
- OpenGL: Support UBO. Enabled for OpenGLES >= 3.0, OpenGL >= 3.1 or extension
GL_ARB_uniform_buffer_object
is supported. Can be disabled via global option "gl.ubo=0" or env var "GL_UBO=0" - Fix blank display when switching to some videos
- Fix dx swapchain colorspace support check
- Reset some callbacks when destroying player
- Add option "reader.starts_with_key", "0" can decode from non-key. Can be used to reduce latency of network stream
- C++ API:
- Fix callbacks are not thread safe
- Fix MediaStatus callback register only once
- Fix seek, prepare, snapshot callbacks
- Fix video with a single frame not decoded until EOS
- Fix blank display if play another video with only different color primaries
- Fix packet drop
- Fix seek after EOS demuxed
- Use display p3 if hdr10 metadata is invalid
- Read duration from metadata if stream duration is unknown
- Set android application context automatically for ffmpeg 7.0+
- Prefer AudioTrack over OpenSLES
- FFmpeg: Add avformat.video/audio/subtitle_codec_id options
Assets 20
2 people reacted
Previous Next
You canβt perform that action at this time.