Installation and Operation

This section contains general information about installing and using Framewave. Please refer to the README file in the installation package for the most recent information.

Library Files

The include directory contains the following files.

fwBase.h contains definitions of data types, data structures, enumerations, and declarations for core functions.

fwSignal.h contains function declarations for signal processing.

Essential Vector Calculation (Add, Sub, Or, Xor, etc.)

Fixed Accuracy Arithmetic (Inverse, Divide, Ln, etc.)

Vector Initialization Tasks (Copy, Move, etc.)

Domain Transform (Multiplication of vectors, etc.)

fwImage.h contains function declarations for image processing.

Arithmetic and Logic operations (Add, Sub, Or, etc.)

Digital Filter Functions (Box Filter, Sobel Filter, etc.)

Color Model Conversion (RGBToYUV, RGBToYCbCr, etc.)

Threshold and Compare

Morphologic Operations

Geometric Operations

3D - LUT functions

fwVideo.h contains function declarations for video processing.

H.264 Decoder

H.264 Inverse Transform

H.264 Reconstruction

H.264 Intra-predict

H.264 Interpolation

H.264 Deblock Filtering

Motion Compensation

Motion Estimation

MPEG-1:Decoder, Inverse DCT, Inverse Quantization, Reconstruction of DCT block, Variable Length decoding

MPEG-2:Decoder, Inverse DCT, Inverse Quantization, Reconstruction of DCT block, Variable Length decoding

fwJPEG.h contains function declarations for JPEG processing.

JPEG Color Conversion

JPEG Sampling

JPEG Level Shift, Planar-to-Pixel and Pixel-to-Planar

Quantization and Combined DCT

Huffman Codec

Library Directory Hierarchy

The directory hierarchy for each type of installation is as follows.

Microsoft® Windows® Operating Systems

DLL Directories

The fwImage/fwSignal/fwBase/fwJPEG/fwVideo.lib files contain the import address table (IAT) for the corresponding functions. Rather than fetching the address of the function during run time, the .lib files are used to link against a DLL at compile time.

The fwImage/fwSignal/fwBase/fwJPEG/fwVideo.dll files contain implemented functions.

Linux® Operating Systems

LIB Directories

The libfwImage.so/libfwSignal.so/libfwBase.so/libfwJPEG.so/libfwVideo.so files contain all shared libraries.

Sun® Solaris® Operating System

LIB Directories

The libfwImage.so/libfwSignal.so/libfwBase.so/libfwJPEG.so/libfwVideo.so files contain all shared libraries.

Apple® Mac OS® Operating Systems

LIB Directories

The libfwImage.dylib/libfwSignal.dylib/libfwBase.dylib/libfwJPEG.dylib/libfwVideo.dylib files contain all shared libraries.

Setting Up Framewave

Set up each type of installation as follows.

Microsoft® Windows® Operating Systems

Make sure the DLL files are in the search PATH using one of the following methods.

Add the Framewave folder to the include search path within Microsoft Visual Studio (Project>Properties>Configuration Properties>C/C++>General> Additional Include Directories).

Add the Framewave lib folder to the libraries search path within Visual Studio (Project>properties>Configuration Properties>Linker>General> Additional Library Directories).

Linux® Operating Systems

Assume this is a 64-bit installation and the installation directory is "ExampleDir".

To use the shared libraries, create the following symbolic links.

     cd ExampleDir/FW_1.0_Lin64/lib
     ln -sf ./libfwBase.so.1.0.0 libfwBase.so
     ln -sf ./libfwImage.so.1.0.0 libfwImage.so
     ln -sf ./libfwJPEG.so.1.0.0 libfwJPEG.so
     ln -sf ./libfwSignal.so.1.0.0 libfwSignal.so
     ln -sf ./libfwVideo.so.1.0.0 libfwVideo.so

Create similar symbolic links with the .so.1 extension.

To compile a cpp file that uses Framewave, for example test.cpp:

     g++ -m64 -c -IExampleDir/FW_1.0_Lin64 test.cpp

All Framewave libraries have dependency on fwBase.

For example, to link with with the Image library,

     g++ -m64 -LExampleDir/FW_1.0_Lin64/lib test.o -lfwImage -lfwBase

It may be necessary to explicitly link in the stdc++, pthreads, or math libraries if they are not automatically linked in.

Before running the application, make sure the ExampleDir/FW_1.0_Lin64/lib is in the shared library search path for the environment.

Sun® Solaris® Operating Systems

Assume this is a 64-bit installation and the installation directory is "ExampleDir".

To use the shared libraries, create the following symbolic links.

     cd ExampleDir/FW_1.0_Sol64/lib
     ln -sf ./libfwBase.so.1.0.0 libfwBase.so
     ln -sf ./libfwImage.so.1.0.0 libfwImage.so
     ln -sf ./libfwJPEG.so.1.0.0 libfwJPEG.so
     ln -sf ./libfwSignal.so.1.0.0 libfwSignal.so
     ln -sf ./libfwVideo.so.1.0.0 libfwVideo.so

Create similar symbolic links with the .so.1 extension.

To compile a cpp file that uses Framewave, for example test.cpp:

     CC -m64 -c -IExampleDir/FW_1.0_Sol64 test.cpp

All Framewave libraries have dependency on fwBase.

For example, to link with with the Image library,

     CC -m64 -LExampleDir/FW_1.0_Sol64/lib test.o -lfwImage -lfwBase -lrt

Before running the application, make sure the ExampleDir/FW_1.0_Sol64/lib is in the shared library search path for the environment.

Apple® Mac OS® Operating Systems

Assume this is a 64-bit installation and the installation directory is "ExampleDir".

To use the shared libraries, create the following symbolic links.

     cd ExampleDir/FW_1.0_Mac64/lib
    ln -sf ./libfwBase-1.0.dylib libfwBase.dylib
    ln -sf ./libfwImage-1.0.dylib libfwImage.dylib
    ln -sf ./libfwJPEG-1.0.dylib libfwJPEG.dylib
    ln -sf ./libfwSignal-1.0.dylib libfwSignal.dylib
    ln -sf ./libfwVideo-1.0.dylib libfwVideo.dylib

Create similar symbolic links with the .1.dylib extension.

To compile a cpp file that uses Framewave, for example test.cpp:

     g++ -m64 -c -IExampleDir/FW_1.0_Mac64 test.cpp

All Framewave libraries have dependency on fwBase.

For example, to link with with the Image library,

     g++ -m64 -LExampleDir/FW_1.0_Mac64/lib test.o -lfwImage -lfwBase

It may be necessary to explicitly link in the stdc++, pthreads, or math libraries if they are not automatically linked in.

Before running the application, make sure the ExampleDir/FW_1.0_Mac64/lib is in the shared library search path for the environment.

Linker Issues

This section describes how to resolve errors that occur while linking code to the Framewave static library for Microsoft® Windows® operating systems. This information does not apply to code that links to the dynamic DLL (shared) version of the Framewave library for Microsoft Windows, or to versions of the Framewave library for other operating systems.

Framewave static libraries for Microsoft Windows have a dependency on Microsoft Visual C++ 2005 C run-time libraries. The project (executable or DLL) also has a dependency on the C run-time library. The linker automatically links to the run-time library used by the static library as well as to the run-time library specified in the project settings. A version mismatch between the library in the static library and the library specified in the project can cause the linker to display error messages and terminate.

To resolve this issue, use a static run-time library in the project.

When linking to a release version of the static Framewave library, use the /MT compiler switch in the project settings. This links the project to the same static multithreaded version of the run-time Framewave library used by the static Framewave library.

When linking to a debug version of the static Framewave library (common in debug configurations), use the /MTd compiler switch in the project settings. This links the project to the static multithreaded debug version of the run-time library.

Most code generated by the Visual C++ compiler has some dependency on the C runtime libraries. Microsoft provides several different flavors of the run-time libraries (static vs. dynamic (DLL), debug vs. release), and functions are implemented differently in each flavor. These differences can cause linker errors if a project is linked to the wrong library flavor. The runtime library flavor is normally specified by a compiler switch (/MT, /MTd, /MD, /MDd). Mixing different library types in the same module (executable or DLL) can also lead to various linker or run-time issues, and is not recommended.

For more information see:

http://msdn2.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

http://support.microsoft.com/kb/154753