Section 5 of 14 - Prev - Next
All sections - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14
Cinepak). Typically, some blocks (hopefully many) are similar to
other blocks although usually not identical. The encoder identifies a
class of similar blocks and replaced these with a "generic" block
representative of the class of similar blocks. The encoder encodes a
lookup table that maps short binary codes to the "generic" blocks.
Typically, the shortest binary codes represent the most common classes
of blocks in the image.
The Vector Quantization (VQ) decoder uses the lookup table to assemble
an approximate image comprised of the "generic" blocks in the lookup
table.
Note that this is inherently a lossy compression process because the
actual blocks are replaced with a generic block that is a "good
enough" approximation to the original block.
The encoding process is slow and computationally intensive because the
encoder must accumulate statistics on the frequency of blocks and
calculate the similarity of blocks in order to build the lookup table.
The decoding process is very quick because it is lookup table based.
In Vector Quantization, the lookup table may be called a codebook.
The binary codes that index into the table may be called codewords.
Higher compression is achieved by making the lookup table smaller,
fewer classes of similar blocks in the image. The quality of the
reproduced approximate image degrades as the lookup table becomes
smaller.
Vector Quantization is prone to blocking artifacts as compression is increased.
Vector Quantization is an entire sub-field in signal and image
processing. It goes well beyond the brief description above and
is applied to other uses than video compression.
The standard reference book on Vector Quantization is:
Vector Quantization and Signal Compression
A. Gersho and R. Gray
Boston, MA : Kluwer, 1992
Like many image and signal processing books, this is heavy on
abstract math.
A Simple Example
Consider the following 4 by 4 blocks of pixels. Each pixel has a value
in the range of 0-255. This is a grayscale image for simplicity.
(Block 1)
128 128 128 128
128 128 128 128
128 128 128 128
128 128 128 128
(Block 2)
128 127 128 128
128 128 128 128
128 128 127 128
128 128 128 128
(Block 3)
128 127 126 128
128 128 128 128
127 128 128 128
128 128 128 128
In practice, the blocks will look the same to a human viewer.
The second and third blocks could be safely replaced by the first
block. By itself, this does not compress the image. However, the
replacement block (Block 1) could be represented by a short index into
a lookup table of 4x4 blocks. For example, the index, in this case,
could be 1.
Lookup Table[1] = 128 128 128 128
128 128 128 128
128 128 128 128
128 128 128 128
The original image could be converted into a lookup table and a series
of indexes into the lookup table, achieving substantial compression.
In video, the same lookup table could be used for many frames, not just
a single frame.
Return to Top
Discrete Cosine Transform
VIDEO CODECS THAT USE DCT
Motion JPEG
Editable MPEG
MPEG-1
MPEG-2
MPEG-4
H.261
H.263
H.263+
STRENGTHS AND WEAKNESSES
1. Blocking artifacts at high compression.
2. Ringing at sharp edges. Occasional blurring at sharp edges.
3. Computationally intensive. Only recently has it been possible
to implement in real time on general purpose CPU's as opposed to
specialized chips.
OVERVIEW
The Discrete Cosine Transform (DCT) is a widely used transform in
image compression. The JPEG still image compression standard, the
H.261 (p*64) video-conferencing standard, the H.263 video-conferencing
standard and the MPEG (MPEG-1, MPEG-2, and MPEG-4) digital video
standards use the DCT. In these standards, a two-dimensional (2D) DCT
is applied to 8 by 8 blocks of pixels in the image that is compressed.
The 64 (8x8 = 64) coefficients produced by the DCT are then quantized
to provide the actual compression. In typical images, most DCT
coefficients from a DCT on an 8 by 8 block of pixels are small and
become zero after quantization. This property of the DCT on real world
images is critical to the compression schemes.
In addition, the human eyes are less sensitive to the high frequency
components of the image represented by the higher DCT coefficients.
A large quantization factor can and usually is applied to these
higher frequency components. The de facto standard quantization
matrix (a matrix of 64 quantization factors, one for each of the 64
DCT coefficients) in the JPEG standard has higher quantization factors
for higher frequency DCT coefficients.
The quantized DCT coefficients are then run-length encoded as variable
length codes that indicate some number of zero coefficients followed by
a non-zero coefficient. For example, a run-length code might indicate
4 zero coefficients followed by a non-zero coefficient of level 2. Short
variable length codes (e.g. 0110) are used for common combinations of
runs of zero and levels of the non-zero coefficient. Longer variable
length codes (e.g. 0000001101) are used for less common combinations of
runs of zero and levels of the non-zero coefficient. In this way,
substantial compression of the image is possible.
The Discrete Cosine Transform itself is best explained as a 1 dimensional
(1D) DCT first. The 2D DCT is equivalent to performing a 1D DCT on each
row of a block of pixels followed by a 1D DCT on each column of the block of
pixels produced by the 1D DCT's on the rows.
The one dimensional Discrete Cosine Transform is applied to a block of
N samples (pixels in an image or sound pressure samples in an audio file).
The Discrete Cosine Transform is an NxN matrix whose rows are sampled
cosine functions:
DCT(m,n) = sqrt( (1 - delta(m,1) ) / N )
* cos( (pi/N) * (n - 1/2) * (m-1) )
where
DCT(m,n) is the 1D DCT Matrix
m,n = 1,...,N
pi = 3.14159267...
N = number of samples in block
delta(m,1) = 1 if m is 1
0 otherwise
cos(x) = cosine of x (radians)
* = multiply
Naively, performing a DCT on a block of N samples would require
N*N multiplies and adds. However, the DCT matrix has
a recursive structure that allows implementation with order
N log(N) multiplies and adds (many fewer). This makes the DCT practical
for implementation on current CPUs and DSPs.
Return to Top
Discrete Wavelet Transform (DWT)
Video Codecs Using the Discrete Wavelet Transform:
VDONet's VDOWave
VxTreme
Intel Indeo 5.x
(possibly) Intel Indeo 4.x
STRENGTHS AND WEAKNESSES
1. Most video and image compression implemented using the
Discrete Wavelet Transform does not exhibit the blocking, also known
as tiling, artifacts seen with the block Discrete Cosine Transform.
2. DWT based video and image compression often outperforms block DCT
compression if evaluated using the Peak Signal to Noise Ratio (PSNR)
or Mean Squared Error (MSE) metric (these are mathematically
equivalent).
3. The subjective quality of video or images compressed with
DWT can appear better than block DCT methods for the same
compression ratio.
4. Wavelet compression exhibits blurring and ringing artifacts
at sharp edges as compression increases. This is an inherent
weakness of the method, shared with the Discrete Cosine Transform
which also exhibits the same type of artifacts. The ringing artifacts
are also known as contouring, mosquito noise, and the Gibbs effect.
OVERVIEW
The Discrete Wavelet Transform essentially consists of passing a
signal, such as an image, through a pair of filters, a low pass filter
and a high pass filter. The low pass filter yields a coarse or low
resolution version of the signal. The high pass filter yields an
added detail or difference signal. The outputs of the two filters are
then downsampled by two. Thus, at this point the downsampled outputs
have the same number of bits as the input signal. The parameters of
the two filters are selected so that when the upsampled output of the
low pass filter is added to the upsampled output of the high pass
filter, the original signal is reproduced.
The output of the high pass filter, the added detail signal, may then be fed
into another pair of filters and the process repeated.
A simple example of the discrete wavelet transform is the Haar
wavelet transform.
The input signal is x[n], a series of samples indexed by n.
Haar Low Pass Filter (the average of two successive samples)
g[n] = 1/2 * ( x[n] + x[n+1] )
Haar High Pass Filter (the difference of two successive samples)
h[n] = 1/2 * ( x[n+1] - x[n] )
Note that:
x[n] = g[n] - h[n]
x[n+1] = g[n] + h[n]
The output sequences g[n] and h[n] contain redundant information.
One can safely downsample by two, that is omit the even or odd
samples, and still reproduce the original input signal x[n].
Usually the odd samples are omitted.
The complete input signal x[n] can be reproduced from
g[0], g[2], g[4], ....
h[0], h[2], h[4], ....
alone.
x[0] = g[0] - h[0]
x[1] = g[0] + h[0]
x[2] = g[2] - h[2]
x[3] = g[2] + h[2]
and so on.
The output of the low pass filter is a coarse approximation of the
original input signal. When the input signal is an image, this
means a - sometimes blurry - low resolution version of the original image.
The output of the high pass filter is an added detail or difference
signal. When combined with the coarse approximation, as described, the
original input signal is exactly reproduced.
The coarse approximation is sometimes called a base layer and the
added detail is sometimes called an enhancement layer.
The output of the high pass filter, h[n], can be fed into another
pair of filters, repeating the process. The Discrete Wavelet Transforms
used in wavelet image and video compression iterate the process many
times.
So far, no compression has occured. The transform produces the same
number of bits as the input signal.
The output values are called transform coefficients or wavelet transform
coefficients.
The Haar wavelet is used primarily for illustrative purposes. More
complex filters are used for most real wavelet implementations.
Compression is typically achieved by applying some form of quantization,
scalar quantization in simple implementations and vector quantization
in more complex implementations, to the added detail signals. Some type of
entropy coding may be applied to the quantized
transform coefficients.
For example, in the crude Haar wavelet example, the input signal x[n]
might be a series of 8 bit samples such as a raster scan of a gray
scale image. One could continue to use 8 bits for the output of the
low pass filter, g[n]. However, use only 6 bits (divide by 4) for the
output of the high pass filter, h[n] - the detail signal. This is
scalar quantization. Further, the output of the high pass filter in
the Haar case will tend to be peaked toward zero, that is small
coefficients will be more common than large coefficients. Thus, some
form of entropy coding of the detail signal
h[n] is possible.
In fact, for most natural images, the low pass signal g[n]
will be correlated with
previous samples g[n-1] except at edges. g[n] will tend to be close
to or the same as g[n-1]. Objects tend to
have a continuous surface material, such as skin, with a constant
surface reflectance, a texture. The texture can be a simple
constant color level or a complex periodic or quasi-periodic
pattern, for example wallpaper or marble. Thus the low
pass signal g[n] could be encoded as a difference from previous
samples g[n-1] to achieve further compression.
For image coding, the notion is that the human visual system is less
sensitive to fine details in the image than to the gross features.
Thus quantization can be applied to the detail signals more strongly.
Return to Top
Contour-Based Image Coding
Video Codecs Using Contour-Based Image Coding:
Crystal Net's Surface Fitting Method (SFM) may be an example of
Contour-Based Image Coding.
The emerging ISO standard MPEG-4 incorporates some ideas associated
with Contour-Based Image Coding.
OVERVIEW
A contour is a line representing the outline of a figure, body, or
mass. A texture is a representation of the structure of a surface.
Contour-based image coding represents images as contours bounding
textured regions. Since contours frequently correspond to the boundaries
of objects in a scene there is a close relationship between
contour-based image coding and object-based image coding. Object-based
image coding represents an image as a collection of objects.
For example, once contours and textures have been extracted from an
image, the contours can be encoded as the control points of a spline -
a polynomial function used to represent curves - fitted to the
contour. The textures can be encoded as the transform coefficients
from a spatial frequency transform such as the Discrete Cosine
Transform or the many variants of the Discrete Wavelet Transform.
Compression can be achieved through entropy
coding of scalar or vector quantization of the control parameters
of the spline and the transform coeffecients used for the texture.
Contour-Based Image Coding is a very leading edge image coding
technology (May, 1999). Extracting contours, also known as
edge or line detection, remains an unsolved problem in computer
science. Whereas human viewers have an easy sense of what is and
is not a contour or line in a scene, computer algorithms - so far -
miss some contours, as defined by humans, and also find spurious
contours, as defined by humans. Extracting contours is one of a number
of pattern recognition and reasoning tasks that seem almost effortless
in humans but have proven difficult - impossible so far - to emulate
with computers.
A number of edge detection and image segmentation algorithms exist that
could be applied to the contour extraction in contour-based image
coding.
In principle, contour based image coding could circumvent the
problems that transform coding methods such as the Discrete Cosine
Transform (JPEG, MPEG, H.261, H.263, DV, etc.) and the Discrete
Wavelet Transform (Intel Indeo, VDONet VDOWave, etc.) encounter at
sharp edges, achieving higher compression.
Frame Differencing
VIDEO CODECS THAT USE FRAME DIFFERENCING
Cinepak
STRENGTHS AND WEAKNESSES
1. Generally can achieve better compression than independent encoding
of individual frames.
2. Errors accumulate in successsive frames after a key frame, eventually
requiring another key frame. (see below)
OVERVIEW
Frame Differencing exploits the fact that little changes from frame to
frame in many video or animation sequences. For example, a video
might show a ball flying through the air in front of a static
background. Most of the image, the background, does not change from
frame to subsequent frame in the scene.
In frame differencing, the still image compression method such as
vector quantization is applied to the difference between the frame and
the decoded previous frame. Often, most of the difference is zero or
small values which can be heavily compressed.
Most often, frame differencing uses "key frames" which are frames
compressed without reference to a previous frame. This limits accumulated
errors and enables seeking within the video stream.
In the widely used Cinepak, a key frame is often set every 15 frames.
Cinepak movies usually use frame differencing combined with vector
quantization.
If the compression scheme is lossy (vector quantization is lossy), errors
will accumulate from frame to frame. Eventually these errors will become
visible. This necessitates key frames!
Return to Top
Motion Compensation
VIDEO CODECS THAT USE MOTION COMPENSATION
ClearVideo (RealVideo) Fractal Video Codec from Iterated Systems
VDOWave from VDONet
VxTreme
MPEG-1,2, and 4
H.261
H.263
H.263+
STRENGTHS AND WEAKNESSES
1. Motion compensation achieves high video compression in video
generally superior to frame differencing.
2. The encoding phase of motion compensation (known as motion
estimation) is computationally intensive. MPEG-1 with IP and
B frames cannot be encoded in real time without dedicated
hardware, a silicon implementation of motion estimation.
3. The motion compensation scheme used in the international
standards MPEG, H.261, and H.263 works best for scenes with
limited motion such as talking heads. In general, video with
heavy motion such as sports video is hard to compress with
motion compensation.
OVERVIEW
Motion Compensation codes for motion within a scene such as a ball
moving across a background. The block Discrete Cosine Transform (DCT)
based international video standards MPEG-1, MPEG-2, MPEG-4, H.261, and
H.263 use motion compensation. Iterated Systems ClearVideo (Real
Video) fractal Video Codec, VDOWave from VDONet, and VxTreme's video
codec use forms of motion compensation.
Motion Compensation refers to a number of ideas and algorithms. The
motion compensation method used in MPEG and related international
standards (H.261 and H.263) is described below. This motion
compensation works for translational motion only. This is suited for
objects moving across a background or panning of the camera. It does
not work well for spinning objects, resizing objects, or camera zooms.
Alternative forms of motion compensation exist which handle
rotational, scaling, skewing, and other kinds of motion in a scene.
Recognizing objects such as a flying ball in a scene is an unsolved
problem in image processing and understanding. A way to exploit
the motion of the ball to achieve image compression is to partition the
image into blocks (16x16 pixels in MPEG-1). Code a "motion vector" for
each block which points to the 16x16 pixel block in a previous (or
future) frame that most closely approximates the block being coded.
In many cases this reference block will be the same block (no motion).
In some cases this reference block will be a different block (motion).
The encoder need not recognize the presence of a ball or other object, only
compare blocks of pixels in the decoded and reference frames.
COMPRESSION IS ACHIEVED BY SENDING OR STORING ONLY THE MOTION VECTOR
(AND A POSSIBLE SMALL ERROR) INSTEAD OF THE PIXEL VALUES FOR THE
ENTIRE BLOCK.
Note that the reference block can be anywhere in the image. The coded
or "predicted" blocks must form a partition or tiling of the image (frame)
being decoded. A reference block can be any 16x16 pixel block in
the reference frame (image) that most closely approximates the coded
or "predicted" block. The reference frame must be decoded prior to
the current frame being decoded.
However, the reference frame need not be PRESENTED before the current
frame being decoded. In fact, the reference frame could be a future
frame!! MPEG allows for this through so-called B (bi-directionally
predicted) frames.
In the example of the ball in front of a static background, no motion
occurs in most of the blocks. For these cases, the motion vectors
are zero. Motion compensation for these blocks is then equivalent
to frame differencing, where the difference between the block and the
same block in a previous (or future) frame is coded.
For the block or blocks containing the moving ball, the motion vectors
will be non-zero, pointing to a block in a previous (or future) frame
that contains the ball. The displaced block is subtracted from
the current block. In general, there will be some left over non-zero
values, which are then coded using the still image compression scheme
such as Vector Quantization, the Block Discrete Cosine Transform, or
the Discrete Wavelet Transform.
MPEG style motion compensation does not require recognition of the
ball. An encoder simply compares the block being coded with displaced
blocks in the reference frame (a previous or future frame). The
comparison can use mean squared error or some other metric of
differences between images. The encoder selects the displaced block
with the smallest mean squared error difference! At no point has the
encoder recognized an object in the image.
In MPEG, the motion vectors are encoded as variable length codes for
greater compression.
The encoding process is called Motion Estimation. This finds the
motion vector (or vectors) for each block.
The decoding process is called Motion Compensation.
Motion Compensation achieves greater compression than simple Frame
Differencing.
ILLUSTRATIVE EXAMPLE:
Predicted Region Reference Region
(the current frame being decoded) (a previously decoded frame)
_________ _________
| | | | | |
| * | | | | * | (moving ball)
| 4 | -4 | | | |
| | | | | |
_________ _________
| | | | | |
| 0 | 0 | | | | (no change)
| | | | | |
| | | | | |
_________ _________
The asterisk (*) represents a ball flying across the scene from right
to left.
Four blocks with associated motion vectors (4, -4, 0, and 0). The
upper left block looks like the upper right block in the reference
region (where the ball was). The upper right block looks like the
upper left region in the reference region. The lower left and
lower right blocks were unchanged. In this simple example, the
vertical displacement is zero and is ignored.
In this simple example, the region can be decoded using the
motion vectors alone. In more general cases, there is an
error between the frame predicted using motion vectors alone
and the actual frame. This error is coded using a still image
compression scheme such as the block Discrete Cosine Transform (DCT).
In this simple example, the previously decoded frame is also
previous in the presentation order. The previously decoded or
reference frame precedes the current frame in time. In general, keep
in mind the distinction between decode order and presentation order.
The reference frame could be a future frame.
Return to Top
Audio Codecs
The sound tracks in an AVI file are Microsoft Waveform Audio (WAV) files.
The Waveform Audio files can be uncompressed PCM (Pulse Code Modulated) audio
or compressed with many different audio codecs (compressor/decompressors).
The windows multimedia system uses the terms WAVE or waveform audio to
refer to audio that consists of digitally sampled sound. In contrast
to notes of music as in MIDI, another type of audio incorporated in
the Windows multimedia system.
The WAV, WAVE, or waveform audio system (different authors use all
three to refer to the Microsoft Windows audio system) predates
Video for Windows. Video for Windows was wrapped around
WAVE. Various compromises were made to insure backward compatibility
with existing WAVE applications, drivers, and files. Keep this
in mind as there are various differences between the audio
system and the video system described in other sections of this
overview.
To play a waveform audio (WAV) file or the sound track of an AVI
compressed with a codec, the codec must be installed in the Audio
Compression Manager under Windows. Windows PCM files (uncompressed)
are always supported. The Audio Compression Manager (ACM) is the
software system in Windows that manages waveform audio codecs and
filters.
Different audio codecs are identified with different waveform audio
tags, 32 bit numbers. Wave audio format tags are registered with
Microsoft.
The following list of registered wave audio formats if from the
mmreg.h file in the Win32 SDK. mmreg.h is the Registered Multimedia
Information Public Header File
/* WAVE form wFormatTag IDs */
#define WAVE_FORMAT_UNKNOWN 0x0000 /* Microsoft Corporation */
#define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */
#define WAVE_FORMAT_IBM_CVSD 0x0005 /* IBM Corporation */
#define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */
#define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */
#define WAVE_FORMAT_OKI_ADPCM 0x0010 /* OKI */
#define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */
#define WAVE_FORMAT_IMA_ADPCM (WAVE_FORMAT_DVI_ADPCM) /* Intel Corporation */
#define WAVE_FORMAT_MEDIASPACE_ADPCM 0x0012 /* Videologic */
#define WAVE_FORMAT_SIERRA_ADPCM 0x0013 /* Sierra Semiconductor Corp */
#define WAVE_FORMAT_G723_ADPCM 0x0014 /* Antex Electronics Corporation */
#define WAVE_FORMAT_DIGISTD 0x0015 /* DSP Solutions, Inc. */
#define WAVE_FORMAT_DIGIFIX 0x0016 /* DSP Solutions, Inc. */
#define WAVE_FORMAT_DIALOGIC_OKI_ADPCM 0x0017 /* Dialogic Corporation */
#define WAVE_FORMAT_YAMAHA_ADPCM 0x0020 /* Yamaha Corporation of America */
#define WAVE_FORMAT_SONARC 0x0021 /* Speech Compression */
#define WAVE_FORMAT_DSPGROUP_TRUESPEECH 0x0022 /* DSP Group, Inc */
#define WAVE_FORMAT_ECHOSC1 0x0023 /* Echo Speech Corporation */
#define WAVE_FORMAT_AUDIOFILE_AF36 0x0024 /* */
#define WAVE_FORMAT_APTX 0x0025 /* Audio Processing Technology */
#define WAVE_FORMAT_AUDIOFILE_AF10 0x0026 /* */
#define WAVE_FORMAT_DOLBY_AC2 0x0030 /* Dolby Laboratories */
#define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */
#define WAVE_FORMAT_ANTEX_ADPCME 0x0033 /* Antex Electronics Corporation */
#define WAVE_FORMAT_CONTROL_RES_VQLPC 0x0034 /* Control Resources Limited */
#define WAVE_FORMAT_DIGIREAL 0x0035 /* DSP Solutions, Inc. */
#define WAVE_FORMAT_DIGIADPCM 0x0036 /* DSP Solutions, Inc. */
#define WAVE_FORMAT_CONTROL_RES_CR10 0x0037 /* Control Resources Limited */
#define WAVE_FORMAT_NMS_VBXADPCM 0x0038 /* Natural MicroSystems */
#define WAVE_FORMAT_CS_IMAADPCM 0x0039 /* Crystal Semiconductor IMA ADPCM */
#define WAVE_FORMAT_G721_ADPCM 0x0040 /* Antex Electronics Corporation */
#define WAVE_FORMAT_MPEG 0x0050 /* Microsoft Corporation */
#define WAVE_FORMAT_CREATIVE_ADPCM 0x0200 /* Creative Labs, Inc */
#define WAVE_FORMAT_CREATIVE_FASTSPEECH8 0x0202 /* Creative Labs, Inc */
#define WAVE_FORMAT_CREATIVE_FASTSPEECH10 0x0203 /* Creative Labs, Inc */
#define WAVE_FORMAT_FM_TOWNS_SND 0x0300 /* Fujitsu Corp. */
#define WAVE_FORMAT_OLIGSM 0x1000 /* Ing C. Olivetti & C., S.p.A. */
#define WAVE_FORMAT_OLIADPCM 0x1001 /* Ing C. Olivetti & C., S.p.A. */
#define WAVE_FORMAT_OLICELP 0x1002 /* Ing C. Olivetti & C., S.p.A. */
#define WAVE_FORMAT_OLISBC 0x1003 /* Ing C. Olivetti & C., S.p.A. */
#define WAVE_FORMAT_OLIOPR 0x1004 /* Ing C. Olivetti & C., S.p.A. */
//
// the WAVE_FORMAT_DEVELOPMENT format tag can be used during the
// development phase of a new wave format. Before shipping, you MUST
// acquire an official format tag from Microsoft.
//
#define WAVE_FORMAT_DEVELOPMENT (0xFFFF)
Return to Top
How to determine which Audio Codecs are Installed
View the SYSTEM.INI file. In Windows 95, 32 bit Audio Codecs are
listed in the [drivers32] section.
[drivers32]
msacm.lhacm=lhacm.acm
msacm.l3codec=l3codecb.acm
msacm.msg723=msg723.acm
msacm.msnaudio=msnaudio.acm
The string msacm stands for Microsoft Audio Compression Manager (ACM).
This is the system software component that manages audio codecs (and
other audio components) in 16 bit Windows and in Win32. The different
codecs are identified by a string of arbitrary length such as msnaudio
for Microsoft Network Audio. Note that this differs from Video for
Windows where everything is a Four Character Code.
The audio codecs in the example above were installed in Windows 95 by
Microsoft's NetShow streaming audio/video product.
The Audio Compression Manager (ACM) is in the process of being displaced by
ActiveMovie.
In Windows 95,
(1) Open the Control Panel
(2) Double Click on the Multimedia Icon
(3) Select the Advanced tab
(4) Under the Multimedia Drivers icon, double click on the Audio
Compression Codecs icon to see a list of installed audio codecs. This
information is the same as the information stored in the SYSTEM.INI
file (see above).
Return to Top
ActiveMovie
Active Movie is a new multimedia architecture for Windows 95 and
Windows NT (4.0 and after). ActiveMovie includes support for
playing AVI, QuickTime (.MOV), and MPEG files. ActiveMovie is
apparently intended to supersede Video for Windows.
ActiveMovie 1.0 ships with the OEM Service Release 2 (OSR2) of Windows 95.
It did not ship with prior releases of Windows 95 but was available
separately through the ActiveMovie SDK.
ActiveMovie 1.0 is also bundled with Microsoft's Internet Explorer for
Windows 95 and NT 4.0 Internet Explorer can be downloaded from the
Microsoft Web site at:
http://www.microsoft.com/ie/
Active Movie 1.0 can be downloaded by itself from the Microsoft Internet
Explorer site. (6/6/97)
ActiveMovie 1.0 appears to be a 32 bit software component that runs
under both Windows 95 and Windows NT 4.0 user mode.
ActiveMovie provides at least three different programming
interfaces:
- The ActiveMovie ActiveX Control
- ActiveMovie Component Object Model (COM) interfaces
- The OM-1 MPEG MCI (Media Control Interface) command set
Amongst other things, the ActiveMovie ActiveX Control can be embedded
in HTML Web pages and programmed via VBScript or JavaScript. It can also
be programmed using Visual C++ or Visual Basic as part of applications.
The ActiveMovie COM interaces can be accessed through Visual C++ or
Visual Basic.
ActiveMovie supports a subset of the Media Control Interface (MCI)
commands familiar to Video for Windows programmers. These commands can
be accessed through the mciSendCommand(...) and mciSendString(...)
functions in C/C++.
ActiveMovie 1.0 does NOT provide video capture. Windows 95 with
ActiveMovie 1.0 continues to use the Video for Windows video capture system
and drivers.
ActiveMovie 2.0 (renamed DirectShow in 1997) will provide a new,
alternative mechanism for video capture. According to information
distributed by Microsoft at the WDM Device Driver Conference in April,
1997, ActiveMovie 2.0 will use the WDM Stream Class under Memphis
(formerly Windows 97) and Windows NT 5.0 to implement video capture.
This is subject to possible change since neither Memphis nor NT 5.0
has been released (7/27/97).
Extensive information on ActiveX and ActiveMovie is available at the
Microsoft Web site.
ActiveMovie 1.0 SDK Documentation at (6/28/97):
http://www.microsoft.com/devonly/tech/amo
v1doc/
Return to Top
GUID's and AVI
GUID stands for Global Unique IDentifier.
In Microsoft's Component Object Model (COM) morass, an object oriented
programming model that incorporates MFC (Microsoft Foundation
Classes), OLE (Object Linking Embedding), ActiveX, ActiveMovie and
everything else Microsoft is hawking lately, a GUID is a 16 byte or
128 bit number used to uniquely identify objects, data formats,
Section 5 of 14 - Prev - Next
All sections - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14
© allanswers.org | Terms of use