1.1 Object Relational Technology

Oracle9i is an object relational database management system. This means that in addition to its traditional role in the safe and efficient management of relational data, it provides support for the definition of object types, including the data associated with objects and the operations (methods) that can be performed on them. This powerful mechanism, well established in the object-oriented world, includes integral support for BLOBs to provide the basis for adding complex objects, such as digitized audio, image, and video to Oracle9i databases.

Within Oracle interMedia, audio data characteristics have an object relational type known as ORDAudio, heterogeneous data characteristics have an object relational type known as ORDDoc, image data characteristics have an object relational type known as ORDImage, and video data characteristics have an object relational type known as ORDVideo. All four store data source information in an object relational type known as ORDSource.

See the following references for extensive information on using BLOBs and BFILEs:

Multimedia applications have common and unique requirements. Oracle interMedia object types support common application requirements and can be extended to address application-specific requirements. With Oracle interMedia, multimedia data can be managed as easily as standard attribute data.

Oracle interMedia is accessible to applications through both relational and object interfaces. Database applications written in Java, C++, or traditional 3GLs can interact with interMedia through modern class library interfaces, or PL/SQL and Oracle Call Interface (OCI).

interMedia supports storage of the popular file formats, including desktop publishing image, and streaming audio and video formats in Oracle9i databases. interMedia provides the means to add audio, image, and video, or other heterogeneous media columns or objects to existing tables, and insert and retrieve multimedia data. This enables database designers to extend existing application databases with multimedia data or to build new end-user multimedia database applications. interMedia developers can use the basic functions provided here to build specialized multimedia applications.

Oracle interMedia uses object types, similar to Java or C++ classes, to describe multimedia data. These object types are called ORDAudio, ORDDoc, ORDImage, and ORDVideo. An instance of these object types consists of attributes, including metadata and the media data, and methods. Media data is the actual audio, image, or video, or other heterogeneous media data. Metadata is information about the data, such as object length, compression type, or format. Methods are procedures that can be performed on the object like getContent( ) and setProperties( ).

interMedia objects have a common media data storage model. The media data component of these objects can be stored in the database, in a binary large object (BLOB) under transaction control. The media data can also be stored outside the database, without transaction control. In this case, a pointer is stored in the database under transaction control, and the media data is stored in:

An external binary file (BFILE)

An HTTP server-based URL

A user-defined source on a specialized media data server or other server

Media data stored outside the database can provide a convenient mechanism for managing large, pre-existing, or new media repositories that reside as flat files on erasable or read-only media. This data can be imported into BLOBs at any time for transaction control. Section 1.11 describes several ways of loading multimedia data into an Oracle9i database.

Media metadata is stored in the database under Oracle interMedia control. Whether media data is stored within or outside the database, interMedia manages metadata for all the media types and may automatically extract it for audio, image, and video. This metadata includes the following attributes:

Audio, image, and video, or other heterogeneous media data storage information including the source type, location, and source name, and whether the data is stored locally (in the database) or externally

Video characteristics: frame width and height, frame resolution, frame rate, play time (duration), number of frames, compression type, number of colors, and bit rate

In addition to metadata extraction methods, a minimal set of image manipulation methods is provided. For image, this includes performing format conversion and compression, scaling, cropping, and copying images.

interMedia is designed to be extensible. It supports a base set of popular audio, image, and video data formats for multimedia processing that also can be extended, for example, to support additional formats, new digital compression and decompression schemes (codecs), data sources, and even specialized data processing algorithms for audio and video data.

Creating specialized plug-ins to support other external sources of audio, image, and video data, or other heterogeneous media data that are not currently supported. See Section 1.9.1 for more information.

Creating specialized audio and video data, or other heterogeneous media data format plug-ins to support other audio and video data, or other heterogeneous media data formats that are not currently supported. See Section 1.9.1 for more information.

Using the audio and video data processing methods to allow a specific audio or video command and its arguments to be passed through to process audio or video data. See Section 1.9.2 and Section 1.9.3 for more information.

interMedia is a building block for various multimedia applications rather than being an end-user application. It consists of object types along with related methods for managing and processing multimedia data. Some example applications for interMedia are:

1.3 Audio Concepts

This section contains information about digitized audio concepts and using the ORDAudio object type to build audio applications or specialized ORDAudio objects.

1.3.1 Digitized Audio

ORDAudio integrates the storage, retrieval, and management of digitized audio data in Oracle databases using Oracle9i.

Audio may be produced by an audio recorder, an audio source such as a microphone, digitized audio, other specialized audio recording devices, or even by program algorithms. Audio recording devices take an analog or continuous signal, such as the sound picked up by a microphone or sound recorded on magnetic media, and convert it into digital values with specific audio characteristics such as format, encoding type, number of channels, sampling rate, sample size, compression type, and audio duration.

1.3.2 Audio Components

Digitized audio consists of the audio data (digitized bits) and attributes that describe and characterize the audio data. Audio applications sometimes associate application-specific information, such as the description of the audio clip, date recorded, author or artist, and so forth, with audio data by storing descriptive text in an attribute or column in the database table.

The audio data can have different formats, encoding types, compression types, numbers of channels, sampling rates, sample sizes, and playing times (duration) depending upon how the audio data was digitally recorded. ORDAudio can store and retrieve audio data of any data format. ORDAudio can automatically extract metadata from audio data of a variety of popular audio formats. ORDAudio can also extract application attributes and store them in the comments field of the object in XML form identical to what is provided by interMedia Annotator utility. See Appendix A for a list of supported data formats from which ORDAudio can extract and store attributes and other audio features. ORDAudio is extensible and can be made to recognize and support additional audio formats.

The size of digitized audio (number of bytes) tends to be large compared to traditional computer objects, such as numbers and text. Therefore, several encoding schemes are used that squeeze audio data into fewer bytes, thus putting a smaller load on storage devices and networks.

1.4 ORDDoc or Heterogeneous Media Data Concepts

This section contains information about heterogeneous media data concepts and using the ORDDoc object type to build applications or specialized ORDDoc objects.

1.4.1 Digitized Heterogeneous Media Data

ORDDoc integrates the storage, retrieval, and management of heterogeneous media data in Oracle databases using Oracle9i.

Text documents may be produced by application software, text conversion utilities, speech to text processing software, and so forth. Heterogeneous media data can be ASCII text files or binary files formatted by a particular application.

interMedia ORDDoc can store any heterogeneous media data including audio, image, and video data in a database column. Instead of having separate columns for audio, image, text, and video objects, you can use one column of ORDDoc objects to represent all types of multimedia.

1.4.2 Heterogeneous Media Data Components

Heterogeneous media data consist of the data (digitized bits) and attributes that describe and characterize the heterogeneous media data.

Heterogeneous media data can have different formats depending upon the application generating the media data. interMedia can store and retrieve media data of any data format. The ORDDoc heterogeneous media data type can be used in applications that require you to store different types of heterogeneous media data, such as audio, image, video, and any other type of media data in the same column so you can build a common metadata index on all the different types of heterogeneous media data. Using this index, you can search across all the different types of heterogeneous media data. Note that you cannot use this same search technique if the different types of heterogeneous media data are stored in different types of objects in different columns of relational tables.

ORDDoc can automatically extract metadata from data of a variety of popular audio, image, and video data formats. ORDDoc can also extract application attributes and store them in the comments field of the object in XML form. See Appendix A, Appendix B, and Appendix C for a list of supported data formats from which interMedia can extract and store attributes. ORDDoc is extensible and can be made to recognize and support other heterogeneous media data formats.

1.5 Image Concepts

This section contains information about digitized image concepts and using the ORDImage object type to build image applications or specialized ORDImage objects.

1.5.1 Digitized Images

ORDImage integrates the storage, retrieval, and management of digitized images in Oracle databases using Oracle9i.

ORDImage supports two-dimensional, static, digitized raster images stored as binary representations of real-world objects or scenes. Images may be produced by a document or photograph scanner, a video source such as a camera or VCR connected to a video digitizer or frame grabber, other specialized image capture devices, or even by program algorithms. Capture devices take an analog or continuous signal such as the light that falls onto the film in a camera, and convert it into digital values on a two-dimensional grid of data points known as pixels. Devices involved in the capture and display of images are under application control.

1.5.2 Image Components

Digitized images consist of the image data (digitized bits) and attributes that describe and characterize the image data. Image applications sometimes associate application-specific information, such as including the name of the person pictured in a photograph, description of the image, date photographed, photographer, and so forth, with image data by storing this descriptive text in an attribute or column in the database table.

The image data (pixels) can have varying depths (bits per pixel) depending on how the image was captured, and can be organized in various ways. The organization of the image data is known as the data format. ORDImage can store and retrieve image data of any data format. ORDImage can process and automatically extract properties of images of a variety of popular data formats. See Appendix B for a list of supported data formats for which ORDImage can process and extract metadata. In addition, certain foreign images (formats not natively supported by ORDImage) have limited support for image processing. See Appendix E for more information.

The storage space required for digitized images can be large compared to traditional attribute data such as numbers and text. Many compression schemes are available to squeeze an image into fewer bytes, thus reducing storage device and network load. Lossless compression schemes squeeze an image so that when it is decompressed, the resulting image is bit-for-bit identical with the original. Lossy compression schemes do not result in an identical image when decompressed, but rather, one in which the changes may be imperceptible to the human eye.

Image interchange format describes a well-defined organization and use of image attributes, data, and often compression schemes, allowing different applications to create, exchange, and use images. Interchange formats are often stored in or as disk files. They may also be exchanged in a sequential fashion over a network and be referred to as a protocol. There are many application subdomains within the digitized imaging world and many applications that create or utilize digitized images within these. ORDImage supports storage and retrieval of all image data formats and processing and attribute extraction of many image data formats (see Appendix B).

Content-based retrieval of images with extensible indexing is supported for image matching. An overview of the benefits of content-based retrieval is described in Chapter 2 along with how content-based retrieval works, including definitions and explanations of the visual attributes (color, texture, shape, and location) and why you might emphasize specific attributes in certain situations. In addition, the use of indexing to improve search and retrieval performance is described in Section 2.4.

1.6 Video Concepts

This section contains information about digitized video concepts and using ORDVideo to build video applications or specialized ORDVideo objects.

1.6.1 Digitized Video

ORDVideo integrates the storage, retrieval, and management of digitized video data in Oracle databases using Oracle9i.

Video may be produced by a video recorder, a video camera, digitized animation video, other specialized video recording devices, or even by program algorithms. Some video recording devices take an analog or continuous signal, such as the video picked up by a video camera or video recorded on magnetic media, and convert it into digital values with specific video characteristics such as format, encoding type, frame rate, frame size (width and height), frame resolution, video length, compression type, number of colors, and bit rate.

1.6.2 Video Components

Digitized video consists of the video data (digitized bits) and the attributes that describe and characterize the video data. Video applications sometimes associate application-specific information, such as the description of the video training tape, date recorded, instructor's name, producer's name, and so forth, with video data by storing descriptive text in an attribute or column in the database table.

The video data can have different formats, compression types, frame rates, frame sizes, frame resolutions, playing times, compression types, number of colors, and bit rates depending upon how the video data was digitally recorded. ORDVideo can store and retrieve video data of any data format. ORDVideo can automatically extract metadata from video data of a variety of popular video formats. ORDVideo can also extract application attributes and store them in the comments field of the object in XML form identical to what is provided by the interMedia Annotator utility. See Appendix C for a list of supported data formats from which interMedia can extract and store attributes and other video features. ORDVideo is extensible and can be made to recognize and support additional video formats.

The size of digitized video (number of bytes) tends to be large compared to traditional computer objects, such as numbers and text. Therefore, several encoding schemes are used that squeeze video data into fewer bytes, thus putting a smaller load on storage devices and networks.

ORDSource methods should not be called directly. Instead, invoke the wrapper method of the media object corresponding to the ORDSource method. This information is presented for users who want to write their own user-defined sources.

1.8.1 Storing Multimedia Data

interMedia can store multimedia data as an internal source within the Oracle9i database, under transactional control as a BLOB. It can also externally reference digitized multimedia data stored as an external source in an operating system-specific BFILE in a local file-system, as a URL on an HTTP server, as audio, image, or video stored on media servers, or as a user-defined source on other servers. Although these external storage mechanisms are particularly convenient for integrating pre-existing sets of multimedia data with an Oracle9i database, the multimedia data will not be under transactional control.

BLOBs are stored in the database tablespaces in a way that optimizes space and provides efficient access. Large BLOBs may not be stored inline (BLOBs under 4K bytes in size can be stored inline) with other row data. Depending on the size of the BLOB, a locator is stored in the row and the actual BLOB (up to 4 gigabytes) is stored in other tablespaces. The locator can be considered a pointer to the actual location of the BLOB value. When you select a BLOB, you are selecting the locator instead of the value, although this is done transparently. An advantage of this design is that multiple BLOB locators can exist in a single row. For example, you might want to store a short video clip of a training tape, an audio recording containing a brief description of its contents, a syllabus of the course, a picture of the instructor, and a set of maps and directions to each training center.

interMedia ORDAudio, ORDDoc, ORDImage, and ORDVideo object types provide wrapper methods to set the source of the data as local or external; modifying the time an object was last updated; setting information about the external source type, location, and file name of the data; transferring data into or out of the database; obtaining information about the local data content such as its length and location, its handle to the BLOB, putting the content into a temporary BLOB, or deleting it; accessing source data by opening it, reading it, writing to it, trimming it, and closing it; and passing in a series of methods and related arguments to be processed by calling a single method.

1.8.2 Querying Multimedia Data

Once stored within an Oracle9i database, multimedia data can be queried and retrieved by using the various alphanumeric columns or object attributes of the table to find a row that contains the desired data. For example, you can select a video clip from the Training table where the course name is 'Oracle9i Concepts'.

The collection of multimedia data in the database can be related to some set of attributes or keywords that describe the associated content. The multimedia data content can be described with textual components and numeric attributes such as dates and identification numbers. With Oracle9i, data attributes can reside in the same table as the object type with objects also containing the metadata. Alternatively, the application designer could define a composite object type that contains one of the interMedia object types along with other attributes.

1.9 Extending Oracle interMedia

The following sections describe each of these topics and where to find more information.

1.9.1 Supporting Other External Sources and Other Media Data Formats

For each unique external media data source or each unique ORDAudio, ORDDoc, or ORDVideo data format that you want to support, you must:

Design your new data source or new ORDAudio, ORDDoc, or ORDVideo data format.

Implement your new data source or new ORDAudio, ORDDoc, or ORDVideo data format.

Install your new plug-in in the ORDPLUGINS schema.

Grant EXECUTE privileges on your new plug-in to PUBLIC.

Supporting Other External Sources

To implement your new data source, you must implement the required interfaces in the ORDX_<srcType>_SOURCE package in the ORDPLUGINS schema (where <srcType> represents the name of the new external source type). Use the package body example in Section I.3.4 as a template to create the package body. Then set the source type parameter in the setSourceInformation( ) call to the appropriate source value to indicate to the ORDAudio, ORDImage, ORDDoc, or ORDVideo object that package ORDPLUGINS.ORDX_<srcType>_SOURCE is available as a plug-in. Use the ORDPLUGINS.ORDX_FILE_SOURCE and ORDPLUGINS.ORDX_HTTP_SOURCE packages as guides when you extend support to other external audio, image, video, or other heterogeneous media data sources.

Supporting Other ORDAudio, ORDDoc, and ORDVideo Data Formats

To implement your new ORDAudio, ORDDoc, or ORDVideo data format, you must implement the required interfaces in the ORDPLUGINS.ORDX_<format>_<media> package in the ORDPLUGINS schema (where <format> represents the name of the new audio or video, or other heterogeneous media data format and <media> represents the type of media ("AUDIO" or "VIDEO", or "DOC"). Use the ORDPLUGINS.ORDX_DEFAULT_<media> package as a guide when you extend support to other audio or video data formats or other heterogeneous media data formats. Use the package body examples in Section 6.4.2, Section 7.4.2, and Section 9.4.2 as templates to create the audio or video, or other heterogeneous media data package body, respectively. Then set the new format parameter in the setFormat( ) call to the appropriate format value to indicate to the ORDAudio, ORDDoc, or ORDVideo object that package ORDPLUGINS.ORDX_<format>_<media> is available as a plug-in.

See Section F.1 and Section F.4 for more information on installing your own format plug-in and running the sample scripts provided.

Supporting Other Image Data Formats

Oracle interMedia supports certain other image formats through the setProperties( ) method for foreign images. This method allows other image formats to be recognized by writing the values supplied to the setProperties( ) method for foreign images to the existing ORDImage data attributes. See "setProperties( ) for Foreign Images" in Section 8.1.2 for more information.

1.9.2 Supporting Audio Data Processing

To support audio data processing, that is, the passing of an audio processing command and set of arguments to a format plug-in for processing, use the
processAudioCommand( ) method. This method is available only for user-defined formats.

1.9.3 Supporting Video Data Processing

To support video data processing, that is, the passing of a command and set of arguments to a format plug-in for processing, use the processVideoCommand( ) method. This method is only available for user-defined formats.

1.10 Relational Interface

Oracle interMedia relational interface gives developers the power of interMedia to annotate and manipulate media data stored in BLOBs and BFILEs without requiring changes to the existing application schema or instantiation of interMedia object types, ORDAudio, ORDDoc, ORDVideo, and ORDImage.

Developers can now use static methods of interMedia objects with existing and new media stored in BLOBS and BFILEs to move media data between the local file system and the database, to parse and extract the properties of the media data, and to store these properties in an XML formatted CLOB and optionally individual relational columns. interMedia static methods can also be used to perform image processing operations such as cut, scale, compress, and convert format.

See Chapter 10 for a description of the relational interface for each media type, including reference information, and information about using the relational interface. See Table 1-1 for a description on the availability of the relational interface and form of distribution.

1.11 Loading Multimedia Data into Oracle9i Using interMedia

Multimedia data can be managed best by the Oracle9i database. Your multimedia data should be loaded into Oracle9i to take advantage of its reliability, scalability, availability, and data management capabilities. To bulk load multimedia data into Oracle9i, you can use:

SQL*Loader

SQL*Loader is an Oracle utility that lets you load data, and in this case, multimedia data (LOB data), from external multimedia files into a table of an Oracle9i database containing interMedia column objects.

PL/SQL

A procedural extension to SQL, PL/SQL is an advanced fourth-generation programming language (4GL) of Oracle Corporation.

An advantage of using SQL*Loader is that it is easy to create and test the control file that controls your data loading operation. See Section 11.3 for a description of a sample control file. See also Oracle9i Database Utilities for more information.

An advantage of using PL/SQL scripts to load your data is that you can call methods as you load data to generate image thumbnails, extract properties, or import data. See Section 11.3 for a description of a sample PL/SQL multimedia data load script. See also PL/SQL User's Guide and Reference for more information.

Loading Multimedia Data Using Oracle interMedia Clipboard, Version 2

You can also use the Oracle interMedia feature, the Clipboard Version 2, to individually store and retrieve multimedia objects, such as audio, video, and image data, in an Oracle9i database server.

See Setting Up the Oracle interMedia Clipboard, Version 2 for more information.

The Clipboard can be downloaded from the Oracle interMedia Utilities and Plugins section of the Oracle Technology Network Web site:

Loading Multimedia Data Using Oracle interMedia Annotator Utility

You can use the Oracle interMedia Annotator utility to upload media data and an associated annotation into an Oracle9i database. Annotator does this using an Oracle PL/SQL Upload Template, which contains both PL/SQL calls and Annotator-specific keywords.

Advanced users with PL/SQL experience can create their own PL/SQL Upload Templates in a text editor. Novice users can use the PL/SQL Template Wizard, which is a graphical user interface that progresses through each step of PL/SQL Upload Template creation.

With a PL/SQL Upload Template created, you use the Annotator utility to invoke the Upload Annotation window and perform a series of operations, entering user name, password, service name, and the path to the PL/SQL Template Folder and file specification for your PL/SQL Upload Template.

1.12 Reading Data from a LOB

LOB read tests were conducted with:

PL/SQL scripts used to read LOBs from the database

OCI calls to perform LOB read operations from C++

A benchmark measured the performance of an Oracle-based system in a setting modeling a real-life video server application. See Section 11.6 for a description of the PL/SQL script used to read LOBs from the database. See Section 11.7 for a description of the LOB-read benchmark tests and the results of these tests for measuring the performance of an Oracle-based system in a setting modeling a real-life audio server application.

1.13 interMedia Architecture

Oracle interMedia is a single, integrated feature that extends Oracle9i by offering services to store, manage, and retrieve image, audio, and video data, location services, support for Web technologies, and annotation services for multimedia data.

The interMedia architecture defines the framework (see Figure 1-1) through which media-rich content as well as traditional data are supported in the database. This content and data can then be securely shared across multiple applications written with popular languages and tools, easily managed and administered by relational database management and administration technologies, and offered on a scalable server that supports thousands of users.

Through the use of interMedia, Oracle9i holds rich content in tables along with traditional data. Through the Oracle9i Java Virtual Machine (JVM), a server-side media parser is supported as well as an image processor. The media parser has object-oriented and relational interfaces, supports format and application metadata parsing, and includes a registry for new formats and extensions. The image processor includes Java Advanced Imaging (JAI) and provides image processing for producing thumbnail-sized images, for converting images, and image indexing and matching.

Beginning with Oracle9i, interMedia supports a heterogeneous media column, known as the ORDDoc object type. This allows a column to hold a mixture of image, audio, and video data, or other heterogeneous media data. Using interMedia import and export methods for each object type and for the relational interface, import and export between media objects and operating system files (external file storage) is possible. interMedia also supports special delivery types of servers, such as streaming content from an Oracle database. Using the Oracle interMedia plug-in for RealServer G2 6.0, 7.0, or 8.0, the RealServer G2 can stream multimedia data to a client directly out of the Oracle9i database using rtsp and iip protocols. In addition, media content indexing generators run external to the database.

In the middle tier, the Internet Application Server (iAS) or other Web server, provides access to interMedia through Oracle interMedia Java Classes, which enables Java applications on any tier (client, application server, or database server) to access, manipulate, and modify audio, image, and video data stored in Oracle9i. interMedia Java Classes makes it possible for JDBC result sets to include both traditional relational data and interMedia media objects (OrdAudio, OrdDoc, OrdImage, and OrdVideo). This support enables applications to easily select and operate on a result set that contains interMedia columns plus other relational data. These classes also enable access to interMedia object attributes and invocation of interMedia object methods.

In addition, Oracle interMedia Java classes for servlets and JSPs facilitates the upload and retrieval of multimedia data stored in an Oracle9i database using the interMedia ORDAudio, ORDDoc, ORDImage, and ORDVideo object types. Oracle interMedia Java classes for servlets and JSPs can access data stored in the interMedia objects or BLOBs directly.

On the client tier, the browser-based interMedia Clipboard is provided and uses the webdav-enabled HTTP protocol for communication with the application server (iAS) tier. For thick clients and tools, client-side media processing and media parsing is supported through JAI, and the Java Media Framework (JMF). With Business Components for Java (BC4J), Oracle JDeveloper's programming framework can build scalable, multitier database applications from reusable business components.

1Oracle software is distributed from CD-ROM or OTN -- Oracle Technology Network Web site:http://otn.oracle.com/2interMedia server and client software are available on many other platforms; the platforms shown in this table describe only the ones on which the respective interMedia services and features listed are known to run.3Available on OTN for release 8.1.7.4Available for release 9.0.1 CD-ROM only.5Available for release 9.0.1 CD-ROM only.6Available for release 9.0.1 CD-ROM only.7Available on OTN for release 8.1.7.8Generic geocoding client written in Java, is embedded in Oracle9i database as a JSP, and published using PL/SQL interface.9Requires JMF V2.0, Oracle JDBC 8.1.5 or later. JDK version 1.1.n.10Available on OTN for release 8.1.7.11Available for release 9.0.1 CD-ROM only.

1.13.1 Oracle interMedia Java Classes

Oracle interMedia Java Classes enables Java applications on any tier (client, application server, or database server) to manipulate and modify audio, image, and video data, or heterogeneous media data stored in Oracle9i. interMedia Java Classes makes it possible for JDBC result sets to include both traditional relational data and interMedia media objects. This support enables applications to easily select and operate on a result set that contains sets of interMedia columns plus other relational data. These classes also enable access to object attributes and invocation of object methods. See Oracle interMedia Java Classes User's Guide and Reference for more information.

1.13.2 Oracle interMedia Java Classes for Servlets and JSPs

Oracle interMedia Java Classes for servlets and JSPs facilitates the upload and retrieval of multimedia data stored in an Oracle9i database using the interMedia ORDAudio, ORDDoc, ORDImage, and ORDVideo object types. Oracle interMedia Java Classes for servlets and JSPs accesses data stored in the interMedia object types using Oracle interMedia Java Classes. However, Oracle interMedia Java Classes for servlets and JSPs can also be used to handle upload and retrieval of data using BLOBs directly.

The OrdHttpResponseHandler class facilitates the retrieval of multimedia data from an Oracle9i database and its delivery to a browser or other HTTP client from a Java servlet. The OrdHttpJspResponseHandler class provides the same features for Java Server Pages (JSPs).

Form-based file uploading using HTML forms encodes form data and uploaded files in POST requests using the multipart/form-data format. The OrdHttpUploadFormData class facilitates the processing of such requests by parsing the POST data and making the contents of regular form fields and the contents of uploaded files readily accessible to a Java servlet or Java Server Page. The handling of uploaded files is facilitated by the OrdHttpUploadFile class, which provides an easy-to-use API that applications call to load audio, image, and video data, or heterogeneous media data into a database.

To read the Javadoc documentation that describes how to use interMedia Java Classes for Servlets and JSPs, expand the zip file:

1.13.3 Annotation Services for Multimedia Data

One application for which annotation services can be used is for constructing and operating a media archive. In the sections that follow, Oracle interMedia Annotator and a MediaFinder sample application are described. An annotation utility shows how content and format properties can be extracted from media data, collected as an annotation, stored in the database, and queried to locate media data based on the annotation's content. MediaFinder is a sample application that demonstrates how to build a media library.

interMedia Annotator Utility

Oracle interMedia Annotator is a utility that makes it easy to store and search for rich media content in Oracle9i. Oracle interMedia Annotator utility extracts content and format attributes from media sources (image, audio, and video files, audio CD, and URLs), and organizes the attributes into an XML formatted annotation. It lets you customize annotations to further describe the data, loads the annotation and the media data into Oracle9i, and allows you to index the annotation for powerful full text and thematic media searches using Oracle9i Text. Thus, the database can be queried to locate the media data based on the annotation's content. See Oracle interMedia Annotator User's Guide for more information.

MediaFinder is a sample application that demonstrates how to build a media library by using Oracle interMedia components. The open source code is provided to assist developers in building their own applications.

MediaFinder is an application that uses Oracle interMedia to let you search a video library built using Oracle interMedia Annotator. MediaFinder allows searching by movie title or by keyword, retrieving movie annotation information along with the video clip, and launching QuickTime to play the video. During a keyword search that will result in text sample matches, MediaFinder will locate the point where the match occurred, and allow you to start the playback from that point.

With the Apple QuickTime-For-Java library, interMedia Annotator can extract video frames as well as the text-track samples from the specified QuickTime movie. Consequently, MediaFinder can enrich the result set of your keyword search by retrieving the video frame that is closest to the matching text sample by means of timestamp comparisons.

MediaFinder uses Oracle9i Text to perform a text search against an XML document as well as a plain text string. For more information, refer to the Oracle9i Text information provided on the Oracle Technology Network Web site:

MediaFinder also uses Oracle interMedia ORDImage and ORDVideo objects for the storage of images and video in the Oracle9i database.

MediaFinder has a graphical user interface that allows you to use a Web interface to search a video library for a specific text sample, and retrieve the video frames associated with each text sample.

See "MediaFinder" - a Sample Application That Uses Oracle interMedia Annotator Utility Readme for Installation, Configuration, and Use for more information, which can be found on the Oracle interMedia Utilities and Plugins section of the Oracle Technology Network Web site:

1.13.4 Streaming Content from an Oracle Database

You can stream content stored in an Oracle database using an Oracle interMedia plug-in that supports the streaming server, and deliver this content for play on a client that uses the browser-supported streaming player.

Oracle interMedia Plug-in for RealServer G2 6.0, 7.0, or 8.0

Oracle interMedia Plug-in for RealServer G2 6.0, 7.0, or 8.0 allows RealServer G2 to stream multimedia data to a client directly out of the Oracle9i database. This plug-in is installed in RealServer G2 and defined in the RealServer G2 configuration file. The data is requested with a URL, which contains information necessary to select the multimedia data from the database.

For information on RealNetwork RealServer G2 Streaming Server, see the following URL:

See Oracle interMedia Plug-in for RealNetworks G2 Streaming Server Readme for Installation and Configuration for more information. The Oracle interMedia Plug-in for RealServer G2 can be downloaded from the Oracle interMedia Utilities and Plugins section of the Oracle Technology Network Web site:

1.13.5 Support for Web Technologies

Using interMedia support for Web technologies, you can easily integrate multimedia data into Web and Java applications. You can also store, retrieve, and manage rich media content in an Oracle9i database.

Oracle interMedia Clipboard Features

The interMedia Clipboard (Version 2) enables users to access Oracle interMedia data from the Web. You can configure the Clipboard to enable access in the following ways:

Through the Clipboard Web browser interface

Through the OraDav programming interface

See Setting Up the Oracle interMedia Clipboard, Version 2 for more information.

The Clipboard can be downloaded from the Oracle interMedia Utilities and Plugins section of the Oracle Technology Network Web site:

1.13.6 Geocoding Services

Geocoding represents addresses and locations of interest (postal codes, demographic regions, and so forth) as geometric factors (points). These enable distances to be calculated and sites to be represented graphically in Web, data warehousing, customer information system, and enterprise resource planning applications. Geocoding services can be used to add the exact location (latitude and longitude) of points of interest to existing data files stored in Oracle9i.

A geocoding service is used for converting tables of address data into standardized address, location, and possibly other data.

Oracle9i Locator

Oracle9i Locator is an Internet-ready tool developed exclusively to support standalone and online geocoding and Internet mapping requirements. Geocoded business information provides a necessary step in cleansing, enhancing, and visualizing customer records. Such information is proving vital in data warehousing, customer information systems, electronic commerce, and enterprise resource planning. In addition to geocoding support, Oracle9i Locator provides the technology that enables the deployment of simple, easy-to-use Internet-based mapping applications.

MapInfo Corporation, Qualitative Marketing Software, MapQuest.com, and whereonearth.com currently provide the online and batch geocoding services for the Locator features. Each service offers a number of free geocoding calls at its Web site for trial purposes for online geocoding, and geocoding service software for batch geocoding. Locator users need to consent to the vendor policies and possibly register with them:

During registration for online geocoding services, you are asked to create your own user ID and password. Please make a note of them for embedding into your sample geocoding service because the user ID/password combination is required for each geocoding call. Your free account is limited to a small number of address records per day.

Should you require the ability to geocode larger data sets, or for further information, contact:

These companies' Web sites will also have detailed documentation about the vendor-specific parameter information of the Locator features, such as match code or error code. Because Oracle provides an interface to facilitate the geocoding functions, you should contact the vendors with your questions.

See Oracle9i Locator Release Notes (depending on your operating system, <ORACLE_HOME>/md/doc/README.txt) for additional information about the geocoding services provided by these Oracle partners.

Using simple location queries, Oracle9i Locator allows Web and other applications to retrieve information based on distance. For example, using a set of geocoded address data and simple query-by-text or query-by-map operations, users can use a Web browser-based application, enter a distance, and identify the nearest location from a specific address or reference point on a map. For example, Oracle9i Locator applications can help you locate stores, offices, distribution points, and other points of interest based on their distance from a given postal (zip) code, address, or other reference point.

See the <ORACLE_HOME>/md/doc/LOCATOR_README.txt file or <ORACLE_HOME>/md/doc/LOCATOR_README.htm file for more information.

Oracle9i Locator is Web-based and requests are formatted in HTTP. Thus, each request in SQL must contain the URL of the Web site, proxy for the firewall (if any), and user account information on the service provider's Web site. An HTTP approach potentially limits the utility or practicality of the service when dealing with large tables or undertaking frequent updates to the base address information. In such situations, it is preferable to use a batch geocoding service made available within an Intranet or local area network. The next section describes the interface for a facility that potentially contains this existing Oracle9i Locator HTTP-based solution.

Generic Geocoding Interface

A generic geocoding interface is available with Oracle Spatial for release 8.1.6 and later. This is a generic interface to third-party geocoding software that lets users geocode their address information stored in database tables, standardized addresses, and corresponding location information as instances of predefined object types. This interface is part of the geocoding framework in Oracle Spatial for release 8.1.6 and later and Oracle9i Locator.

This generic geocoding interface describes a set of interfaces and metadata schema that enables geocoding of an entire address table, or a single row. It also describes the procedures for inserting new or updated standardized address and spatial data into another table (or the same table). The third-party geocoding service is assumed to have been installed on a local network and to be accessible through standard communication protocols such as sockets or HTTP.

The generic geocoding client is written in Java and embedded in the Oracle9i database as a Java stored procedure. A fast, scalable, highly available, and secure Java Virtual Machine (Java VM or JVM) is integrated in the Oracle9i database server. The Java VM provides an ideal platform for enterprise applications written in Java as Java stored procedures, Enterprise JavaBeans (EJBs), or Java Methods of Oracle9i object types.

Java stored procedures are published using the PL/SQL interface; thus, the generic geocoding interface can be compatible with existing Locator APIs.

The stored procedures have an interface, oracle.spatial.geocoder, that must be implemented by each vendor whose geocoder is integrated with Oracle Spatial and Oracle9i Locator. The procedures also require certain object types to be defined and metadata tables to be populated. The object types, metadata schema, and geocoder interface are described in <ORACLE_HOME>/md/doc/LOCATOR_README.txt file or <ORACLE_HOME>/md/doc/LOCATOR_README.htm file and Oracle Spatial User's Guide and Reference.