Category: Uncategorized

WebCodecs in StreamingServer for JavaScript H.264 decoding

One another small addition to StreamingServer showcase/development application: verification for WebCodecs API video streaming. WebCodecs API offers browser applications video decoding capabilities: The WebCodecs API gives web developers low-level access to the individual frames of a video stream and chunks of audio. It is useful for web applications that require full control over the way…

Read the full article

MPEG-DASH trick play adaptation set

Just a small addition to MPEG-DASH server: a separate trick play video track with 1 fps just IDR frames track. The “trick mode” itself is essentially this: 3.2.9. Trick Mode Support Trick Modes are used by DASH clients in order to support fast forward, seek, rewind and other operations in which typically the media, especially…

Read the full article

MPEG-DASH content in StreamingServer application

MPEG-DASH is ISO/IEC 23009 “Dynamic Adaptive Streaming over HTTP” specification. This is widely used to stream audiovisual content over internet opposed to playback of static content such as downloaded clip. The StreamingServer application I published some time ago generated test content using HTTP Live Streaming protocol, which is, well, similar. So I extended StreamingServer a…

Read the full article

Wait for IAsyncAction on STA thread

Figured out how to elegantly do a blocking wait for an asynchronous coroutine-enabled function on a STA thread. You can’t do this: There is an assertion failure because .get() assumes ability to block. On STA this hits a failure in winrt::impl::blocking_suspend call. So you have to avoid doing .get() to synchronize and there should be…

Read the full article

Hardware AV1 video encoders are coming

There is something interesting finally happening with video encoding and also Media Foundation: Intel® Hybrid AV1 Encoder MFT 11 Attributes: MFT_TRANSFORM_CLSID_Attribute: {62C053CE-5357-4794-8C5A-FBEFFEFFB82D} (Type VT_CLSID) MF_TRANSFORM_FLAGS_Attribute: MFT_ENUM_FLAG_HARDWARE MFT_ENUM_HARDWARE_VENDOR_ID_Attribute: VEN_8086 (Type VT_LPWSTR) MFT_ENUM_HARDWARE_URL_Attribute: AA243E5D-2F73-48c7-97F7-F6FA17651651 (Type VT_LPWSTR) MFT_INPUT_TYPES_Attributes: {3231564E-3961-42AE-BA67-FF47CCC13EED}, MFVideoFormat_NV12 MFT_OUTPUT_TYPES_Attributes: MFVideoFormat_AV1 MFT_CODEC_MERIT_Attribute: 7 (Type VT_UI4) MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE: 1 (Type VT_UI4) MF_TRANSFORM_ASYNC: 1 (Type VT_UI4) Intel UHD graphics coming…

Read the full article

Modern asynchronous C++

Windows API offers asynchronously implemented functionality for file, network and other I/O since long ago. It was maybe one of the easiest way to make a simple thing messy and ridiculously bloated and sensitive to errors of sorts. If you’re sane and you don’t need to squeeze everything out something you would just not use…

Read the full article