|
|
| |
XAnim(1) |
FreeBSD General Commands Manual |
XAnim(1) |
xanim - multiformat animation/video/audio viewer for X
xanim [ +V# ] [ +Aaopts ] [
+Ccopts ] [ +Ggopts ] [ +Mmopts ]
[ +Ssopts ] [ +Wwopts ] [ +Zzopts
] [ +opts ] animfile [ [ +opts ] [
animfile ] ... ]
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 supported:
- +
- 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
"creative.readme" files
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.
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 presented below, the
first letter given is the letter that specifies the SubMenu and should NOT
be repeated if several 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 submenu.
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 # 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 previous 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 file and use it with the video
file previous to it. And in addition, scale the timing 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.
- +Ap#
- This turns a hardware specific Audio port on or off. The default port is
selectable in xanim_config.h. It's shipped with internal 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
- +Av#
- 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 potentially add
significant time to the startup of an animation but usually results in
better 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(StaticColor). 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 DirectColor 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 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 truncating 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 DirectColor 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 colormap. Animation must be buffered. Typically +bC3dm is the option
to use. This can take a VERY long time at start up.
- +Cn
- Don't create new colormap but instead allocate colors from the X11
Display's default cmap.
- +Cs#
- 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.
mopts SubMenu for Median-Cut Quantization Options
- +Ma
- compute box color from average of box.
- +Mc
- compute box color as center of box.
- +Mb#
- Truncate rgb to # 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 themselves 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.
- +Sx#
- Scale the animation to have width # before displaying.
- +Sy#
- Scale the animation to have height # 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.
- +SX#
- Scale the animation to have width # before buffering it.
- +SY#
- Scale the animation to have height # 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.
- +Wx#
- Position anim at x coordinate #.
- +Wy#
- Position anim at y coordinate #.
- +Wc
- Position relative to center of anim.
zopts SubMenu for Special Options
- +Ze
- XAnim will exit after playing through command line once.
- +Zp#
- XAnim pause at frame # and then wait for user input. Several pauses
may be specified. 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 Window. This overrides the default
condition set in xanim_config.h. Remote Control support must be compiled
into XAnim for this to work.
- +Zrx#
- Specify xpos of the Remote Control Window. A -1 will let the window
manager decide the location. NOTE: your window manager may override
anyways.
- +Zry#
- Specify ypos of the Remote Control Window. NOTE: your window manager may
override anyways.
- +Zsw#
- Specify width of seek/loop scroll bars.
- +Zsh#
- Specify height of seek/loop scroll bars.
- +Zt#
- Which type of remote control. 0 is seek/loop scrollbars on the bottom. 1
is seek/loop scrollbars on the right.
- +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 animation without actually playing it.
- +Zvx#
- Specify xpos of the Video Window. A -1 will let the window manager decide
the location. NOTE: your window manager may override anyways.
- +Zvy#
- Specify ypos of the Video Window. NOTE: your window manager may override
anyways.
Normal Options
- +b
- Uncompress and buffer images before displaying. 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
mutually 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 nonlooping one.
- +d#
- debug switch. # can be from 0(off) to 5(most) for level of
detail.
- +F
- Floyd-Steinberg dithering when needed.
- +j#
- # is the number of milliseconds between frames. if 0 then the time
specified in the animation is used for timing purposes.
- +l#
- loop animation # number of times before moving on to next
animation.
- +lp#
- ping-pong animation # number of times before moving on to next
animation.
- +N
- don't display images. Useful for benchmarking.
- +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).
- +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.
- +V#
- Select X11 Visual to use when displaying animation. The # 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.
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 resizing).
- z
- This pops up or removes the Remote Control Window. Remote Control support
must be compiled into XAnim for this to work.
- k
- This sets start of loop region to the current frame position.
- l
- This sets end of loop region to the current frame position. To remove the
loop region first stop animation and press <k> followed by
<l>.
- <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 values.
- AUDIO RELATED WINDOW COMMANDS
- 1
- Decrement volume by 10.
- 2
- Decrement volume by 1.
- 3
- Increment volume by 1.
- 4
- Increment volume by 10.
- s
- Toggle. Audio Volume(MUTE). on/off.
- 8
- Toggle. Main Speaker. on/off.
- 9
- Toggle. Headphones. on/off.
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.
XAnim by default will read the entire animation into memory. 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 animations, 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 displayed. 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. While this can dramatically cut down on memory usage, the
necessary reads from disk(or whatever) can slow down playback 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.
There are two sets of scaling options. One set, the display scaling factors,
affects the size of the animation as it is displayed. The other set, the
buffer scaling factors, 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 memory, you could
even store the animation at half size and yet display it at full size.
"+bSS0.5" will accomplish this.
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 and slow down the
animation, since more of the image needs to be stored and/or displayed.
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 displayed in their original
colors(ignoring monitor variations etc). However, TrueColor and DirectColor
displays can't display animations that employ color cycling techniques where
the colormap changes from frame to frame. DirectColor could potentially
support this, but not TrueColor.
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 PseudoColor 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 sensitive to Red and Green than Blue. This 332
colormap happens 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 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 representative 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 colormap 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 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". Sometimes 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 commands "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
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.
Mark Podlipec
podlipec@ici.net
http://xanim.va.pubnix.com/home.html
http://smurfland.cit.buffalo.edu/xanim/home.html
http://www.tm.informatik.uni-frankfurt.de/xanim/
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |