XAnim(1)XAnim(1)NAMExanim - multiformat animation/video/audio viewer for X
SYNOPSISxanim [ +Vnum ] [ +Aaopts ] [ +Ccopts ] [ +Ggopts ] [
+Mmopts ] [ +Ssopts ] [ +Wwopts ] [ +Zzopts ] [
+opts ] animfile [ [ +opts ] [ animfile ] ... ]
DESCRIPTION
XAnim is a program that can display animation/video/audio
files of various formats on systems running X11. XAnim
currently supports the following animation types:
+ FLI animations.
+ FLC animations.
+ IFF animations. The following features are sup-
ported:
+ GIF87a and GIF89a files.
+ GIF89a animation extension support.
+ a kludgy text file listing gifs and what order
to show them in.
+ DL animations. Formats 1, 2 and partial 3.
+ Amiga PFX(PageFlipper Plus F/X) animations. TEMP
DISABLED
+ Amiga MovieSetter animations(For those Eric
Schwartz fans).
+ Utah Raster Toolkit RLE images and anims.
+ AVI Animations.
+ Quicktime Animations.
+ SGI Movie Format Files.
+ WAV audio files may have their sound added to
any animation type that doesn't already have
audio, by specifying the .wav file after the
animation file on the command line.
+ AU audio files may have their sound added to any
animation type that doesn't already have audio,
by specifying the .wav file after the animation
file on the command line.
+ JFIF images. NOTE: use XV for single images.
This is more for animation of a sequence of JPEG
images.
+ MPEG animations. NOT FULLY SUPPORTED. NO AUDIO.
And currently only Type I Frames are displayed.
Type B and Type P frames are currently ignored,
but will be added in future revs. It also
doesn't handle MPEGs with audio streams.
+ any combination of the above on the same command
line.
+ See the file "Formats.doc" for specific support
details for each format.
NOTE_1:
Please read the "README.dll", "README.zlib",
"cinepak.readme", "indeo.readme" and "cre-
ative.readme" files
XAnim 2.80.1 21Mar99 1
XAnim(1)XAnim(1)
XAnim also provides various options that allow the user to
alter colormaps, playback speeds, looping modes and can
provide on-the-fly scaling of animations with the mouse.
OPTIONS
A + will generally turn an option on and a - will turn an
option off. This can be reversed at compile time. (see
xanim_config.h).
In each SubMenu, the options can be run together with no
intervening spaces. In the list of SubMenu options pre-
sented below, the first letter given is the letter that
specifies the SubMenu and should NOT be repeated if sev-
eral SubMenu options are to be run together.
For example, "+Cn +Cs10 +CF4" can also be written as
"+Cns10F4" or "+CF4s10n".
A + or a - within a SubMenu will be an exit from that sub-
menu. Options will affect all animations following the
invocation of that option. Some options may be changed in
between animations without affecting previous animations.
In the following sections, an num represents an integer
number and an fnum represents a floating point number. If
a floating point number is of an integer amount, the .
need not be specified. There should be no spaces between
the option and the numbers.
aopts SubMenu for Audio Options
+ADdev AIX Only. Specify audio device. Default is
/dev/paud0/1 . Another common audio device
is /dev/acpa0/1 . For example:
"+AD/dev/acpa0/1".
+Ae Audio Enable. XAnim will ignore audio data
if this option is not used.
+Ak This option allows XAnim to skip video
frames in order to help keep video in sync
with audio. default is on.
+Am Take the audio from the next audio-only
file and use it with the video file previ-
ous to it. Any audio already existing in
that video file will be discarded. NOTE:
XAnim by default will add audio from an
audio-only file to a previous video only(ie
not audio) file. This option just forces
the issue if the previous file already has
audio.
+AM Take the audio from the next audio-only
XAnim 2.80.1 21Mar99 2
XAnim(1)XAnim(1)
file and use it with the video file previ-
ous to it. And in addition, scale the tim-
ing of that video file to be of the same
duration of this audio file. Any audio
already existing in that video file will be
discarded.
+Apnum This turns a hardware specific Audio port
on or off. The default port is selectable
in xanim_config.h. It's shipped with inter-
nal speaker as default.
+Asfnum Scale Audio playback speed by "fnum". Only
the range 0.125 to 8.00 is allowed. NOTE:
Video does not currently scale with the
audio.
0 - internal speaker
1 - headphones or external speaker
2 - line out
+Avnum Sets the inital Audio Volume(0-100) with 0
the lowest. default is 40.
copts SubMenu for Color Options
+C1 Create a colormap from the first frame of a
TrueColor anim and then remap the remaining
frames to this colormap. This can poten-
tially add significant time to the startup
of an animation but usually results in bet-
ter colors. The animation needs to be
buffered for this option to work. Not valid
for TrueColor or DirectColor displays(nor
is it needed).
+C3 Convert TrueColor anims to 332(Static-
Color). TrueColor anims are animations that
provide separate RGB info for each pixel,
rather than each pixel being an index into
a global colormap. AVI(16bit CRAM), QT(RPZA
and RLE depth 16 and 24) and URT RLE 24 bit
anims are examples of TrueColor anims. This
option is ignored for TrueColor or Direct-
Color displays.
+CA Create a colormap from each frame of a
TrueColor anim. This can be useful if the
colors radically change during the course
of the animation. This can take a VERY,VERY
long time at start up. Animation must be
buffered. This option is ignored for
XAnim 2.80.1 21Mar99 3
XAnim(1)XAnim(1)
TrueColor or DirectColor displays.
+Ca Remap all images to single new cmap created
from all of the colormaps.
+Cd Use Floyd-Steinberg dithering if needed for
non-monochrome displays. This will cause a
reduction in playback speed.
+Cf Forcibly remap to all frames to 1st frame's
cmap.
+CF0 Disables +CF4.
+CF4 This option samples the colors of true
color animations ahead of time and forms a
color lookup table. Beats the just trun-
cating to a RGB 332 color table and IMHO
beats dithering. See the +s option
below(also in copts submenu). NOTE: this
is now on by default.
+Cg Convert TrueColor anims to gray scale. This
option is ignored for TrueColor and Direct-
Color displays.
+Ch Use histogram to aid in color reduction.
Histrogramming is only done on frames that
are buffered.
+Cm This option is currently needed if you want
to dither TrueColor anims to a 332 col-
ormap. Animation must be buffered. Typi-
cally +bC3dm is the option to use. This can
take a VERY long time at start up.
+Cn Don't create new colormap but instead allo-
cate colors from the X11 Display's default
cmap.
+Csnum This is the number of frames the +CF4
option looks at ahead of time. More frames
potentially yields better colors results,
but takes more time at start up. default
is 5.
gopts SubMenu for Gamma Options
+Gafnum Set gamma of animation to be displayed.
+Gdfnum Set gamma of display. 1.0 is no change.
gamma's greater than 1.0 typically brighten
the animation.
XAnim 2.80.1 21Mar99 4
XAnim(1)XAnim(1)
mopts SubMenu for Median-Cut Quantization Options
+Ma compute box color from average of box.
+Mc compute box color as center of box.
+Mbnum Truncate rgb to num bits before quantizing.
sopts SubMenu for Scaling Options
+Si Half the height of IFF anims if they are
interlaced.(Not completely reliable since
not all IFF anims correctly identify them-
selves as interlaced).
+Sn Prevents X11 window from resizing to match
animations's size.
+Sr Allow user to resize animation on the fly.
Enlarging an animation can greatly reduce
playback speed depending on the power of
the cpu.
+Ssfnum Scale the size of animation by fnum before
displaying.
+Shfnum Scale the horizontal size of the animation
by fnum before displaying.
+Svfnum Scale the vertical size of the animation by
fnum before displaying.
+Sxnum Scale the animation to have width num
before displaying.
+Synum Scale the animation to have height num
before displaying.
+Sc Copy display scaling factors to display
buffering factors.
+SSfnum Scale the size of the animation by fnum
before buffering it.
+SHfnum Scale the horizontal size of the animation
by fnum before buffering it.
+SVfnum Scale the vertical size of the animation by
fnum before buffering it.
+SXnum Scale the animation to have width num
before buffering it.
+SYnum Scale the animation to have height num
XAnim 2.80.1 21Mar99 5
XAnim(1)XAnim(1)
before buffering it.
+SC Copy buffer scaling factors to display
scaling factors.
wopts SubMenu for Remote Window and Control Options.
NOTE: See the file Remote_Window.doc for more
details.
+Wid Specify X11 Window id of window to draw
into.
+Wd Don't refresh window at end of anim.
+Wnstring
Use property string for communication.
Default is XANIM_PROPERTY
+Wp Prepare anim, but don't start playing it.
+Wr Resize X11 Window to fit anim.
+Wxnum Position anim at x coordinate num.
+Wynum Position anim at y coordinate num.
+Wc Position relative to center of anim.
zopts SubMenu for Special Options
+Ze XAnim will exit after playing through com-
mand line once.
+Zpnum XAnim pause at frame num and then wait for
user input. Several pauses may be speci-
fied. Each group of pauses will only affect
the animation immediately following them on
the command line. Pauses will occur at
least once.
+Zpe XAnim will pause on the last frame of the
animation.
+Zr This option pops up the Remote Control Win-
dow. This overrides the default condition
set in xanim_config.h. Remote Control sup-
port must be compiled into XAnim for this
to work.
+Zv This option cause XAnim to exit prior to
even displaying the animation. This is
useful in conjunction with the +v option if
you just want to obtain info about the
XAnim 2.80.1 21Mar99 6
XAnim(1)XAnim(1)
animation without actually playing it.
Normal Options
+b Uncompress and buffer images before dis-
playing. This only applies to AVI, QT, IFF,
FLI, FLC, JPEG, MPEG and DL animations.
The rest(GIF87a, GIF89a, PFX and RLE) are
currently always uncompressed and buffered.
This is cleared by the +f option.
+B Used X11 Shared Memory(if present) for
unbuffered animations only.(This is mutu-
ally exclusive with +b above).
+D Use X11 Multi Buffering (if present) to
smooth animations by double-buffering.
Default is on.
+f Don't load anim into memory, but read each
section only when needed. This is supported
only for AVI, QT, IFF, FLI, FLC, JPEG, MPEG
and DL animations. This option is cleared
by the +b option. This saves memory at the
cost of speed.
+c let xanim know that iff anim is a nonloop-
ing one.
+dnum debug switch. num can be from 0(off) to
5(most) for level of detail.
+F Floyd-Steinberg dithering when needed.
+jnum num is the number of milliseconds between
frames. if 0 then the time specified in the
animation is used for timing purposes.
+lnum loop animation num number of times before
moving on to next animation.
+lpnum ping-pong animation num number of times
before moving on to next animation.
+N don't display images. Useful for benchmark-
ing.
+o turns on certain optimizations. See
xanim.readme.
+p Use Pixmap instead of Image in X11. This
option has no effect if the animation is
buffered(either by default or with the +b
option).
XAnim 2.80.1 21Mar99 7
XAnim(1)XAnim(1)
+q Prevents XAnim from printing out the title
header. Useful for when XAnim is called by
other programs where no tty output is
desired(doesn't affect +v or +d# options).
+root Tiles animationvideo onto X11 root screen.
+r Allow color cycling for IFF single images.
+R Allow color cycling for IFF anims. (default
should be off)
+T0 Title option 0. Title is just XAnim.
+T1 Title option 1. Title is current anim name.
When anim is stopped, the current frame
number is included.
+T2 Title option 2. Title is current anim name
and current frame number.
+v Verbose mode. Gives some information about
animation such as size, number of frames,
etc.
+Vnum Select X11 Visual to use when displaying
animation. The num is obtained by using the
+X option of xanim.
+Vclass Select the best X11 Visual of Class class
when displaying the animation. class can
be anyone of the following strings and is
case insensitive. (ie StaTicGraY is same as
staticgray).
staticgray Select best StaticGray
Visual.
grayscale Select best GrayScale Visual.
staticcolor Select best StaticColor
Visual.
pseudocolor Select best PseudoColor
Visual.
truecolor Select best TrueColor Visual.
directcolor Select best DirectColor
Visual.
+X X11 verbose mode. Display information about
the support X11 visuals.
XAnim 2.80.1 21Mar99 8
XAnim(1)XAnim(1)WINDOW COMMANDS
Once the animation is up and running there are various
commands that can be entered into that animation window
from the keyboard.
q quit.
Q Quit.
g Stop color cycling.
p Toggle ping pong flag for looping.
r Restore original Colors(useful after g).
w Restore original window size(useful after resiz-
ing).
z This pops up or removes the Remote Control Win-
dow. Remote Control support must be compiled
into XAnim for this to work.
<space> Toggle. starts/stops animation.
, Single step back one frame.
. Single step forward one frame.
< Go back to start of previous anim.
> Go forward to start of next anim.
m Single step back one frame staying within anim.
/ Single step forward one frame staying within
anim.
- Increase animation playback speed.
= Decrease animation playback speed.
0 Reset animation playback speed to original val-
ues.
AUDIO RELATED WINDOW COMMANDS
1 Decrement volume by 10.
2 Decrement volume by 1.
3 Increment volume by 1.
4 Increment volume by 10.
XAnim 2.80.1 21Mar99 9
XAnim(1)XAnim(1)
s Toggle. Audio Volume(MUTE). on/off.
8 Toggle. Main Speaker. on/off.
9 Toggle. Headphones. on/off.
MOUSE BUTTONS
Once the animation is up and running the mouse buttons
have the following functions.
<Left_Button>
Single step back one frame.
<Middle_Button>
Toggle. starts/stops animation.
<Right_Button>
Single step forward one frame.
BUFFERING, PIXMAPS and READ_FROM_FILE Options
XAnim by default will read the entire animation into mem-
ory. PFX, Moviesetter, GIF or URT RLE type animations are
always uncompressed and stored in memory as individual
images.
For the AVI, QT, IFF, FLI/FLC, JPEG, MPEG and DL anima-
tions, only the compressed delta is stored. These deltas
are then uncompressed each time they need to be displayed.
The buffer option(+b) may be used to potentially speed up
playback by uncompressing and storing these images ahead
of time. But more memory is used up in the process.
When an XPutImage is called, the image typically gets
copied twice, once to memory and then from there onto the
display. A pixmap is directly copied onto the display
without the first copy. This is why it is sometimes much
faster to use the pixmap option(+p). Each image isn't
converted into a pixmap until the first time it is dis-
played. This is why the first loop of an animation using
this option is sometimes slower than subsequent loops.
While the pixmap option may improve playback speed, it
will slow things down if on-the-fly scaling needs to be
performed. This is because XAnim no longer has direct
access to the image and needs to get a copy of it before
it can be scaled.
The read from file option(+f) causes XAnim not to store
the compressed deltas in memory. Instead as each image is
to be displayed, XAnim reads the corresponding compressed
delta from the file, expands it and then displays it.
XAnim 2.80.1 21Mar99 10
XAnim(1)XAnim(1)
While this can dramatically cut down on memory usage, the
necessary reads from disk(or whatever) can slow down play-
back speed. XAnim still needs to allocate one to three
image buffers depending on the type of animation and the
scaling options used. This option is only supported for
AVI, QT, FLI/FLC, IFF, JPEG, MPEG and DL animations. The
BODY chunk of IFF animations is not included in this. As a
result, an IFF animation that is made up of several BODY
chunks will not currently benefit from this option.
SCALING Options
There are two sets of scaling options. One set, the dis-
play scaling factors, affects the size of the animation
as it is displayed. The other set, the buffer scaling fac-
tors, affect the size of the images as they are stored in
memory(buffered). The buffer scaling factors only affect
animations that are buffered and can greatly increase or
decrease memory usage.
These two sets are completely independent of each other.
You can set the buffer scaling factors to 20 times the
normal animation size and not affect the size at which
that animation is displayed. The images are stored at 20
times the normal size(and at 400 times the memory usage),
but then get scaled back down to normal size before being
displayed. NOTE: that an animation must be buffered in
order for the buffer scaling factors to have any affect on
it. The display scaling factors affect all animations.
You can create pixellation like affects by buffering the
animation at 1/8 it's normal size, but keeping the display
scaling factors at the original size. (IE "xanim +bSS0.125
anim.anim").
Many times it's faster to store and display an animation
with large dimensions at half-size. The option "+bSS0.5C"
or "+bSS0.5s0.5" both will accomplish this. To save mem-
ory, you could even store the animation at half size and
yet display it at full size. "+bSS0.5" will accomplish
this.
FORWARDS, BACKWARDS and OPTIMIZATION.
Many type of animations(FLI/FLC/IFF/some AVI and QTs) are
compressed with forward playback in mind only. Each delta
only stores the difference between the current frame and
the previous frame. As a results, most of these animations
don't display correctly when played backwards. Even when
buffered up, these may not work, since XAnim only stores
the smallest rectangle that encompasses the changes from
the previous frame. You can force XAnim to store the
entire frame by specifying the "-o" option to turn this
optimization off. This will most likely use more memory
XAnim 2.80.1 21Mar99 11
XAnim(1)XAnim(1)
and slow down the animation, since more of the image needs
to be stored and/or displayed.
COLOR OPTIONS
Most of this will be a TBD for a future rev and what's
here might be sketchy, incomplete or just plain confusing.
TrueColor and DirectColor displays don't need to worry
about most of these options, as the animations can be dis-
played in their original colors(ignoring monitor varia-
tions etc). However, TrueColor and DirectColor displays
can't display animations that employ color cycling tech-
niques where the colormap changes from frame to frame.
DirectColor could potentially support this, but not True-
Color.
For the rest of the displays, the problem becomes matching
the colors in the animations to the available colors of
the Display. For most PseudoColor displays this means 256
colors. Many of which are already in use by various other
programs. XAnim defaults to creating it's own colormap and
using all the colors from that. The window manager then
installs this new colormap, whenever the mouse pointer is
inside the XAnim animation window(Sometimes a specific
action is required to change the ColorMap Focus, like
clicking in the window or pressing a specific key). In any
case, this action usually causes all the other colors on
the screen to be temporarily "messed-up" until the mouse
is moved out of the animation window. The alternative, is
to use the "+Cn" option. Now XAnim tries allocating all
the colors it needs from the current colormap. If it can't
get a certain color, then XAnim choose one that is "close"
to this certain color. Close is completely arbitrary. The
animation is now displayed in colors that are different
than the original colors. This difference may or may not
be noticeable.
Another big problem is when the animations are what I
called TrueColor animations. Where each pixel is stored as
RGB triplets. For example, AVI 16 bit CRAM animations.
Each pixel has 5 bits of Red, 5 bits of Green and 5 bits
of Blue info associated with it. This means there can be
up to 32768 unique colors in each image. And on most Pseu-
doColor displays we can only display 256 unique colors.
Beside getting better displays, what can we do? XAnim
defaults to truncating the RGB information from 555 to
332. That is to 3 bits of Red, 3 bits of Green and 2 bits
of Blue. Less on Blue because the human eye is more sensi-
tive to Red and Green than Blue. This 332 colormap hap-
pens to be 256 colors in size, which nicely fits in with
our display. If our display only had 64 colors, then XAnim
is smart enough to truncate things down to 222. Now the
problem is the colors of the displayed anim are noticeably
XAnim 2.80.1 21Mar99 12
XAnim(1)XAnim(1)
different than the original colors. Typically you can see
color banding etc. While this is fine to get a feel for
the animation, we can do better. One of the solutions
XAnim currently offers is the "+bC1" option. What this
does is choose the the best 256 colors from the first
image of the animation. Then each pixel of each subsequent
image is remapped to one of these 256 colors. This takes
up some CPU time up front and more memory since each image
needs to be buffered, but results in a colors that are
closer to the originals. Another option, "+bCA", chooses
the best 256 from each image, then 256 colors from all
these colormaps are chosen as the final colormap. This is
useful if the colors in the first image aren't representa-
tive of the rest of the animation. This can be very slow.
Another option that is supported, but not really optimized
for yet is "+bC3dm". This causes XAnim to use a 332 col-
ormap and then apply a Floyd-Steinberg dither algorithm to
each image. Currently this is very slow. Different
dithers(like Ordered) and better optimizations might speed
this up in future revs. In general, handling of TrueColor
animations in XAnim needs to be improved.
Another scenario where colors need to be remapped, is when
several images or animations with different colormaps need
to be displayed. Changing the colormap usually results in
an annoying flicker. One solution to this is to remap all
of the images/animations to the same colormap. The "+Ca"
option chooses the best colors from all the colormaps and
then remaps all the images to it. The "+Cf" option, simply
remaps everything to the first colormap. The "+Ch" option
is useful when an animation's colormap specifies a lot of
colors that aren't used. XAnim looks through each buffered
image of the animation and makes a histogram of the useage
of each color. This information is then used to weedout
unused or rarely used colors.
QUICKTIME ANIMATIONS
Quicktime animations are usually stored in two separate
files. One is call a data fork and ends with a ".data".
The other is a resource fork and ends in a ".rsrc". Some-
times these animations are in a "flattened/merged fork"
format, where everything is put into one file. There's no
standard naming format for these types of files, although
usually .qt or .mov is used.
For example, if you have a quicktime animation made up of
two files named: "spin.rsrc" and "spin.data", you can
display them using Xanim with either of the following com-
mands "xanim spin" or "xanim spin.rsrc". XAnim is smart
enough to add/modfiy the ".rsrc" and ".data" endings as
needed.
If you use AUFS from the Columbia Appletalk Package, then
XAnim 2.80.1 21Mar99 13
XAnim(1)XAnim(1)
Macintosh files have their data fork stored in the
expected place, and the resource fork is in a file with
the same name in a .resource subdirectory. Therefore, if
the data fork is in "spin", and the resource fork is in
".resource/spin", the movie can be displayed with "xanim
spin".
For "flattened/merged_fork" quicktime animations, you need
to specify the entire file name.
NOTE: XAnim doesn't support 100% of the quicktime format.
AUTHOR
Mark Podlipec
podlipec@ici.net
http://xanim.va.pubnix.com/home.html http://smur-
fland.cit.buffalo.edu/xanim/home.html http://www.tm.infor-
matik.uni-frankfurt.de/xanim/
XAnim 2.80.1 21Mar99 14