Version 2.6.0 -- April 10, 2009


At Lawrence Livermore Laboratory and more and more places, very large displays are being used in theatres for scientific visualization. These displays contain thousands of pixels in both X and Y, which is several million pixels. To utilize these displays, very large movies are created. These very large movies, greater than about 1 million pixels, may play back unevenly due to the inability to move them off disk fast enough to render at the optimal frame rate, usually 30 fps.

Blockbuster is an image/movie viewer/player especially designed to solve this problem for very large images and movies (high resolution and many frames) on cluster displays running the DMX X server. It also displays on ordinary linux or Macintosh machines. Blockbuster reads ordinary image files, but for large movies, you are going to want to create movies using the "streaming movie" format, which usually has the file extension ".sm" associated with it. The movie will be replicated on a separate disk, attached to each backend node driving a DMX or "powerwall" display. Blockbuster launches a separate process on each backend node and reads only the portion needed to display that piece for each node, thus enabling scalable frame sizes.

For example, suppose you have a DMX display cluster constructed from a 4 by 3 array of 1280 x 1024 screens for a total of 5120 x 3072 pixels.  Next, suppose you have a scientific visualization movie which is 4000 by 3000 pixels and 10,000 frames in length (i.e. a movie far too large to fit in main memory).  If you copy the movie around to each node of the cluster, so that the nodes do not contend for disk access for the movie, then Blockbuster will let you play this movie efficiently on your display cluster using DMX technology.

Blockbuster has standard movie playback features such as play, pause, single step, etc.  Furthermore, Blockbuster supports interactive panning and zooming with the mouse for inspecting image details.

Blockbuster has no audio support and there is no current plan to include it.

The Blockbuster project is hosted on SourceForge.

Why is it called Blockbuster?  This program is meant for playing big movies (get it?).  Also, in DMX playback mode images are effectively broken into chunks or blocks for efficient display.  Finally, a blockbuster is a type of bomb, and the movies made initially for blockbuster had quite a bit to do with bombs.

So-called "smtools", which are utilities for creating and manipulating streaming movies, are provided with blockbuster. The streaming movie format is described in detail in the sm (4) manpage. Also included with blockbuster is Sidecar, a helper application that allows you to launch and fully control an instance of blockbuster from a remote machine, and which allows you to create a predetermined set of "movie cues" that can be saved and executed for a rehearsed presentation.


Blockbuster has the following major features:

Sidecar has the following major features: smtools consists of the following utilities to create and manipulate streaming movies or "sm files," as they are often called:


Command Line Options

Blockbuster is invoked as follows:

blockbuster -flags [-- -rendererFlags...] matchFilename...

Possible flags are listed below. The rendererFlags can change the behavior of the renderer that is being used to render each frame of the image; because each renderer has different behaviors, each has its own set of flags.

The matchFilename parameters may be either partial file names or complete file names. All matchFilename parameters expand to match all files that begin with the given characters. For example, given a directory samples that contains the image files image1.tiff,image2.png, and picture.tiff, behavior is as follows:

blockbuster samples/image1.tiff

The single image file image1.tiff will be opened and repeatedly displayed.

blockbuster samples/image

The samples directory will be searched for all files that begin with image. In this case, the files samples/image1.tiff and samples/image2.png will be displayed in succession.

blockbuster samples/

The samples/ directory will be searched for all files. In this case, the files samples/image1.tiff, samples/image2.png, and samples/picture.tiff will all be displayed in succession.

Supported Flags

italics == required argument
Note that substrings are matched in the order listed below. So typing -h is the same as typing -help. Typing -n is ambiguous and undefined. Internally, the first match found will be used, but you don't know what that will be.


Default Value


-backend-path path abspath($0) specifies the path to blockbuster on the backend nodes for DMX (default is to use the same path as the front end)
-BackendPath path same as front end same as -backend-path <path>

-cache num


Specify how many frames to cache – use lower values when frame size gets large

-d display


Specify the X display name (such as "foobar:0")

-font fontname


Specify the name of the font to use in the rendering window for displaying the current frame, zoom, etc. information.  Default is "fixed".  Use xlsfonts to list the fonts available on your system.

-framerate (or -F) rate 30.0 Limit the movie to rate frames per second or less.

-g geometry

fit to size of movie

Specify the window geometry for the X window.  Examples: "+500+200" to set the position, "600x400" to set the size or "600x400+500+200" to set both the size and position.



A usage summary will be provided. All available flags will be displayed, as will all supported file formats, all supported renderers, and any additional options supported by each renderer.

The default value for any particular flag (if any) will be displayed in square brackets (e.g., "[value]").

-loops 1 How many times to play the movie. If you specify "forever" or -1, it will loop infinitely many times.

-m messageLevel

"error" ("debug" if compiled with DEBUG)

Change the verbosity of the program by changing the message level. The supported message levels are, in order of chattiness: quiet, syserr, error, warning, info, debug.

-no-controls (or -C) show controls Hides the blockbuster controller interface. Especially useful when using Sidecar. The GUI can also be hidden or displayed by right-clicking on the movie canvas.

-no-decorations (or -D)

show decorations

Turns off window decorations

-no-splash (or -S)

show splash screen

Suppress the startup splash screen.

-play (or -Play) do not play on load Play the movie immediately after loading it.

-preload numframes


Specifies how many frames to preload -- use lower values when frame size gets large

-renderer name

gl or gltexture if supported

Change the method used to render images. The supported renderers (and their options) can be discovered by using the -h option.  Currently, gl, gl_stereo, gltexture, x11 and dmx are supported. For dmx use -R to specify back-end renderer. e.g. blockbuster -r dmx -R gl_stereo

-slave host[:port]

disabled by default

In DMX configurations, the back-end instances (one per screen) will be started with the -s option.  This specifies that blockbuster is to operate in slave mode and that the master instance of the player is running on the computer named and can be contacted on port port.  The default port is 7011. This option is only needed when running DMX in manual mode. This is rarely needed except for debugging (see "Running Manually on DMX" below).

-threads numThreads

2 (or 1 if you do not have 2 processors)

Change the number of threads used to preload images in the background. The default value depends on the number of processors available in your system; if your system has more than one processor, 2 threads will (by default) be used to preload images. If your system has only one processor, no threads will be used by default to preload images (i.e., all images will be loaded by the main thread).

-userInterface name


Specifies the user interface.  Two are supported:  gtk - a GTK-based GUI, and x11 a keypress/mouse-only interface.  The GTK interface is the default.

-version off If given, blockbuster prints the version and exits. (version is printed anyway on startup)
-zoom scale auto Value of 0 or "auto" means set zoom to match window size (image gets bigger if window grows). A nonzero number means keep the movie at a constant size regardless of window size. 1.0 means keep image at 100%, 1.5 means scale to 150%, etc.

Graphical User Interface Controls

By default, Blockbuster uses a GTK-based GUI (this may be overridden with the -u command line option). This GUI is shown in the image below.

Figure 1: The movie window for blockbuster on OS X.

Figure 2: The blockbuster movie control interface.

The blockbuster interface contains the following elements:

Keyboard and Mouse Controls

Whether or not Blockbuster is used with a GUI, it can be controlled with the mouse and keyboard.

The mouse is used to do the following:

The following keyboard commands are recognized:

Using Blockbuster with Distributed Multihead X (DMX) Servers

This section describes how to set up and use Blockbuster on a display cluster running DMX. In this mode, you, the user, run blockbuster on the "frontend" (login) node of DMX, and blockbuster spawns a copy of itself on each "backend" DMX node. Each backend blockbuster loads only a part of the movie, making movie viewing on large powerwalls very practical at good frame rates.

Checklist / setup:

  1. DMX should already be up and running on your display cluster.? Make sure you have a copy of DMX installed released later than July 2003.

  2. The file to view must be accessible on all hosts using the same directory path.  For example, if you wish to view the file /home/data/ on your DMX display, the path /home/data/ must exist on all nodes. The optimal way to do this is to copy the file to the local hard drive on each host. This prevents contention for the same file.

    Most cluster systems have a shared filesystem which allows all hosts to access the same files using the same paths. We don't recommend using this method as it misses the point of using blockbuster entirely, which is to avoid disk access bottlenecks by running in parallel over several disks.

  3. The BLOCKBUSTER_RSH environment variable specifies the remote shell program used for starting the back-end instances of blockbuster on the cluster.  Typically, BLOCKBUSTER_RSH will be set to either rsh or ssh depending on your site's setup.  You should have thing set up such that either rsh or ssh can be used without entering passwords, and such that blockbuster is in your PATH on the backend nodes. To test this, try typing "rsh which blockbuster" and if this fails or you are prompted for a password, consult your system administrator for a workaround.

  4. Make sure that your DISPLAY environment variable is set to the DMX X server.  Start an X application like xterm and make sure it appears on the DMX display.

At this point, simply start Blockbuster with the dmx renderer:

blockbuster -r dmx

If you have compiled blockbuster with MPI support, then do this to enable more accurate MPI-based frame synchronization:

blockbuster -r dmx -mpi

The default renderer used by the back-end instances of Blockbuster is gl (glDrawPixels).  To use the gltexture renderer instead, use the following:

blockbuster -r dmx -R gltexture

Blockbuster can be configured to work with different MPI launching schemes. If you run with -mpi, blockbuster will connect to one backend node and launch $BLOCKBUSTER_MPI_SCRIPT on that host with args given in the string $BLOCKBUSTER_MPI_SCRIPT_ARGS. Type blockbuster -help for more options.

Implementation Information

This section describes some of the inner workings of Blockbuster.


There are currently five supported rendering paths (selected with the -r option):

Image caching

Since Blockbuster is designed to play images much larger than will fit into main memory, an image cache is used to store and manage a subset of the frames in main memory.

The cache can be threaded (if Blockbuster is run with the -t option, or on a multi-processor system); this allows the main Blockbuster thread to render images while the image cache threads can read and decompress upcoming images asynchronously.

Even if Blockbuster runs single-threaded, the image cache will maintain recently-loaded images, to improve interactive performance while stepping back and forth through an image or panning and zooming an image.

Level Of Detail

Some file formats, such as SM, may store images at multiple levels of detail.  For example, the top-most (level 0) image may be 4K x 4K pixels.  The next level of detail may be 2K x 2K pixels, and the next 1K x 1K pixels.

When an image is minified (zoom < 1.0) performance improves by reading and rendering a reduced level of detail.

Blockbuster automatically chooses the best level of detail according to the current zoom factor and target frame rate.


When running in DMX mode the front-end instance of Blockbuster doesn't actually draw anything.  Instead, it sends commands (via unix sockets) to the back-end instances of Blockbuster.  The back-end instances can use either the x11, gl or gltexture renderers to render directly with the back-end servers, selected via the -R flag.  There are no large image transfers going through DMX.  This improves performance.

This file last modified Fri Dec 4 17:34:16 2009