Release Notes for version 0.5.2
This is the Release Notes for Snowmix.
- Release Notes for version 0.5.2 (this version).
- Release Notes for version 0.5.1 (older version).
- Release Notes for version 0.5.0 (older version).
If you are looking for the Release Notes for versions prior to version 0.5.0, please see here.
Snowmix version 0.5.2
See also release news for detailed discussion an example of new cammands and changed functionality.
Overall Theme
Adding a framework for loading and writing images asynchrously in other threads to prevent delays in videomixing.
Adding a framework for indexed images which makes it easier to create image animation applications.
Adding a framework for multiple monitor windows and better control of these. Display control for monitor when multiple displays (physical screens) are available.
Adding live chroma keying (a.k.a. green screen etc.). Chroma keying is alpha code.
Adding support for I420, Y42B and Y444 for video input.
Adding support for either RGBA or BGRA set at configure/compile time.
Adding framwork for embedded Python interpreter similar to the embedded Tcl Interpreter.
New functionality (The list is not complete):
The following new functionality has been added to existing commands:
- Idle images for feeds are now cached and reused (faster and less memory usage)
- Loaded images can now be used as idle image for feeds.
- Feeds can now accept format I420, Y42B and Y444 in addition to BGRA/RGBA.
- Command feed info now also list feed format.
- The command 'monitor on' now has the following syntax supporting fullscreen:
- Command 'system mixer' can be used to ensure mixing is also taking place when no process is reading output frames from Snowmix.
- Command 'system stacking' can be used to disable stacking lowering CPU usage.
- Command 'command addatline' can now take negative line number counting from end.
- Command 'image write' can now write a PNG file and it works asynchrously to ensure writing a file does not delay video mixing.
- Command 'shape modify' can be used as a fast way to modify settings in an entry in a shape macro similar to the 'glshape modify' function.
- Images can be loaded asynchrously preventing delay in video mixing.
- The command 'bg fill' can now be used to control how a new mixer frame is intialized in a separate thread before used for mixing.
- The command 'system keyhandler' can now be used to call a keyboard event handler.
- Snowmix now supports an embedded Python interpreter.
- Indexing loaded images and manipulating the index pointer for image animation.
- Premultiplication of image pixels values with their alpha value.
- Saving and restoring alpha values within a shape.
- Dynamic change of number of place holders for text, image, vfeed, shape, glshape, audio feed, audio mixer and audio sink.
- Command 'feed keeplast' to make feed maintain last received image.
- Sending messages across control connections and from main mixer loop to specific control connection.
- Auto execution of individual configurable command on close of control connection.
- The 'help' command can now take an argument to list help topics available.
- Command 'audio sink tcp' to connect to a local or remote Snowmix audio feed or other TCP listener.
- Configurable command to be executed upon state change for video feeds.
- The command 'system mousehandler' and "system mousemotion" can now be used to call a mouse event handler.
monitor [(on | off | full) | (<width> <height>) | <display no>]
See ChangeLog for details and syntax of new commands.
Bug fixes:
The following list is partly complete. See ChangeLog for all bugfixes.
- Linear pattern in a shape would not work if alpha was less than 1 for a placed shape.
- Command 'glshape modify' syntax was listed wrongly in 'gl help'.
- Command 'include' when used with command 'command at' would crash Snowmix.
- Using absolute path (starting with '/') would fail in some cases.
- The Update function for audio mixers called at frame rate before mixing would in some cases calculate and update RMS values in wrong places possibly leading to fatal memory corruption and memory errors.
- Premultiplication of image pixels values fixes issue with transparent images and green-screening.
- Incorrect number of fonts returned for tcl command "snowmix info system maxplaces"
New commands:
The following 62 new commands has been added to this version of Snowmix:
- audio feed close // (Do not use for production - unresolved race condition)
- audio feed maxplaces
- audio mixer maxplaces
- audio sink maxplaces
- audio sink fadefactor
- bg add
- bg delete
- bg fill
- bg help
- bg info
- bg verbose
- feed chroma angle
- feed chroma color
- feed chroma info
- feed chroma key
- feed chroma level
- feed chroma snapshot
- feed chroma state
- feed chroma table
- feed chroma threads
- feed format
- feed keeplast
- image loadasync
- image index
- image index load
- image index set
- image index incr
- image premultiply
- image pixel
- image maxplaces
- glshape maxplaces
- messagec
- monitor add
- monitor aspect
- monitor bgworker
- monitor center
- monitor coor
- monitor display
- monitor geometry
- monitor scale
- monitor source
- monitor verbose
- monitor help
- python eval
- python exec
- python reset
- python help
- shape alpharestore
- shape alphasave
- shape help modify
- shape modify
- shape alphadd // (was already included but not listed)
- shape alphamul // (was already included but not listed)
- shape offset
- shape maxplaces
- system ctr id
- system ctr onclose
- system frame write
- system mixer
- system stacking
- text maxplaces
- vfeed maxplaces
See details in the ChangeLog.
The embedded Python interpreter adds the following new Python methods to interact with Snowmix:
- snowmix.info()
- snowmix.message()
- snowmix.parse()
- snowmix.parses()
These methods are for the embedded Python interpreter similar to the commands for the embedded Tcl interpreter "snowmix info", "snowmix message", "snowmix parse" and "snowmix parses". The snowmix.info method returns a Python list containing requested info.
See details in the ChangeLog.
Bugs:
Chroma keying has a race condition bug for when disconnecting a chroma keyed feed sometimes occasionally feezing Snowmix. It may help stopping chroma keying in Snowmix before disconnecting. Chroma keying is alpha code.
Using format I420, Y42B and Y444 for video feeds may have the same race condition issue although this has not been observed in production.
The command 'audio feed close' has a race condition occasionally feezing Snowmix. Do not use this command in a production environment. The command is for now for debugging only.
Compile and install:
The support for Python is alpha code and support for Python needs to be specified at compile time.
Please see the compile and install instructions for version 0.5.2
Tested platforms:
Snowmix 0.5.2 was developed on Linux Ubuntu 14.04 x86_64 and tested on Linux Ubuntu 16.04 x86_64 as well as Raspian 8 Jessie armv7l (Pi 2/3) and on OS X Sierra.
Snowmix 0.5.2 has not yet been thoroughly tested on Mac OS X as opposed to 0.5.1. Donations for Mac hardware to help the situation are welcome.
This version of Snowmix has before release been tested on:
- Mac OS X 10.13.1 HighSierra (OpenGL excluded for now).
- Mac OS X 10.12.6 Sierra (OpenGL excluded for now).
- Mac OS X 10.11.3 El Capitan (OpenGL excluded for now).
- Mac OS X 10.10.5 Yosemite (OpenGL excluded for now).
- Mac OS X 10.9.5 Mavericks (OpenGL excluded for now).
- Mac OS X 10.8.5 Mountain Lion (OpenGL excluded for now).
- Not Linux Centos 7 15.11 amd64 (See comments)
- Not Linux Chakra 15.11 Fermi amd64. (See comments)
- Linux Debian 8.2 amd64 and 9.2 amd64. (See comments)
- Not Linux Fedora Workstation 23 amd64. (See comments)
- Linux Mint Cinnamon 17.3 amd64.and 18.3 amd64
- Not Linux OpenSUSE Leap 42.1 amd64.
- Not FreeBSD PCBSD10.2. (See comment about /bin/bash)
- Linux Ubuntu 14.04 LTS amd64 and ARMv7
- Linux Ubuntu 16.04 LTS amd64
Comments on installing on various platforms:
Please see compile and install instructions for further details.
- Mac OS X:The bootstrap script will install all that is needed. However, GUI tools may not work properly unless you have upgraded tcl/tk/wish from 8.4 or 8.5 to 8.6.4 or newer.
- CentOS: You need to add rights to do 'sudo' for the user compiling and installing Snowmix. The program snowmix_demo needs encoder and decoder modules for GStreamer for H.264 and AAC (unclear how get this).
- Chakra: Compiles and runs fine, but needs BWidget to run GUI apps. BWidget seems not to be available for Chakra although it is for Arch Linux. You may be able to download and install BWidget from Sourceforge manually.
- Debian: Needs package 'sudo' to be installed. Need to add rights to do 'sudo' for the user download and install missing tools/libs and for installing Snowmix.
- Fedora: Fedora 23. You need to add the rpmfusion repository and install relevant gstreamer
plugins to run the snowmix_demo. Similar for Fedora 22, but untested.
sudo rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-23.noarch.rpm sudo rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-23.noarch.rpm sudo dnf install gstreamer-plugins-bad gstreamer-plugins-bad-free-extras \ gstreamer-plugins-bad-nonfree gstreamer-plugins-ugly gstreamer-ffmpeg \ gstreamer1-libav gstreamer1-plugins-bad-free-extras gstreamer1-plugins-bad-freeworld \ gstreamer1-plugins-base-tools gstreamer1-plugins-good-extras gstreamer1-plugins-ugly \ gstreamer1-plugins-bad-free gstreamer1-plugins-good gstreamer1-plugins-base gstreamer1 - Mint:The bootstrap script will install all that is needed.
- PCBSD: You need to execute the following command "sudo ln -s /usr/local/bin/bash /bin/bash" for the scripts to work. Run all commands in bash rather than other shells. No video/image sinks was found for GStreamer1.0 for PCBSD10.2. No 'wish' needed for tcl GUI programs was found.
- OpenSUSE: The package gstreamer-plugins-libav isn't found by zypper. You need to find the right version yourself and install it manually. Without it, you may miss important decoders such as decoder for H.264 etc.
- Ubuntu:The bootstrap script will install all that is needed.
