Previous | Contents | Index |
Table 1-3 shows the services that are part of the Microsoft multimedia programming interface and are not implemented in Multimedia Services for OpenVMS.
Category | Unsupported Functions |
---|---|
Auxiliary Audio Services | All |
DrawDib Functions | All |
Joystick Services | All |
Loadable Third-Party Device Support Modules | All |
MCI Services | All |
MIDI Services | All |
Multimedia File I/O Services |
Buffered file I/O
Custom I/O procedures The following functions:
mmioAdvance
|
Timer Services | All |
Video Capture and Playback Services |
The following functions:
videoConfigureStorage
|
Video Compression and Decompression Services |
Functions relating to the frame buffer drawing operations:
ICDraw
Functions for displaying dialog boxes:
ICAbout
|
Waveform Audio Services |
The following functions:
waveInMessage
|
Audio Compression Manager Services Driver Group |
The following functions:
acmDriverAdd
|
Audio Compression Manager Services Format Group | All |
Audio Compression Manager Services Filter Group | All |
Audio Compression Manager Services Stream Group |
The following function:
acmFormatSuggest |
Audio services are provided by the Microsoft Sound Board driver.
Video services are provided by the FullVideo Supreme and FullVideo
Supreme JPEG option modules. The FullVideo Supreme JPEG also supports
JPEG compression and decompression of video data.
1.5 Application Development Notes
This section describes characteristics of the multimedia software and hardware environments that application programmers need to understand to ensure successful development and execution of multimedia applications using Multimedia Services for OpenVMS.
Be familiar with these characteristics before beginning application
development.
1.5.1 Server Process
The server process, MMOV$SERVER , must be running before executing any application program that uses the multimedia API. The server process is located at SYS$SYSTEM:MMOV$SERVER.EXE . Run the server process from the SYSTEM account.
To start the server process, log in to the SYSTEM account and enter the following command:
$ @SYS$STARTUP:MMOV$STARTUP |
To stop the server process, enter the following command:
$ @SYS$STARTUP:MMOV$SHUTDOWN |
The server may be delayed briefly, possibly up to two seconds, during
the setup of a palette (or colormap) associated with the video capture
and playback or video compression and decompression interfaces. Because
starting video applications typically involves setting palettes, expect
all applications to pause when a video application is started.
1.5.2 Multimedia Services Library
The Multimedia Services library,
SYS$LIBRARY:MMOV.OLB
, is not thread safe or reentrant. Unpredictable results may occur if
multiple threads attempt to use the library functions concurrently.
1.5.3 Header Files
The function prototypes, constants, flags, and data structures required to access Multimedia Services for OpenVMS are provided in header files located in the MMOV$INCLUDE directory. Application programs need to include only the mme_api.h header file, as follows:
#include <mme/mme_api.h> |
Use the following command procedure as a template to compile applications:
$ if p1 .eqs. "" then inquire p1 "Enter path were common library was built" $ define/nolog mme sys$common:[mmov_includes],'p1',[] $ define/nolog decc$user_include mme,decw$include: $ define/nolog sys decc$user_include $ define/nolog decc$system_include decc$user_include $ cc := "cc/define=(mme_BLD,IPC_VMS,Long_bit=64,DEC)/standard=vaxc" $ set ver $ cc vidplay $ cc common $ cc color_utils $ cc readavi $ cc avieasy |
Use the following command procedure as a template to link applications. The following example is used to build the example programs provided with the installation kit.
$ link /sysshr /exe=vidplay.exe - vidplay.obj,- avieasy.obj,- common.obj,- readavi.obj,- color_utils.obj,- 'p1'commonlib.olb/lib,- sys$library:mmov.olb/lib, sys$input:/option sys$share:cma$open_rtl.exe/share sys$share:decw$xlibshr.exe/share sys$share:IPC$SHARE.exe/share |
In the previous example, p1 is the path to the directory where the common library is built.
In the SYS$COMMON:[SYSHLP.EXAMPLES.MMOV] examples directory, the subdirectories are:
Each subdirectory contains a command procedure that you can use to
build the example programs called
BUILD_XXX
, where
XXX
is the name of the subdirectory.
1.5.5 Waveform Audio Device Restrictions
Keep in mind the following information about waveform audio devices:
See Appendix B for specific device details.
1.5.6 Video Capture and Playback Restrictions
The following device restrictions apply to video capture and playback:
The videoConfigure function must be called to set up the capture or playback formats before configuring the colormap. |
See Appendix B for specific device details.
1.5.7 Video Compression and Decompression Restrictions
The following device restrictions apply to video compression and decompression, unless otherwise noted:
See Appendix B for specific device details.
The CALLBACK_WINDOW option to the various Open and Initialization routines is not supported. Multimedia Services for OpenVMS supports the CALLBACK_FUNCTION option only. |
This functionality is an extension made by Compaq to the Microsoft video and ICM (Installable Compression Manager) interfaces. |
Compaq has extended the Microsoft interfaces for video capture and playback, and compression and decompression to provide an optimization for certain classes of hardware devices. Some hardware devices must lock down physical pages of memory to allow direct memory access (DMA) between the hardware device and the host computer.
The standard compression and decompression interfaces do not require the buffers passed for each call to remain the same over time, and thus the lower layers of software and hardware cannot assume what addresses will be passed. In addition, if the application uses sets of buffers for video capture and playback or compression and decompression, the lower layers have no way of knowing (aside from making intelligent guesses) whether these buffers are from contiguous memory regions and thus can be more efficiently managed at the hardware level.
To facilitate this, the functions ICCompressPrepareHeader and ICDecompressPrepareHeader have been added. They, and the videoStreamPrepareHeader function, can now take on different semantics. Instead of passing individual buffers to each of these functions, an application can pass regions of memory that will be used for multiple buffers. For example, if the video streaming interface is being used and the application is using three buffers, then the application would call videoStreamPrepareHeader with a pointer to a memory region three times the size of a single buffer. The memory buffers must be aligned on a system page boundary and each of the three buffer sizes must be padded to a system page size.
When the videoStreamAddBuffer function is called by the application, the pointer would be set to one of the three subbuffers in the region of memory passed to the videoStreamPrepareHeader function and the size would be the size of a single buffer. This allows the hardware device, if applicable, to lock down and manage one region of memory, while allowing the application to maintain the throughput of three buffers. See the sample program vidstreamin.c in the MMOV$EXAMPLES:[VIDEO] directory for an example.
Each region of memory must be used for the same purpose, that is, for the ICDecompress function, one region of memory must be specified for the input data and one region of memory must be specified for the output data.
The FullVideo Supreme and FullVideo Supreme JPEG option modules manage a finite set of regions of memory and can take advantage of this extension. Applications should strive to use as few regions of memory as possible to reduce overhead to these options, increase the number of applications that can share these options, and increase performance. |
If the message "av0:JVLOCKBUF out of contexts" appears in the console window, it means that too many resources are being used with the FullVideo Supreme and FullVideo Supreme JPEG options' video devices. These resources are used by both capture/playback and compress/decompress. Specifically, the message means that there are too many buffers registered (through videoStreamAddBuffer , videoFrame or ICCompress , ICDecompress or any of the PrepareHeader functions). No more video applications can be started until some of the clients using the resources are stopped. |
Previous | Next | Contents | Index |