The IRIS® Digital Media Programming Guide describes the Silicon Graphics® IRIS Digital Media Development Environment software. The IRIS Digital Media Development Environment (DMdev) provides an application programming interface (API) for working with digital audio, MIDI, video, compression, and movies, using standard and optional Silicon Graphics workstation hardware and peripherals.
Silicon Graphics also supplies desktop media tools for end users, which are built on top of DMdev. Media tools are described in the online Media Control Panels User's Guide, which you can view from the IRIS InSight™ viewer.
The IRIS Digital Media Programming Guide is divided into six parts, corresponding to the functions of the libraries:
Part I, “Digital Media Programming,” has two chapters:
Chapter 1, “Programming with the IRIS Digital Media Development Environment,” gives an overview of the IRIS Digital Media Development Environment.
Chapter 2, “Programming with the Digital Media Library,” describes the Digital Media (DM) Library, libdmedia, a library that currently supports parameter setting and ring buffering for applications that use the DMdev. Currently, you can use the DM routines with the Movie Library and the Video Library.
Part II, “Digital Audio and MIDI Programming,” has eight chapters;
Chapter 3, “Introduction to Digital Audio and MIDI Programming,” introduces the digital audio and MIDI libraries.
Chapter 4, “Digital Audio System Architecture,” gives a brief overview of the audio hardware and provides some recommendations for development configurations.
Chapter 5, “Digital Audio System Software,” describes the audio application programming environment and explains how audio resources are shared.
Chapter 6, “Programming with the Audio Library,” describes the structure of the Audio Library and explains how to use it to sample audio data from analog or digital input sources. Real-time programming techniques are also discussed.
Chapter 7, “Programming with the Audio File Library,” describes the structure of the Audio File Library and explains how to use it to read and write audio files.
Chapter 8, “Programming with the CD Audio Library,” describes the CD Audio Library and explains how to use it to control the CD-ROM drive for playing and sampling audio from audio compact discs.
Chapter 9, “Programming with the DAT Audio Library,” describes the DAT Audio Library and explains how to use it to control the DAT drive for playing, sampling, and recording audio from digital audio tape.
Chapter 10, “Programming with the MIDI Library,” describes connecting MIDI equipment and describes the MIDI Library, explaining how to use it for implementing and multiplexing MIDI I/O, and synchronizing MIDI and audio.
Part III, “Video Programming,” has five chapters:
Chapter 11, “Video Basics,” explains basic video concepts that apply to both the Video Library and the IndigoVideo Library.
Chapter 12, “Getting Started with the Video Library,” describes the Video Library and explains how to use it to perform video input and output for workstations equipped with standard and optional Silicon Graphics video hardware.
Chapter 13, “Using VL Controls,” describes how to use VL controls to set video parameters for data transfer and video effects.
Chapter 14, “VL Event Handling,” describes how to handle video events using the Video Library.
Part IV, “IndigoVideo Programming,” has six chapters:
Chapter 16, “Introduction to IndigoVideo Programming,” introduces the IndigoVideo library and gives an overview of the features of the IndigoVideo board.
Chapter 17, “Getting Started with the IndigoVideo Library,” describes basic concepts for using the IndigoVideo board, and presents a sample video application that displays live video input in a window.
Chapter 18, “Controlling the IndigoVideo Input Window,” explains how applications can position and scale the video input. It also explains how to select different video sources, formats, and broadcast standards.
Chapter 19, “Producing IndigoVideo Output,” explains how to encode a portion of your screen to video in real time. This chapter also covers single-frame output.
Chapter 20, “Capturing Video from IndigoVideo,” explains how to capture frames of video to memory.
Chapter 21, “Handling IndigoVideo Events,” explains how to handle video events, such as video parameters being changed by another process.
Chapter 22, “Using the IndigoVideo Utilities,” explains how to use the IndigoVideo end-user tools.
Part V, “Compression Programming,” has four chapters:
Chapter 23, “Introduction to the Compression Library,” introduces the CL and describes its applications and features. It provides basic background information on compression technology and on digital audio and video data formats.
Chapter 24, “Getting Started with the Compression Library,” describes how to use the three types of interfaces supplied by the CL and how to write programs for Cosmo Compress option.
Chapter 25, “Using Compression Library Algorithms and Parameters,” explains how to use the CL algorithms and global parameters.
Chapter 26, “Customizing the Compression Library,” explains how to add your own algorithms and parameters to the CL.
Part VI, “Movie Programming,” has six chapters:
Chapter 27, “Introduction to the Movie Library,” introduces the Movie Library and describes its applications and features.
Chapter 28, “Getting Started with the Movie Library,” explains how to set up, compile, and debug Movie Library applications.
Chapter 29, “File I/O and Editing Movies with the Movie Library,” explains how to perform movie file I/O and how to edit movies.
Chapter 30, “Playing Movies with the Movie Library,” describes the Movie Library playback and event-handling facilities.
Chapter 31, “Using the Movie Library with QuickTime Movies,” describes basic concepts for working with QuickTime movies, and then it explains how to add QuickTime capability to a Movie Library application. It also describes the optional QuickTime compressor Library, which provides access to QuickTime compressors for Movie Library applications.
Chapter 32, “Using the Movie Library Sample Programs,” describes the Movie Library sample programs.
Appendices at the back of this guide provide additional information:
Appendix A, “Audio Specifications,” lists relevant audio and video hardware specifications.
Appendix B, “Aware Scalable Audio Compression Software,” explains how to incorporate into your application the built-in licensable compression software by Aware®, Inc.
The Glossary at the end of this guide provides definitions for video terms.
This guide is written for C language programmers. This guide assumes that you are somewhat knowledgable about digital media concepts. The discussion of each library begins by presenting the features, applications, and basic concepts pertaining to that library. Readers unfamiliar with the basic concepts can refer to the recommended references for each topic.
If you're not sure which library to use for a certain application, read Chapter 1, “Programming with the IRIS Digital Media Development Environment,” to get a brief overview of the uses and features of each library.
If you want to find some code that does what you want your application to do, browse through the List of Examples to locate a code fragment or a sample program that performs a particular task.
Code fragments and complete sample programs are used throughout this guide to demonstrate programming concepts. Source code for the sample programs is provided in the /usr/people/4Dgifts/examples/dmedia directory, which is further organized in directories according to topic. For example, Movie Library programs are in /usr/people/4Dgifts/examples/dmedia/movie.
You must log in as 4Dgifts to be able to compile 4Dgifts programs. README files in each 4Dgifts directory provide descriptions of the sample programs and instructions for compiling and running them. You must have the IRIS Development Option, dev, and the C language software, c, loaded before you can compile the sample programs. Use the versions command to find out which software is loaded on your system. See the release notes for each library for additional system software requirements for those libraries.
You should copy any 4Dgifts program that you intend to modify to your home directory before making any changes.
This section lists references containing information on programming topics beyond the scope of this guide, which you may find helpful for developing your digital media application. Additional reference materials are listed in the introductory chapters for each library.
If you are planning to integrate your digital media application with calls from the OpenGL™, IRIS Graphics Library™ (GL) or X Window System™ application, you may want to consult the following manuals:
OpenGL Programming Guide and OpenGL Reference Guide, by Jackie Neider, Tom Davis, and Mason Woo, Addison-Wesley, 1993
Graphics Library Programming Guide, by Patricia McLendon Creek, Silicon Graphics, 1992
Graphics Library Programming Tools and Techniques, by Patricia McLendon Creek and Ken Jones, Silicon Graphics, 1993
IRIS IM Programming Notes, by Patricia McLendon Creek and Ken Jones, Silicon Graphics, 1993
The X Window System, Volume 1: Xlib Programming Manual, O'Reilly and Associates, 1990
The X Window System, Volume 4: Xt Intrinsics, Motif Edition, O'Reilly and Associates, 1990
X Window System: The Complete Reference to Xlib, X Protocol, ICCCM, XLFD, Third Edition, by Robert W. Scheifler and James Gettys, Digital Press, 1992
X Window System Toolkit: The Complete Programmer's Guide and Specification, Paul J. Asente and Ralph R. Swick, Digital Press, 1992
The IRIS Digital Media don't impose any particular user interface (UI), so you can use any graphical UI toolkit, such as IRIS IM™ to build your interface. IRIS IM is Silicon Graphics' port of the industry-standard OSF/Motif™ software. Consult these OSF/Motif manuals for more information:
OSF/Motif User's Guide, Revision 1.2, Prentice-Hall, 1993
OSF/Motif Programmer's Reference, Revision 1.2, Prentice-Hall, 1992
OSF/Motif Style Guide, Revision 1.2, Prentice-Hall, 1992