For information about our main software product, the zs4 video compositing system, please visit the zs4 web site at www.zs4.net.


products

linux
osx
win32
bsd

autodox

classtree

source code

kernel

Version 0.958, build id 0703161351

Module Description

base classes for it all. arrays, vectors, streams, files, threads, file system as well as the primitive classes for the tab object system and scripting logic, script parser/interpreter end other goodies.
module type : so
license: t@b0
depends on: tabpix

Module History


Version: 0.957

2007 january 19

i_timestein class has 6 new bits in the "Flags" property. they relate to the intrinsic video compositing logic. Also added was a corresponding method Flags2Bitmap() which allows the processing of these flags (FlipX, FlipY, Alpha on/of/reverse) from any object enheriting from i_timestein (video file readers, video effects etc.). The flags added are typically processed right after the input or effect filter received frame data, before any other processing is applied.

2007 january 10

lots of code has been cleaned up to compile without warning on the latest gcc and ms compilers.

Version: 0.953

2006 may 10

extended i_timestein class to accomodate the freeing of excess video memory during video compositing and filtering.

Version: 0.951

2006 feb 22

added "tracklabel" property to i_timestein class (base class for objects with timelined/tweened properties)

Version: 0.950

2006 feb 3

fixed bug where zs4 will not start up (hangs when launching) on both unix systems, osx and linux. this hopefully.

Version: 0.947

2005 11 23

invalidate cached time values in more spots, hoping that crashes on delete-keyframe feature will vanish...

Version: 0.946

2005 10 30

optimized get next/prev keyframe for var-envelopes somewhat (again for cases of many key frames or key frame fetches...

2005 10 29

added more sensible caching algos for optimizing interpolation at high key frame frequencies.

Version: 0.946

2005 10 27

emergency fix. for time variable optimizations. forcing immediate deprication of v0.945

Version: 0.945

2005 09 13

added a member pointer cache for time values, so that the members time and object in these time/object pairs need not be retrieved over and over. also started to correspondingle use optimized member access for this data type.br

Version: 0.944

2005 09 7

removed buffer, locking and threading logic destined for lower level portability layer.

Version: 0.941

2005 august 16

optimized the retrievel of envelope values. (time-varying control values) using binary search strategy.

added a pseudo 3D element to basic compositing, which requires the video mixer to have the pseudo-depth flag set, plus the zposition/zmove variable of the corresponding child tracks.

Version: 0.939

2005 july 24

fixed "displace-variable-envelope" method in i_primitive class.

2005 july 21

added 4 member primitives to timestein object class: BeatsPerMinute, TicksPerBeat, BeatsPerBar and BarsPerPart. this for the purposeof zs4 "remembering" musical timing on a per-track basis.

2005 july 20

added the ability looping capability to the audio/video compositing methods. this is the functionality for smoothly blending both audio and video signals in loops.

Version: 0.937

2005 06 17

fixed the envelope rendering for non-floating point time variables (strings). the result are vertical yellow (key-frame-)lines whereever in a track that the value of a variable (string) changes.

Version: 0.933

2005 05 27

fixed the definition of the "Media Time Offset" variable so that the minimum value is the LOWER value. (this used to mess up the usability of time mapping.

Version: 0.932

2005 05 24

added virtaul method void i_timestein::DrawUserInterfaceAides(tab_bitmap * frame, tabticks at); this happens to enable improved visual feedback in derivative classes (video effects).

Version: 0.930

2005 may 9

added support for variable envelope scaling in the i_primitive object

2005 may 8

added support for better auto documentation in the class timestein and all of it's child/derived classes. the extension specifically handles tweener dependent, timed properties and lists those with links on the devel site (this site).

Version: 0.927

2005 april 24

eliminated quality parameter from i_timestein::GetVideo() and i_timestein::GetVideoMixdown() since the quality argument is now kept in the timestein_params object.

2005 april 19

cleaned up kernel class registration, so that all registration for this module takes place in static cpp methods (faster and uses less stack).br

Version: 0.926

2005 april 15

fixed the center or source bitmap in compositing logic: now the center of a video clip is always the center of the source-cropping rectangle, adjusted by the source-center variables. this should be corresponding better with "intuition" now.

2005 april 13

added a host of items, namely timestein variables for z-position and z-size, which will be used for audio AND video mixing

also added a new base class amix , which serves the purpose of hooking up pan knobs on a mixer interface, with alternative sound- positioning algorithms, like legacy (analog) pan knobs, openAL gaming style positioning of sound, openGL positioning of ojects or custom positioning algorithms. this includes NO IMPLEMENTATION of any sound positioning yet. 2D video positioning has previously worked.

Version: 0.923

2005 feb 13

added timed-variable capability. this allows the properties to mutate in function of time. used for zwobel stobel. in particular the rendering for value-curves over time has been but into the kernel module.

Version: 0.920 and earlier

2005 jan 2

started attacking port of module "kernel", the tab "orb", to osx. notably have no high accuracy clock for osx and thus used the standard "C" function time() and getting micros by multiplying seconds * 1000000. OUCH!.

hmm i'll just blame steve.

Version: 0.918 and earlier

2004-11-01-Mon

added method a_object::which(const char *cmd, a_filebuf * ret); this method will be used to check to local system(path) for and executable called "cmd"...

2004-09-20-Sat

fixed a_subfile class as follows: the ReadBlock() method is no longer implemented via ReadChar() because this slowed down the wave file reader to the point where audio was aonly heard in annoying fragments... but alas! its no longer a problem ( i hope )

2004-09-20-Sat

added #define TABTICKS_PER_SECOND (1000000). this should help scale machine/performance and bitaccuracy at least a tad....

2004-09-16-Sat

fixed error in filebuf preallocation both 32 and 64 bit versions

2004-09-04-Sat

bumped version number to 0.908, since this will be the next release.

2004-09-02-Mon

bumped version number to 0.907, since this will be the next release.

2004-08-30-Mon

added the VolatileGet/Set() method pair to the i_object interface. this one goes hand in hand with the new flag bit "volatile" in the object flags member

august-26-2004

added a t@b class called "long", a 64 bit integer, which will be used as high resolution time index for multimedia functionality. this will be a funcamental pillar of "dig" functionality. In addition to this there-s also a timefloat (old zs functionality) now in the kernel, but using the high precision (64 bit, above) time index for tweening, allowing every audio sample to have its very own effect settings.

august-24-2004

at this point the kernel provides generic file/stream io for all platforms, multi-treading, locking and the base class set for t@b objects like arrays, vectors, (ring-)buffers, interpreter, plugin loader script parser and others...

ancient history

this kernel was first put together in a little system called tass (thut application support system) first on the commodore amiga (mid-late 1980s) and then windows (mid 90s). on the pc it mainly served the purpose of generating multi (second) session content for multi-session music CDs. it offered then an alternative to license-dependent authoring systems and produced in essence a static html website to go with the audio tracks on a music CD. the kernel was later found in the famous thugs at bay video editing system called zweistein (1999-2004), and then an a server suite called x2x router (separate branch of code, by thugs at bay) which included calendar, database, smtp, pop3, telnet, x2x, chat among other things.

Defines T@B-Script Classes

amix, array, bool, bytes, call, char, class, classname, classname_amix, classname_classname, classname_stream, classname_tweener, connect_how, document, document_folder, document_object, document_script, document_text, enum, enumid, file, flagbit, flags, float, float021, float121, floatmmd, history, int, keepalive, kernel_info, keyvalue, keyvalues, label, language, localfile, long, num, object, object_peer, password, primitive, process, result, scriptcomment, scriptkeyword, scriptspecialchar, scripttoken, server, server_peers, server_stdio, stream, string, stringmatcher, stringtext, tabticks, text, timepropinfo, timestein, timevalue, timevalues, tsflags, tweener, tweenolin, tweensquare, tweenweird1, vendorname, zs4_FullRotations, zs4_MediaTimeOffset, zs4_OutputOpacity, zs4_OutputPositionX, zs4_OutputPositionY, zs4_OutputPositionZ, zs4_OutputSizeX, zs4_OutputSizeY, zs4_OutputSizeZ, zs4_RotationAngle, zs4_SourceCenterX, zs4_SourceCenterY, zs4_SourceCenterZ, zs4_SourceCropBottom, zs4_SourceCropLeft, zs4_SourceCropRight, zs4_SourceCropTop, zs4_SourceOpacity, zs4_SourceVolume, zs4_TimeVariables