3.1.1
CSMWrap Version 3.1.1
Changelog since CSMWrap 3.1.0
Miscellaneous bug fixes, mostly surrounding the SeaBIOS storage driver code.
Full Changelog: 3.1.0...3.1.1
Miscellaneous bug fixes, mostly surrounding the SeaBIOS storage driver code.
Full Changelog: 3.1.0...3.1.1
$PIR table is now synthesized from ACPI _PRT/_PRS and handed to SeaBIOS so legacy OSes can get non-ACPI PCI IRQ routing.Set Power State (off/reboot) now trampolines through the helper core into UEFI's ResetSystem runtime service. Previously these calls were no-ops.csmwrap.ini options (system_thread, cpu_allowlist, cpu_blocklist) let you pin the BIOS proxy helper core to a specific APIC ID and hide arbitrary APs.Full Changelog: 3.0.1...3.1.0
You can download it from GitHub.
The highlights of this version are basic, minimal support for OpenFX plugins and hardware scaling for preview scaling with hwaccel decoding.
mlt_properties for better performance.mlt_pool.mlt_properties.getTime())hwaccel_scale filter with preview scaling (scale_vaapi, scale_vulkan, scale_d3d11, scale_vt (macOS)).MLT_AVFORMAT_HWACCEL_PPS to provide a
limiter to hwaccel because transfering uncompressed video between memory
CPU and GPU memory is heavy.
PPS = maximum pixels per second. Anything over it skips hwaccel.lut parameter to avformat producer.attached_pic property to avformat consumer.movit.overlay_blend video filter.compositing property to movit.overlay transition.mix audio transition.rect in kdenlivetitle.subtitle filter.text and qtext filters.qtext style property to support family named styles.qtblend.kdenlivetitle.QImage scaling when downscaling in qtblend.obscure and watermark filters.avformat no-validate mode.linearblend deinterlacer.movit linear color not matching CPU filters.multi consumer making extra linear color conversions.qtblend filter returning unexpectedly large frames.qtext outline encroaching on fill color.eof=loop in Glaxnimate.brightness filter on track below a clip with transparency.melt.A new minor release, FFmpeg 8.1 "Hoare", is now available for download. Here are some of the highlights:
This release features a lot of internal changes and bugfixes. The groundwork for the upcoming swscale rewrite is progressing. The Vulkan compute-based codecs, and a few filters, no longer depend on runtime GLSL compilation, which speeds up their initialization.
A companion post about the Vulkan Compute-based codec implementations has been published on the Khronos blog, featuring technical details on the implementations and future plans.
We recommend users, distributors, and system integrators to upgrade unless they use current git master.
You can download it from GitHub.
This version adds image processing in linear color on the CPU (previously only Movit). Plus, it extends 10-bit video processing on the CPU to many more services.
mlt_image_default_colorspace()mlt_image_default_trc()mlt_image_default_primaries()mlt_color_convert_trc()mlt_consumer property mlt_color_trc to drive a new
color_transform normalizer filter. This sets the color transfer
function to use for image/video effects. It is beneficial and
correct to use linear color for any pixel mixing whether for blending
or interpolation.atexit(mlt_factory_close) in mlt_factory_init(). Close the
factory yourself if you feel the need to (not generally needed when
exiting a process).mlt_service_connect_producer().mlt_profile_is_valid() and Mlt::Profile::is_valid().mlt_consumer_start()mlt_factory_producer()xml producerluma transitionβs dissolve (regression in v7.34.0).decklink consumer (regression in v7.34.0).avformat consumer.hwaccel=vulkan to the avformat producer.color_transform normalizer filter to the core module to convert
all image/video producers to and from linear color. It is abstract in the
core module and drives the following filters:
avfilter.zscalesws_colortransformavfilter.scalesws_colortransform that is more efficient than avfilter.swscale
but requires FFmpeg 8.null consumer:
real_time: -1terminate_on_pause: 1luma and movit.luma transitions to progress linearly with
linear color_trc.xml-clip producer.mlt_image_rgba64 format to:
avcolor_space filteravdeinterlace filteraffine filter and transitionaudiolevelgraph filteraudiospectrum filteraudiowaveform filterautofade filteravformat producer and consumersbox_blur filterbrightness filterpillar_echo filtercolor producerdropshadow filterdynamictext filter (when used with qtext)frei0r.alpha0ps filterfrei0r.alphagrad filterfrei0r.alphaspot filterfrei0r.bluescreen0r filterfrei0r.select0r filterfrei0r.transparency filtergpsgraphic filtergpstext filtergradientmap filterhslprimaries filterhslrange filterkdenlivetitle producerlift_gamma_gain filterlightshow filtermask_apply (when used with qtblend)movit.convert filteroutline filterqtblend filter and transitionqtcrop filterqtext producershape filterspot_remover filterstrobe filtersubtitle filter (when used with qtext)swscale filtertext filter (when used with qtext)timeremap linktimer filter (when used with qtext)vqm transitionmask_apply filter default transition to qtblend.alpha property on the brightness filter
so that you can increase the opacity of an existing alpha channel.gpsgraphic filter.avformat producer.avformat presets.win32/strptime.c and replaced with Qt functions.melt usage on error exit.You can download it from GitHub.
This versions adds 10-bit video processing on the CPU, but you must ensure you are using compatible filters and transitions.
mlt_image_rgba64 format. This change touched core, avformat, and qt modules as well.mlt_color_trc, mlt_color_primaries, and more mlt_colorspaces along with functions:
mlt_image_color_trc_namemlt_image_color_trc_idmlt_image_colorspace_namemlt_image_colorspace_idmlt_image_color_pri_namemlt_image_color_pri_idcppcheck.luma transition.affine filter and transition.qtblend transition.avformat module.panner filter for 5.1 channel layout.avformat producer (regression in v7.30.0).kdenlivetitle producer.mask_apply filter with custom transition.input_chmask & output_chmask properties to mono filter.channel_mask property to LADSPA/LV2/VST2 filters.channel_mask to the volume filter.outline video filter.% in the name in qimage producer.decklink consumer.& not decoded to & in the xml producer.avformat module.ladspa module without JACK as dependency.jackrack and ladspa modules.qtblend_mode.qtblend.avformat producer.opencv_tracker filter on cut playlist clips.avfilters that use it (e.g. avfilter.colorspace).qtext filter.avformat producer.melt now exits with 1 if the producer is invalid.melt.-progress2 option for melt.find_package().libgen.c and libgen.h for MSVC.You can download it from GitHub.
mlt_service_set_consumer() and `Mlt::Service::set_consumer().mlt_multitrack to not request a frame from a producer that is
both hidden and muted.avformat producer.yuva422p pixel format in avformat producer.MLT_AVFORMAT_HWACCEL & MLT_AVFORMAT_HWACCEL_DEVICE environment
variables to avformat producer.decklink module for recent hardware and drivers.colorspace and color_trc (including HDR) properties to the
decklink consumer.decklink consumer.decklink consumer.kdenlivetitle producer.movit module.movit module (requires ddennedy/movit fork).opencv_tracker filter should require multiple keyframes to be ready.rect <= 1 pixel in opencv_tracker filter.qtblend filter and transition.QT_QPA_PLATFORM=offscreen not working in qt and glaxnimate modules.qtblend filter.qtblend filters or transitions.sdl2 consumer on macOS.strobe filter not working with movit.timeremap link with movit.channels) missing on qglsl consumer
injected by the xml producer.You can download it from GitHub.
Mlt::Producer::set_creation_time() not exported on i686.Mlt::Properties::set(int64_t) symbol version.mlt_factory_init() on Linux/BSD may fail to initialize when
compiled with -DRELOCATABLE.mlt_property.c.
Previously, it was only done for 30000/1001 and 60000/1001 frame rates,
but 24000/1001 is especially important as well.xml-clip producer handles mismatching frame rate
between parent and child producers and facilites time-affecting links on
the child.mlt_image_full_range(const char *color_range) where any of the
following strings return true (1): full, jpeg, pc.xml-clip producer.in and out properties arenot serialized in the xml consumer.hslprimaries and hslrange filters to the plus module.gradientmap filter to the plus module.avfilter audio filters with FFmpeg 7.avformat.window_id property in consumer sdl2 by using
SDL_CreateWindowFrom(), especially important for embedding in GTK+ or Qt.vqm since Qt 6.decimals keyword to gpstext filter and move RAW keyword check.time_offset property handling in gpstext filter.subtitle_feed filter on producers with an in point > 0.luma transition.mix transition with consumer producer.freeze filter freezing too much.avfilter.fillborders with preview scaling.qtblend transition and filter.avfilter color distortion with mlt_image_rgb and mlt_image_rgba.colorspace=2020 consumer property and the BT.2020
colorspace in the avformat producer and consumer.
This does not imply HDR, which is signaled through a color_trc property.mlt_image_yuv420p10, mlt_image_yuv444p10, and
mlt_image_yuv422p16 in avfilter, swscale, and rescale filters.
This facilitates using these pixel formats end-to-end when using only
FFmpeg producers, certain avfilters, and avformat consumer.
This means it is possible to do 10-bit end-to-end on the CPU when being
careful to select compatible components and options to avoid conversions.
One can pass-through HDR; however, you must set the color_trc and
pix_fmt properties on the avformat consumer (see ffmpeg -h full for
these values). The avformat consumer automatically converts MLT
colorspace (integer value) to FFmpegβs colorspace and color_primaries
(unless explicit) options.src/swig.x264-medium preset to a higher quality.You can download it from GitHub.
This fixes a couple of major regressions in the previous version 7.26.0:
melt to render MLT XML with OpenGL effects from movit.Other fixes and changes:
composite transition and the sdl and ndi modules.xml producer.melt -query or melt -query links.transition property to the watermark filter. Now, it defaults
to using affine.affine transition argument to set rect property if supplied.You can download it from GitHub.
This release adds support for subtitles and LV2 & VST2 audio plugins.
Mlt::Service::profile().avformat producer:
r_frame_rate over avg_frame_rate.lowres if set too high.audio_index=all.variable_frame_rate incorrectly set true on 59.94 fps in Matroska.movit transitions with a non-movit filter on one of its inputs.glaxnimate producer off by one frame.dropshadow filter to the qt module.kdenlivetitle producer.jackrack module.av.declick audio filter on FFmpeg 7.subtitle filter and producer and subtitle_feed filter to the plus module.avformat consumer (new properties beginning with βsubtitle.β).alang in the the avformat consumer.#gps_power keyword to the gpstext filter.kdenlivetitle producer.melt command line.-loglevel command line option to melt.You can download it from GitHub.
The highlight of this release is support for FFmpeg 7 and Ambsonic audio.
mlt_repository.MltPushConsumer C++ class.locale.h on any GNU libc platform.spatialaudio module with filters:
ambisonic-decoderambisonic-encoderpixbuf produceropencv_tracker filterdynamictext filterqimage produceravformat producer.distort property not working in movit.rect filter.multi consumer.dynamic_loudness filter maximizing audio gain.mono filter.WAYLAND_DISPLAY to detect a graphical session in the qt
and glaxnimate modules.wave filter distorts if wave = 1 with preview scaling.meta.media.%u.codec.layout property to avformat producer.channel_layout property on the frame for the noise and tone
audio producers.outline maximum for the text and dynamictext filters.-chain from melt.fopen().You can download it from GitHub.
The highlight of this release is support animation easing functions via new keyframe types. Also, new versions of the smooth keyframe type is added that avoids overshoots and cusps.
mlt_property_is_color()mlt_property_is_numeric()mlt_property_is_rect()mlt_keyframe_smooth_loose - ~= (same as old mlt_keyframe_smooth - Unity Catmull-Rom spline)mlt_keyframe_smooth_natural - $= (Centripetal Catmull-Rom spline with natural slope)mlt_keyframe_smooth_tight - -= (Centripetal Catmull-Rom spline with 0 slope)mlt_keyframe_sinusoidal_in - a=mlt_keyframe_sinusoidal_out - b=mlt_keyframe_sinusoidal_in_out - c=mlt_keyframe_quadratic_in - d=mlt_keyframe_quadratic_out - e=mlt_keyframe_quadratic_in_out - f=mlt_keyframe_cubic_in - g=mlt_keyframe_cubic_out - h=mlt_keyframe_cubic_in_out - i=mlt_keyframe_quartic_in - j=mlt_keyframe_quartic_out - k=mlt_keyframe_quartic_in_out - l=mlt_keyframe_quintic_in - m=mlt_keyframe_quintic_out - n=mlt_keyframe_quintic_in_out - o=mlt_keyframe_exponential_in - p=mlt_keyframe_exponential_out - q=mlt_keyframe_exponential_in_out - r=mlt_keyframe_circular_in - s=mlt_keyframe_circular_out - t=mlt_keyframe_circular_in_out - u=mlt_keyframe_back_in - v=mlt_keyframe_back_out - w=mlt_keyframe_back_in_out - x=mlt_keyframe_elastic_in - y=mlt_keyframe_elastic_out - z=mlt_keyframe_elastic_in_out - A=mlt_keyframe_bounce_in - B=mlt_keyframe_bounce_out - C=mlt_keyframe_bounce_in_out - D=mlt_service_transition in Mlt::Producer() C++
constructor.rotoscoping filter crash on image with height = 0.qtblend transition requesting an image of 0 width or
height.rtaudio consumer.createdate keyword deletes preceeding text in dynamictext filter.opacity property to filters that use qtext:
dynamictextgpstextqtexttimerfade_video, fade_audio, and fade_color properties to autofade
filter.frei0r.measure_pr0befrei0r.measure_pr0filefrei0r.tehroxx0rfrei0r.alpha0ps_alpha0psfrei0r.alpha0ps_alphagradfrei0r.alpha0ps_alphaspotfrei0r.denoise_hqdn3davformat producer with consumer deinterlacer=yadif.qimage producer color if consumer color_range=pc pix_fmt=yuv444p.ten_bit/ProRes 422 avformat preset produced ProRes 444.YouTube avformat preset did not output high profile with some
hardware encoders.You can download it from GitHub.
mlt_color transparent black as β#00000000β when the property was set using an integer or mlt_color.mlt_chain_set_source() would always fetch a frame from the producer even if it has βmeta.media.frame_rate_numβ and βmeta.media.frame_rate_denβ properties making things slow.Mlt::Chain leaking memory.blank producer to the core module.gpstext filter:
#gps_cadence##gps_grade_degrees##gps_grade_percentage##gps_temperature#color_styles to the gpsgraphic filter:
legend_unit property of gpsgraphic filter:
mmin or m/minftmin or ft/mindynamictext filter:
#basename##filename#filter_audioseam.yml.avlink link to the avformat module for FFmpeg filters that can benefit from future frames such as adeclick.preserve_alpha property to the box_blur filter.qt6 and glaxnimate-qt6 modules.rotate property in avformat producer with interlace video.astream and vstream properties to avformat producer. Unlike audio_index and video_index are absolute indices across the entire array of streams regardless their type, these new 0-based properties are relative to the type audio or video. For example, astream=1 is the second audio stream.avformat producerβs mlt_producer_probe virtual function.glaxnimate module to version 0.5.4.sdl2 consumer crashing with the Linux radeonsi_dri driver and showing only all black with the Linux nvidia driver.avformat consumer FLAC preset to use the flac format.melt Shift+H and Shift+L keyboard shortcuts when the SDL2 window has focus.You can download it from GitHub.
mlt_audio_free_data().meta.playlist.clip_position and meta.playlist.clip_length properties to mlt_playlist.mlt_frame_get_audio fails on mlt_audio_none.audioseamautofadevidstab filter on image format change.qtext filter on Qt 6.rescale filter.kdenlivetitle producer.count producer.frei0r module.deinterlace link was added to invalid producer in xml producer.kdenlivetitlepangoqimageqtextavformat producers that only indicate
on their container format and not on frames such as Ut Video in Matroska.qimage producer on Qt 6.speed_map in timeremap link.movit module.avformat producerβs deallocation function for AVCodecContext.qtblend and frei0r.cairoblend transitions.avformat producer seek_threshold default to 64.ebur128 filter to version 1.2.6.Full Changelog: 3.0.0...3.0.1
csmwrap.ini placed alongside the EFI executable. See README.md for available options.Full Changelog: 2.1.0...3.0.0
uacpi_kernel_io_map() bounds trackingfind_table buffer overread and add VBIOS size bounds checkprintf format specifier for EFI_PHYSICAL_ADDRESS on ia32get_nanoseconds_since_boot for sub-1GHz TSCget_nanoseconds_since_boot() intermediate overflowExitBootServices retry to re-call GetMemoryMap to avoid stale map keyvbios_loc memcpy against NULL__builtin_ffs against zero PixelBitMask to avoid bogus mask position-1ULL for EfiAcpiAddressRangeHole to ensure consistent width on ia32get_unix_epoch nanosecond parameter to uint32_t to match EFI_TIMEtime.c/h)panic() functionpci_early_initialize failsacpi_init() return valuepause instruction to VT-d polling loopsRuntimeServicesData to prevent OS reuseExitBootServices to prevent stale accessuintptr_t comparison in memmove to avoid relational pointer UBdelay_us() tick count for sub-MHz timer frequenciesadd_bar return value for bridge window BARstype==0 check in e820 (convert_memory_type never returns 0)AssignedDriveNumber (SeaBIOS uses BootPriority only)Full Changelog: 2.0.0...2.1.0
Many other minor fixes and improvements!
Full Changelog: 1.3.0...2.0.0
Many bug fixes and improvements, and reapplication of (fixed versions of) previously reverted commits.
Add support for loading a custom VGA Video BIOS from \EFI\CSMWrap\vgabios.bin, if present.
Full Changelog: 1.2.3...1.3.0
Thanks to @FarelRA and other contributors, we now have a comprehensive documentation collection on our GitHub wiki!
Full Changelog: 1.2.1...1.2.2
General changes:
Updated configuration settings:
&=~ operator and fixed the broken = operator
General changes:
Updated configuration settings:
New configuration settings:
General changes:
Updated configuration settings:
New configuration settings:
Removed configuration settings:
General changes:
Updated configuration settings:
New configuration settings:
Update (October 6, 2024): The v0.5.2-17-g291e50ac and older builds in the DDrawCompat-v0.5.3-debug-previous-builds.7z asset were broken by the Windows 11 24H2 update. Patched builds have been added with the DDrawCompat-v0.5.3-debug-previous-builds-win11-24h2.7z asset to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes. v0.5.2-18-g89b2a631 and newer builds are also included for completeness' sake. These were simply recompiled without source code changes.
General changes:
Updated configuration settings:
New configuration settings:
Update (October 6, 2024): This release was broken by the Windows 11 24H2 update. Patched builds have been added with the win11-24h2 suffix to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes.
This release fixes some issues introduced in v0.5.0:
Update (October 6, 2024): This release was broken by the Windows 11 24H2 update. Patched builds have been added with the win11-24h2 suffix to resolve the issue by backporting the following commit: 89b2a63. See diff.txt in the new builds for the exact changes.