Application developers, who created multimedia applications without using the Oracle interMedia ("interMedia") object types to store and manage media data in relational tables, and who do not want to migrate their existing multimedia applications to use interMedia objects, can use the interMedia relational interface for managing their media data. The interMedia relational interface consists of a set of methods for:
Extracting information directly from their media data as either an XML string or as XML and individual attributes
Processing and copying image data
Loading media data into Oracle Database
Exporting media data from Oracle Database into operating system files
The primary benefit of using the interMedia relational interface is to let application developers take advantage of interMedia functions with only minimal changes to their applications, and all without having to change their schemas to the interMedia objects to store their data.
The Oracle interMedia relational interface consists of a set of static methods (see Static Methods for the Relational Interface) for the interMedia objects: ORDAudio, ORDDoc, ORDImage, and ORDVideo. Because these are static methods, no object is instantiated. Data is passed by method arguments rather than by object attributes.
Methods related to the source of the media have ctx (RAW) as the first argument. Before calling any of these methods for the first time, the client should allocate the ctx structure and initialize it to NULL.
ORDAudio, ORDDoc, and ORDVideo methods related to media parsing have ctx (RAW) as the first argument. Before calling any of these methods for the first time, the client should allocate the ctx structure and initialize it to NULL.
This section presents reference information on the static methods for the relational interface. It is divided into subsections that describe the static methods that are common to all object types, and the static methods that are unique to a particular object type or are implemented differently for the different object types.
Static Methods Unique to the ORDAudio Object Type Relational Interface
Static Methods Unique to the ORDDoc Object Type Relational Interface
Static Methods Unique to the ORDImage Object Type Relational Interface
Static Methods Unique to the ORDVideo Object Type Relational Interface
Within each subsection, the static methods are presented first as they are defined in the SQL source files. Then, each static method is described in alphabetical order within the subsection.
This section presents reference information on the interMedia common static methods used for the relational interface. The common static methods for the ORDAudio, ORDDoc, ORDImage, and ORDVideo relational interfaces are defined as follows in the ordaspec.sql
, orddspec.sql
, ordispec.sql
, and ordvspec.sql
files, respectively.
. . . -- Static Methods for the relational interface STATIC PROCEDURE export(ctx IN OUT RAW, local_data IN BLOB, source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2), -- STATIC PROCEDURE importFrom(ctx IN OUT RAW, local_data IN OUT NOCOPY BLOB, source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2), -- STATIC PROCEDURE importFrom(ctx IN OUT RAW, local_data IN OUT NOCOPY BLOB, source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2, format OUT VARCHAR2, mime_type OUT VARCHAR2), . . .
The examples in this section assume that you have created the test tables as described in Example Audio Table Definition, Example Media Table Definition, Example Image Table Definition, and Example Video Table Definition, respectively for each object type.
export(ctx IN OUT RAW,
local_data IN BLOB,
source_type IN VARCHAR2,
source_location IN VARCHAR2,
source_name IN VARCHAR2);
Copies data from a local source (local_data) within the database to an external data source.
Note: The export( ) method provides native support only when the value of the source_type parameter is FILE. In this case, the data is written to a file within a directory that is accessible to Oracle Database. User-defined sources may support the export( ) method to provide WRITE access to other types of data stores. |
The source plug-in context information.
The BLOB location that is being exported.
The type of the source data that is being exported. This parameter is not case sensitive.
The location to which the source data is to be exported.
The name of the object to where the source data is to be exported.
After calling the export( ) method, you can issue a SQL DELETE statement or call the DBMS_LOB.TRIM procedure to delete the content stored locally, if desired.
The export( ) method for a source type of FILE does not modify data stored in the BLOB.
When the source_type parameter has a value of FILE, the source_location parameter specifies the name of an Oracle directory object, and the source_name parameter specifies the name of the file that will contain the data.
The export( ) method writes only to a database directory object that the user has privilege to access. That is, you can access a directory object that you have created using the SQL CREATE DIRECTORY statement, or one to which you have been granted READ and WRITE access.
For example, the following SQL*Plus commands create a directory object and grant the user, MEDIAUSER, the permission to read and write to any file within the directory /mydir/work:
CONNECT SYS/<password> AS SYSDBA CREATE OR REPLACE DIRECTORY FILE_DIR AS '/mydir/work'; GRANT READ,WRITE ON DIRECTORY FILE_DIR TO MEDIAUSER;
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the export( ) method and the value of the source_type parameter is NULL.
ORDSourceExceptions.IO_ERROR
This exception is raised if the export( ) method encounters an error writing the BLOB data to the file specified.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the export( ) method and this method is not supported by the source plug-in being used.
See Appendix G for more information about these exceptions.
Export data from a local source to an external audio data source:
Note: e:/mydir/work/testaud.dat must be replaced with the file specification of your test file and <system-password> with the system password. |
CONNECT SYSTEM/<system-password>; CREATE OR REPLACE DIRECTORY AUDIODIR AS 'e:/mydir/work'; GRANT READ ON DIRECTORY AUDIODIR TO 'MEDIAUSER'; CONNECT MEDIAUSER/MEDIAUSER; DECLARE audio_data BLOB; ctx RAW(64) :=NULL; BEGIN SELECT aud INTO audio_data FROM taud WHERE N = 1; ORDSYS.ORDAudio.export(ctx,audio_data,'file','AUDIODIR','testaud.dat'); EXCEPTION WHEN OTHERS THEN RAISE; END; /
importFrom(ctx IN OUT RAW,
local_data IN OUT NOCOPY BLOB,
source_type IN VARCHAR2,
source_location IN VARCHAR2,
source_name IN VARCHAR2);
Transfers data from the specified external data source to the source.localData attribute (of the embedded ORDSource object type) within the database.
The source plug-in context information. This should be allocated and initialized to NULL. If you are using a user-defined source plug-in, you should call the openSource( ) method. See the introduction to this chapter for more information.
The BLOB location to receive the data.
The type of the source data.
The location from which the source data is to be imported.
The name of the source data.
You must ensure that the directory indicated by the source_location parameter exists or is created before you use this method for file sources.
None.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the importFrom( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.NULL_SOURCE
This exception is raised if you call the importFrom( ) method and the value of the local_data parameter is NULL or has not been initialized.
See Appendix G for more information about these exceptions.
Import data from the specified external data source into the local source:
Note: <ORACLE_HOME> must be replaced with your Oracle home and <system-password> with the system password. |
CONNECT system/<system-password>; CREATE OR REPLACE DIRECTORY DOCDIR AS 'e:\<ORACLE_HOME>\ord\doc\demo'; GRANT READ ON DIRECTORY DOCDIR TO 'user'; CONNECT MEDIAUSER/MEDIAUSER; DECLARE document_data BLOB; ctx RAW(64) :=NULL; BEGIN SELECT document INTO document_data FROM tdoc WHERE N = 1 FOR UPDATE; ORDSYS.ORDDoc.importFrom(ctx,document_data,'file','DOCDIR','testimg.dat'); UPDATE tdoc SET document = document_data WHERE N = 1; COMMIT; SELECT document INTO document_data FROM tdoc WHERE N = 2 FOR UPDATE; ORDSYS.ORDDoc.importFrom(ctx,document_data,'file','DOCDIR','testaud.dat'); UPDATE tdoc SET document = document_data WHERE N = 2; COMMIT; SELECT document INTO document_data FROM tdoc WHERE N = 3 FOR UPDATE; ORDSYS.ORDDoc.importFrom(ctx,document_data,'file','DOCDIR','testvid.dat'); UPDATE tdoc SET document = document_data WHERE N = 3; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
importFrom(ctx IN OUT RAW,
local_data IN OUT NOCOPY BLOB,
source_type IN VARCHAR2,
source_location IN VARCHAR2,
source_name IN VARCHAR2,
format OUT VARCHAR2,
mime_type OUT VARCHAR2);
Transfers data from the specified external data source to the source.localData attribute (of the embedded ORDSource object type) within the database.
The source plug-in context information.
The BLOB location to receive the data.
The type of the source data.
The location from which the source data is to be imported.
The name of the source data.
The format of the data. The value is returned if it is available (from HTTP sources).
The MIME type of the data. The value is returned if it is available (from HTTP sources).
You must ensure that the directory indicated by the source_location parameter exists or is created before you use this method for file sources.
None.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the importFrom( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.NULL_SOURCE
This exception is raised if you call the importFrom( ) method and the value of the local_data parameter is NULL or has not been initialized.
See Appendix G for more information about these exceptions.
Import image data from the specified external data source into the local source:
Note: <ORACLE_HOME> must be replaced with your Oracle home and <system-password> with the system password. |
CONNECT system/<system-password>; CREATE OR REPLACE DIRECTORY IMAGEDIR AS 'e:\<ORACLE_HOME>\ord\img\demo'; GRANT READ ON DIRECTORY IMAGEDIR TO 'user'; DECLARE image_data BLOB; ctx RAW(64) :=NULL; img_format VARCHAR2(32) := NULL; img_mime_type VARCHAR2(80); BEGIN SELECT img INTO image_data FROM timg WHERE N = 1 FOR UPDATE; ORDSYS.ORDImage.importFrom(ctx,image_data,'file','IMAGEDIR','testimg.dat',img_format,img_mime_type); UPDATE timg SET img = image_data WHERE N = 1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
This section presents reference information on the interMedia static methods unique to the ORDAudio relational interface.
The relational interface adds interMedia support to audio data stored in BLOBs and BFILEs rather than in the ORDAudio object type. The static methods unique to the ORDAudio relational interface are defined as follows in the ordaspec.sql
file:
. . . -- Static Methods for the relational interface STATIC PROCEDURE getProperties(ctx IN OUT RAW, audioBlob IN BLOB, attributes IN OUT NOCOPY CLOB, format IN VARCHAR2), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, audioBlob IN BLOB, attributes IN OUT NOCOPY CLOB, mimeType OUT VARCHAR2, format IN OUT VARCHAR2, encoding OUT VARCHAR2, numberOfChannels OUT INTEGER, samplingRate OUT INTEGER, sampleSize OUT INTEGER, compressionType OUT VARCHAR2, audioDuration OUT INTEGER), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, audioBfile IN OUT NOCOPY BFILE, attributes IN OUT NOCOPY CLOB, format IN VARCHAR2), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, audioBfile IN OUT NOCOPY BFILE, attributes IN OUT NOCOPY CLOB, mimeType OUT VARCHAR2, format IN OUT VARCHAR2, encoding OUT VARCHAR2, numberOfChannels OUT INTEGER, samplingRate OUT INTEGER, sampleSize OUT INTEGER, compressionType OUT VARCHAR2, audioDuration OUT INTEGER), . . .
Example Audio Table Definition
The methods described in this section show examples based on a test audio table TAUD. Refer to the TAUD table definition that follows when reading through the examples:
TAUD Table Definition
CREATE TABLE taud(n NUMBER, aud BLOB, attributes CLOB, mimetype VARCHAR2(4000), format VARCHAR2(31), encoding VARCHAR2(256), numberofchannels INTEGER, samplingrate INTEGER, samplesize INTEGER, compressiontype VARCHAR2(4000), audioduration INTEGER) STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0); INSERT INTO taud VALUES(1,EMPTY_BLOB(),EMPTY_CLOB(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO taud VALUES(2,EMPTY_BLOB(),EMPTY_CLOB(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); COMMIT;
getProperties(ctx IN OUT RAW,
audioBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB,
format IN VARCHAR2);
Reads the audio BFILE data to get the values of the media attributes for supported formats, and then stores them in the input CLOB. This method populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The audio data represented as a BFILE.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the audio BFILE data in XML form.
The format of the audio data. If a non-NULL value is specified for this parameter, then the format plug-in for this format type is invoked.
None.
None.
ORDAudioExceptions.AUDIO_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the audio plug-in raises an exception.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
See Appendix G for more information about these exceptions.
Get the property information for known audio attributes:
DECLARE aud_attrib CLOB; ctx RAW(64) :=NULL; aud_data BFILE := BFILENAME('AUDIODIR','testaud.dat'); aud_format VARCHAR2(160) := NULL; BEGIN DBMS_LOB.CREATETEMPORARY(aud_attrib, FALSE, DBMS_LOB.CALL); ORDSYS.ORDAudio.getProperties(ctx, aud_data, aud_attrib, aud_format); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(aud_attrib))); EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
audioBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB,
mimeType OUT VARCHAR2,
format IN OUT VARCHAR2
encoding OUT VARCHAR2,
numberOfChannels OUT INTEGER,
samplingRate OUT INTEGER,
sampleSize OUT INTEGER,
compressionType OUT VARCHAR2,
audioDuration OUT INTEGER);
Reads the audio BFILE data to get the values of the media attributes for supported formats, and then stores them in the input CLOB and returns them as explicit parameters. This method gets the properties for the following attributes of the audio data: duration, MIME type, compression type, format, encoding type, number of channels, sampling rate, and sample size. It populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The audio data represented as a BFILE.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the audio BFILE data in XML form.
The MIME type of the audio data.
The format of the audio data. If a non-NULL value is specified, then the format plug-in for this format type is invoked. If not specified, the default plug-in is used and the derived format value is returned.
The encoding type of the audio data.
The number of channels in the audio data.
The sampling rate in samples per second at which the audio data was recorded.
The sample width or number of samples of audio in the data.
The compression type of the audio data.
The total time required to play the audio data.
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
None.
ORDAudioExceptions.AUDIO_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the audio plug-in raises an exception.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
See Appendix G for more information about these exceptions.
Get the property information for known audio attributes:
DECLARE aud_attrib CLOB; ctx RAW(64) :=NULL; data BFILE := BFILENAME('AUDIODIR','testaud.dat'); mimeType VARCHAR2(80); format VARCHAR2(32) := NULL; encoding VARCHAR2(160); numberOfChannels NUMBER; samplingRate NUMBER; sampleSize NUMBER; compressionType VARCHAR2(160); audioDuration NUMBER; BEGIN DBMS_LOB.CREATETEMPORARY(aud_attrib, FALSE, DBMS_LOB.CALL); ORDSYS.ORDAudio.getProperties(ctx, data, aud_attrib, mimeType, format, encoding, numberOfChannels, samplingRate, sampleSize, compressionType, audioDuration); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(aud_attrib))); DBMS_OUTPUT.put_line('mimeType: ' || mimeType ); DBMS_OUTPUT.put_line('format: ' || format ); DBMS_OUTPUT.put_line('encoding: ' || encoding ); DBMS_OUTPUT.put_line('numberOfChannels: ' || numberOfChannels ); DBMS_OUTPUT.put_line('samplingRate: ' || samplingRate ); DBMS_OUTPUT.put_line('sampleSize: ' || sampleSize ); DBMS_OUTPUT.put_line('compressionType: ' || compressionType ); DBMS_OUTPUT.put_line('audioDuration: ' || audioDuration ); EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
audioBlob IN BLOB,
attributes IN OUT NOCOPY CLOB,
format IN VARCHAR2);
Reads the audio BLOB data to get the values of the media attributes for supported formats, and then stores them in the input CLOB. This method populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The audio data represented as a BLOB.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the audio BLOB data in XML form.
The format of the audio data. If a non-NULL value is specified for this parameter, then the format plug-in for this format type is invoked; otherwise, the default plug-in is used.
None.
None.
ORDAudioExceptions.AUDIO_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the audio plug-in raises an exception.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
See Appendix G for more information about these exceptions.
Get the property information for known audio attributes:
DECLARE aud_attrib CLOB; ctx RAW(64) :=NULL; aud_data BLOB; aud_format VARCHAR2(160) := NULL; BEGIN SELECT aud, attributes INTO aud_data, aud_attrib FROM taud WHERE N =1 FOR UPDATE; ORDSYS.ORDAudio.getProperties(ctx,aud_data,aud_attrib,aud_format); DBMS_OUTPUT.put_line('Size of XML Annotations: ' || TO_CHAR(DBMS_LOB.GETLENGTH(aud_attrib))); UPDATE taud SET attributes=aud_attrib WHERE N=1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
audioBlob IN BLOB,
attributes IN OUT NOCOPY CLOB,
mimeType OUT VARCHAR2,
format IN OUT VARCHAR2
encoding OUT VARCHAR2,
numberOfChannels OUT INTEGER,
samplingRate OUT INTEGER,
sampleSize OUT INTEGER,
compressionType OUT VARCHAR2,
audioDuration OUT INTEGER);
Reads the audio BLOB data to get the values of the media attributes for supported formats, and then stores them in the input CLOB and returns them as explicit parameters. This method gets the properties for the following attributes of the audio data: duration, MIME type, compression type, format, encoding type, number of channels, sampling rate, and sample size. It populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The audio data represented as a BLOB.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the audio BLOB data in XML form.
The MIME type of the audio data.
The format of the audio data. If a non-NULL value is specified, then the format plug-in for this format type is invoked. If not specified, the derived format value is returned.
The encoding type of the audio data.
The number of channels in the audio data.
The sampling rate in samples per second at which the audio data was recorded.
The sample width or number of samples of audio in the data.
The compression type of the audio data.
The total time required to play the audio data.
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
None.
ORDAudioExceptions.AUDIO_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the audio plug-in raises an exception.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
See Appendix G for more information about these exceptions.
Get the property information for known audio attributes:
DECLARE aud_attrib CLOB; ctx RAW(64) := NULL; aud_data BLOB; mimeType VARCHAR2(80); format VARCHAR2(32) := NULL; encoding VARCHAR2(160); numberOfChannels NUMBER; samplingRate NUMBER; sampleSize NUMBER; compressionType VARCHAR2(160); audioDuration NUMBER; BEGIN SELECT aud, attributes, mimetype, format, encoding, numberofchannels, samplingrate, samplesize, compressiontype, audioduration INTO aud_data, aud_attrib, mimeType, format, encoding, numberOfChannels, samplingRate, sampleSize, compressionType, audioDuration FROM taud WHERE N = 1 FOR UPDATE; ORDSYS.ORDAudio.getProperties(ctx, aud_data, aud_attrib, mimeType, format, encoding, numberOfChannels, samplingRate, sampleSize, compressionType, audioDuration); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(aud_attrib))); DBMS_OUTPUT.put_line('mimeType: ' || mimeType ); DBMS_OUTPUT.put_line('format: ' || format ); DBMS_OUTPUT.put_line('encoding: ' || encoding ); DBMS_OUTPUT.put_line('numberOfChannels: ' || numberOfChannels ); DBMS_OUTPUT.put_line('samplingRate: ' || samplingRate ); DBMS_OUTPUT.put_line('sampleSize: ' || sampleSize ); DBMS_OUTPUT.put_line('compressionType: ' || compressionType ); DBMS_OUTPUT.put_line('audioDuration: ' || audioDuration ); UPDATE taud SET aud=aud_data, attributes=aud_attrib, mimetype=mimeType, format=format, encoding=encoding, numberofchannels=numberOfChannels, samplingrate=samplingRate, samplesize=sampleSize, compressiontype=compressionType, audioduration=audioDuration WHERE n=1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
This section presents reference information on the interMedia static methods unique to the ORDDoc relational interface.
The relational interface adds interMedia support to audio, image, video, and other heterogeneous media data stored in BLOBs and BFILEs rather than in the ORDDoc object type. The static methods unique to the ORDDoc relational interface are defined as follows in the orddspec.sql
file:
. . . -- Static Methods for the relational interface STATIC PROCEDURE getProperties(ctx IN OUT RAW, docBlob IN BLOB, attributes IN OUT NOCOPY CLOB, format IN VARCHAR2), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, docBlob IN BLOB, attributes IN OUT NOCOPY CLOB, mimeType OUT VARCHAR2, format IN OUT VARCHAR2, contentLength OUT INTEGER), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, docBfile IN OUT NOCOPY BFILE, attributes IN OUT NOCOPY CLOB, format IN VARCHAR2), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, docBfile IN OUT NOCOPY BFILE, attributes IN OUT NOCOPY CLOB, mimeType OUT VARCHAR2, format IN OUT VARCHAR2, contentLength OUT INTEGER), . . .
Example Media Table Definition
The methods described in this section show examples based on a test document table TDOC. Refer to the TDOC table definition that follows when reading through the examples:
TDOC Table Definition
CREATE TABLE tdoc(n NUMBER, document BLOB, attributes CLOB, mimetype VARCHAR2(80), format VARCHAR2(80), contentlength INTEGER) STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0); INSERT INTO tdoc VALUES(1, EMPTY_BLOB(), EMPTY_CLOB(), NULL, NULL, NULL); INSERT INTO tdoc VALUES(2, EMPTY_BLOB(), EMPTY_CLOB(), NULL, NULL, NULL); INSERT INTO tdoc VALUES(3, EMPTY_BLOB(), EMPTY_CLOB(), NULL, NULL, NULL); INSERT INTO tdoc VALUES(4, EMPTY_BLOB(), EMPTY_CLOB(), NULL, NULL, NULL); COMMIT;
getProperties(ctx IN OUT RAW,
docBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB,
format IN VARCHAR2);
Reads the document BFILE data to get the values of the media attributes, and then stores them in the input CLOB. It populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The document data represented as a BFILE.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the document BFILE data in XML form.
The format of the document data. If a non-NULL value is specified, then the format plug-in for this format type is invoked.
None.
None.
ORDDocExceptions.DOC_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the document plug-in raises an exception.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
See Appendix G for more information about these exceptions.
Get the property information for known document attributes:
DECLARE doc_attrib CLOB; ctx RAW(64) :=NULL; doc_data BFILE := BFILENAME('DOCDIR','testvid.dat'); doc_format VARCHAR2(160) := NULL; BEGIN DBMS_LOB.CREATETEMPORARY(doc_attrib, FALSE, DBMS_LOB.CALL); ORDSYS.ORDDoc.getProperties(ctx, doc_data, doc_attrib, doc_format); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(doc_attrib))); EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
docBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB,
mimeType OUT VARCHAR2,
format IN OUT VARCHAR2,
contentLength OUT INTEGER);
Reads the document BFILE data to get the values of the media attributes for supported formats, and then stores them in the input CLOB and returns them as explicit parameters. This method gets the properties for the following attributes of the document data: MIME type, content length, and format. It populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The document data represented as a BFILE.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the document BFILE data in XML form.
The MIME type of the document data.
The format of the document data. If a non-NULL value is specified, then the format plug-in for this format type is invoked. If not specified, the derived format is returned.
The length of the content, in bytes.
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
None.
ORDDocExceptions.DOC_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the document plug-in raises an exception.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
See Appendix G for more information about these exceptions.
Get the property information for known document attributes:
DECLARE doc_attrib CLOB; ctx RAW(64) :=NULL; doc_data BFILE := BFILENAME('DOCDIR','testimg.dat'); doc_mimeType VARCHAR2(80); doc_format VARCHAR2(32) := NULL; doc_contentLength NUMBER; BEGIN DBMS_LOB.CREATETEMPORARY(doc_attrib, FALSE, DBMS_LOB.CALL); ORDSYS.ORDDoc.getProperties(ctx, doc_data, doc_attrib, doc_mimeType, doc_format, doc_contentLength); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(doc_attrib))); DBMS_OUTPUT.put_line('mimeType: ' || doc_mimeType ); DBMS_OUTPUT.put_line('format: ' || doc_format ); DBMS_OUTPUT.put_line('contentLength: ' || doc_contentLength ); EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
docBlob IN BLOB,
attributes IN OUT NOCOPY CLOB,
format IN VARCHAR2);
Reads the document BLOB data to get the values of the media attributes, and then stores them in the input CLOB. This method populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The document data represented as a BLOB.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the document BLOB data in XML form.
The format of the document data. If a non-NULL value is specified, then the format plug-in for this format type is invoked.
None.
None.
ORDDocExceptions.DOC_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the document plug-in raises an exception.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
See Appendix G for more information about these exceptions.
Get the property information for known document attributes:
DECLARE doc_attrib CLOB; ctx RAW(64) :=NULL; doc_data BLOB; doc_format VARCHAR2(160) := NULL; BEGIN SELECT document,attributes INTO doc_data,doc_attrib FROM tdoc WHERE N = 1 FOR UPDATE; ORDSYS.ORDDoc.getProperties(ctx, doc_data, doc_attrib, doc_format); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(doc_attrib))); UPDATE tdoc SET document=doc_data, attributes=doc_attrib WHERE N=1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
docBlob IN BLOB,
attributes IN OUT NOCOPY CLOB,
mimeType OUT VARCHAR2,
format IN OUT VARCHAR2,
contentLength OUT INTEGER);
Reads the document BLOB data to get the values of the media attributes, and then stores them in the input CLOB and returns them as explicit parameters. This method gets the properties for the following attributes of the document data: MIME type, content length, and format. It populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The document data represented as a BLOB.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the document BLOB data in XML form.
The MIME type of the document data.
The format of the document data. If a non-NULL value is specified, then the format plug-in for this format type is invoked.
The length of the content, in bytes.
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
None.
ORDDocExceptions.DOC_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the document plug-in raises an exception.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
See Appendix G for more information about these exceptions.
Get the property information for known document attributes:
DECLARE doc_attrib CLOB; ctx RAW(64) :=NULL; doc_data BLOB; doc_mimeType VARCHAR2(80); doc_format VARCHAR2(32):=NULL; doc_contentLength NUMBER; BEGIN SELECT document, attributes, mimetype, format, contentlength INTO doc_data, doc_attrib, doc_mimeType, doc_format, doc_contentLength FROM tdoc WHERE N = 1 FOR UPDATE; ORDSYS.ORDDoc.getProperties(ctx, doc_data, doc_attrib, doc_mimeType, doc_format, doc_contentLength); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(doc_attrib))); DBMS_OUTPUT.put_line('mimeType: ' || doc_mimeType ); DBMS_OUTPUT.put_line('format: ' || doc_format ); DBMS_OUTPUT.put_line('contentLength: ' || doc_contentLength ); UPDATE tdoc SET document=doc_data, attributes=doc_attrib, mimetype=doc_mimeType, format=doc_format, contentlength=doc_contentLength WHERE N=1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
This section presents reference information on the interMedia static methods unique to the ORDImage relational interface.
The relational interface adds interMedia support to image data stored in BLOBs and BFILEs rather than in the ORDImage object type. The static methods unique to the ORDImage relational interface are defined as follows in the ordispec.sql
file:
. . . -- Static Methods for the relational interface STATIC PROCEDURE getProperties(imageBlob IN BLOB, attributes IN OUT NOCOPY CLOB, mimeType OUT VARCHAR2, width OUT INTEGER, height OUT INTEGER, fileFormat OUT VARCHAR2, contentFormat OUT VARCHAR2, compressionFormat OUT VARCHAR2, contentLength OUT INTEGER), -- STATIC PROCEDURE getProperties(imageBlob IN BLOB, attributes IN OUT NOCOPY CLOB), -- STATIC PROCEDURE getProperties(imageBfile IN OUT NOCOPY BFILE, attributes IN OUT NOCOPY CLOB, mimeType OUT VARCHAR2, width OUT INTEGER, height OUT INTEGER, fileFormat IN OUT VARCHAR2, contentFormat OUT VARCHAR2, compressionFormat OUT VARCHAR2, contentLength OUT INTEGER), -- STATIC PROCEDURE getProperties(imageBfile IN OUT NOCOPY BFILE, attributes IN OUT NOCOPY CLOB), -- STATIC FUNCTION getMetadata(imageBlob IN BLOB, metadataType IN VARCHAR2 DEFAULT 'ALL') RETURN SYS.XMLSEQUENCETYPE, -- STATIC FUNCTION getMetadata(imageBfile IN BFILE, metadataType IN VARCHAR2 DEFAULT 'ALL') RETURN SYS.XMLSEQUENCETYPE, -- STATIC PROCEDURE putMetadata(imageBlob IN BLOB, dest IN OUT NOCOPY BLOB, xmlData IN SYS.XMLType, metadataType IN VARCHAR2 DEFAULT 'XMP', encoding IN VARCHAR2 DEFAULT 'UTF-8'), -- STATIC PROCEDURE putMetadata(imageBfile IN BFILE, dest IN OUT NOCOPY BLOB, xmlData IN SYS.XMLType, metadataType IN VARCHAR2 DEFAULT 'XMP', encoding IN VARCHAR2 DEFAULT 'UTF-8'), -- STATIC PROCEDURE process(imageBlob IN OUT NOCOPY BLOB, command IN VARCHAR2), -- STATIC PROCEDURE processCopy(imageBlob IN BLOB, command IN VARCHAR2, dest IN OUT NOCOPY BLOB), -- STATIC PROCEDURE processCopy(imageBfile IN OUT BFILE, command IN VARCHAR2, dest IN OUT NOCOPY BLOB), -- STATIC PROCEDURE process(imageBlob IN OUT NOCOPY BLOB, command IN VARCHAR2, width IN INTEGER, height IN INTEGER, fileFormat IN VARCHAR2, contentFormat IN VARCHAR2, compressionFormat IN VARCHAR2), -- STATIC PROCEDURE processCopy(imageBlob IN BLOB, command IN VARCHAR2, dest IN OUT NOCOPY BLOB, width IN INTEGER, height IN INTEGER, fileFormat IN VARCHAR2, contentFormat IN VARCHAR2, compressionFormat IN VARCHAR2), -- STATIC PROCEDURE processCopy(imageBfile IN OUT NOCOPY BFILE, command IN VARCHAR2, dest IN OUT NOCOPY BLOB, width IN INTEGER, height IN INTEGER, fileFormat IN VARCHAR2, contentFormat IN VARCHAR2, compressionFormat IN VARCHAR2), -- STATIC FUNCTION getDicomMetadata(imageBlob IN BLOB, optionString IN VARCHAR2) RETURN XMLType, -- STATIC FUNCTION getDicomMetadata(imageBfile IN BFILE, optionString IN VARCHAR2) RETURN XMLType . . .
Example Image Table Definition
The methods described in this section show examples based on a test image table TIMG. Refer to the TIMG table definition that follows when reading through the examples:
TIMG Table Definition
CREATE TABLE timg(n NUMBER, img BLOB, attributes CLOB, mimetype VARCHAR2(4000), width INTEGER, height INTEGER, fileformat VARCHAR2(4000), contentformat VARCHAR2(4000), compressionformat VARCHAR2(4000), contentlength INTEGER) STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0); INSERT INTO timg VALUES(1, EMPTY_BLOB(), EMPTY_CLOB(), NULL, NULL, NULL, NULL, NULL, NULL, NULL); INSERT INTO timg VALUES(2, EMPTY_BLOB(), EMPTY_CLOB(), NULL, NULL, NULL, NULL, NULL, NULL, NULL); COMMIT;
getDicomMetadata(imageBfile IN BFILE,
optionString IN VARCHAR2)
RETURN XMLType;
Returns an XML representation of the metadata extracted from the DICOM image stored in the BFILE. See Appendix F for information about the XML schema for DICOM.
The DICOM image data represented as a BFILE.
A string that specifies the type of DICOM metadata to extract. For this release, the only valid value is imageGeneral
. All other values are ignored.
The DICOM standard defines many sets of rules for encoding a DICOM object in a binary stream. See Appendix I for information about the DICOM encoding rules supported by interMedia.
See Oracle interMedia User's Guide for more information about the DICOM feature.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the image is NULL.
See Appendix G for more information about this exception.
DECLARE local_imageBFile BFILE; dicom_metadata XMLType := NULL; BEGIN SELECT imageBFile INTO local_imageBFile FROM medicalImageFilesTable WHERE id = 1; dicom_metadata := ORDSYS.ORDImage.getDicomMetadata(local_imageBfile,'imageGeneral'); IF (dicom_metadata is NULL) THEN DBMS_OUTPUT.PUT_LINE('dicom metadata is NULL'); END IF; -- print the value of the one of the elements in extracted -- dicom metadata DBMS_OUTPUT.PUT_LINE('namespace: ' || dicom_metadata.getNamespace() ); EXCEPTION WHEN ORDSYS.ORDImageExceptions.NULL_CONTENT THEN DBMS_OUTPUT.PUT_LINE('imageBfile is null '); WHEN OTHERS THEN RAISE; END;/
getDicomMetadata(imageBlob IN BLOB,
optionString IN VARCHAR2)
RETURN XMLType;
Returns an XML representation of the metadata extracted from the DICOM image stored in the BLOB. See Appendix F for information about the XML schema for DICOM.
The DICOM image data represented as a BLOB.
A string that specifies the type of DICOM metadata to extract. For this release, the only valid value is imageGeneral
. All other values are ignored.
The DICOM standard defines many sets of rules for encoding aDICOM object in a binary stream. See Appendix I for information about the DICOM encoding rules supported by interMedia.
See Oracle interMedia User's Guide for more information about the DICOM feature.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the image is NULL.
See Appendix G for more information about this exception.
DECLARE local_imageBlob BLOB; dicom_metadata XMLType := NULL; BEGIN SELECT imageBlob INTO local_imageBlob FROM medicalImageBlobsTable WHERE id = 1; dicom_metadata := ORDSYS.ORDImage.getDicomMetadata(local_imageBlob,'imageGeneral'); IF (dicom_metadata is NULL) THEN DBMS_OUTPUT.PUT_LINE('dicom metadata is NULL'); END IF; -- print the value of the one of the elements in extracted -- dicom metadata DBMS_OUTPUT.PUT_LINE('namespace: ' || dicom_metadata.getNamespace() ); EXCEPTION WHEN ORDSYS.ORDImageExceptions.NULL_CONTENT THEN DBMS_OUTPUT.PUT_LINE('imageBlob is null '); WHEN OTHERS THEN RAISE; END;/
getMetadata(imageBfile IN NOCOPY BFILE,
metadataType IN VARCHAR2 DEFAULT 'ALL'
RETURN XMLSequenceType;
Extracts the specified types of metadata from the imageBfile and returns an array of schema valid XML documents. If no matching metadata is found, an empty array is returned.
The image data represented as a BFILE.
A string that identifies the types of embedded metadata to extract. Valid values are ALL, ORDIMAGE, XMP, EXIF, and IPTC-IIM. The default value is ALL.
When the value of input parameter metadataType is ALL, and more than one type of supported metadata is present in the image, this method returns several XML documents, one for each type of metadata found. For other values of the input parameter, the method returns zero or one XML document.
Each document is stored as an instance of XMLType, and is based on one of the metadata schemas. The method XMLType.getNamespace( ) can be used to determine the type of metadata represented in that document.
See Appendix F for a description of the supported metadata schemas.
See Oracle interMedia User's Guide for more information about the Metadata feature.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBfile parameter is NULL.
See Appendix G for more information about this exception.
DECLARE imageBfile BFILE := BFILENAME('MEDIA_DIR','keyboard.jpg'); metav XMLSequenceType; BEGIN metav := ORDSYS.ORDImage.getMetadata(imageBfile, 'ALL'); -- print the namespace of each metadata document FOR i in 1..metav.count LOOP DBMS_OUTPUT.PUT_LINE('namespace: ' || metav(i).getNamespace() ); END LOOP; EXCEPTION WHEN ORDSYS.ORDImageExceptions.NULL_CONTENT THEN DBMS_OUTPUT.PUT_LINE('imageBlob is null'); WHEN OTHERS THEN RAISE; END; /
getMetadata(imageBlob IN NOCOPY BLOB,
metadataType IN VARCHAR2 DEFAULT 'ALL')
RETURN XMLSequenceType;
Extracts the specified types of metadata from the imageBlob and returns an array of schema valid XML documents. If no matching metadata is found, an empty array is returned.
The image data represented as a BLOB.
A string that identifies the types of embedded metadata to extract. Valid values are ALL, ORDIMAGE, XMP, EXIF, and IPTC-IIM. The default value is ALL.
When the value of input parameter metadataType is ALL, and more than one type of supported metadata is present in the image, this method returns several XML documents, one for each type of metadata found. For other values of the input parameter, the method returns zero or one XML document.
Each document is stored as an instance of XMLType, and is based on one of the metadata schemas. The method XMLType.getNamespace( ) can be used to determine the type of metadata represented in that document.
See Appendix F for a description of the supported metadata schemas.
See Oracle interMedia User's Guide for more information about the Metadata feature.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBlob parameter is NULL.
See Appendix G for more information about this exception.
DECLARE imageBlob BLOB; metav XMLSequenceType; BEGIN SELECT ad_photo INTO imageBlob FROM pm.print_media WHERE product_id = 3106; metav := ORDSYS.ORDImage.getMetadata(imageBlob, 'ALL'); -- print the namespace of each metadata document FOR i in 1..metav.count LOOP DBMS_OUTPUT.PUT_LINE('namespace: ' || metav(i).getNamespace() ); END LOOP; EXCEPTION WHEN ORDSYS.ORDImageExceptions.NULL_CONTENT THEN DBMS_OUTPUT.PUT_LINE('imageBlob is null'); WHEN OTHERS THEN RAISE; END; /
getProperties(imageBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB);
Reads the image BFILE data to get the values of the media attributes for supported formats, and then stores them in the input CLOB. This method populates the CLOB with a set of format properties in XML form.
The image data represented as a BFILE.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with a set of format properties of the image BFILE data in XML form.
None.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBfile parameter is NULL.
See Appendix G for more information about this exception.
Get the property information for known image attributes:
DECLARE img_attrib CLOB; data BFILE := BFILENAME('IMAGEDIR','testimg.dat'); BEGIN DBMS_LOB.CREATETEMPORARY(img_attrib, FALSE, DBMS_LOB.CALL); ORDSYS.ORDImage.getProperties(data, img_attrib); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(img_attrib))); EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(imageBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB,
mimeType OUT VARCHAR2,
width OUT INTEGER,
height OUT INTEGER,
fileFormat OUT VARCHAR2,
contentFormat OUT VARCHAR2,
compressionFormat OUT VARCHAR2,
contentLength OUT INTEGER);
Reads the image BFILE data to get the values of the media attributes for supported formats, and then stores them in the input CLOB and returns them as explicit parameters. This method gets the properties for the following attributes of the image data: MIME type, width, height, file format, content format, compression format, and content length. It populates the CLOB with a set of format properties in XML form.
The image data represented as a BFILE.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with a set of format properties of the image BFILE data in XML form.
The MIME type of the image data.
The width of the image in pixels.
The height of the image in pixels.
The format of the image data.
The type of image (monochrome, and so forth).
The compression algorithm used on the image data.
The size of the image file on disk, in bytes.
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBfile parameter is NULL.
See Appendix G for more information about this exception.
Get the property information for known image attributes:
DECLARE img_data BFILE := BFILENAME('IMAGEDIR','testimg.dat'); img_attrib CLOB; mimeType VARCHAR2(80); width NUMBER; height NUMBER; fileFormat VARCHAR2(32); contentFormat VARCHAR2(4000); compressionFormat VARCHAR2(4000); contentLength NUMBER; BEGIN DBMS_LOB.CREATETEMPORARY(img_attrib, FALSE, DBMS_LOB.CALL); ORDSYS.ORDImage.getProperties(img_data, img_attrib, mimeType, width, height, fileFormat, contentFormat, compressionFormat, contentLength); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(img_attrib))); DBMS_OUTPUT.put_line('mimeType: ' || mimeType ); DBMS_OUTPUT.put_line('width: ' || width ); DBMS_OUTPUT.put_line('height: ' || height ); DBMS_OUTPUT.put_line('fileFormat: ' || fileFormat ); DBMS_OUTPUT.put_line('contentFormat: ' || contentFormat ); DBMS_OUTPUT.put_line('compressionFormat: ' || compressionFormat ); DBMS_OUTPUT.put_line('contentLength: ' || contentLength ); EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(imageBlob IN BLOB,
attributes IN OUT NOCOPY CLOB);
Reads the image BLOB data to get the values of the media attributes for supported formats, and then stores them in the input CLOB. This method populates the CLOB with a set of format properties in XML form.
The image data represented as a BLOB.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with a set of format properties of the image BLOB data in XML form.
None.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBlob parameter is NULL.
See Appendix G for more information about this exception.
Get the property information for known image attributes:
DECLARE img_attrib CLOB; img_data BLOB; BEGIN SELECT img, attributes INTO img_data, img_attrib FROM timg WHERE N = 1 FOR UPDATE; ORDSYS.ORDImage.getProperties(img_data, img_attrib); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(img_attrib))); UPDATE timg SET img=img_data, attributes=img_attrib WHERE N=1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(imageBlob IN BLOB,
attributes IN OUT NOCOPY CLOB,
mimeType OUT VARCHAR2,
width OUT INTEGER,
height OUT INTEGER,
fileFormat OUT VARCHAR2,
contentFormat OUT VARCHAR2,
compressionFormat OUT VARCHAR2,
contentLength OUT INTEGER);
Reads the image BLOB data to get the values of the media attributes for supported formats, and then stores them in the input CLOB and returns them as explicit parameters. This method gets the properties for the following attributes of the image data: MIME type, width, height, file format, content format, compression format, and content length. It populates the CLOB with a set of format properties in XML form.
The image data represented as a BLOB.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with a set of format properties of the image BLOB data in XML form.
The MIME type of the image data.
The width of the image in pixels.
The height of the image in pixels.
The format of the image data.
The type of image (monochrome, and so forth).
The compression algorithm used on the image data.
The size of the image file on disk, in bytes.
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBlob parameter is NULL.
See Appendix G for more information about this exception.
Get the property information for known image attributes:
DECLARE img_data BLOB; img_attrib CLOB; mimeType VARCHAR2(4000); width NUMBER; height NUMBER; fileFormat VARCHAR2(32); contentFormat VARCHAR2(4000); compressionFormat VARCHAR2(4000); contentLength NUMBER; BEGIN SELECT img, attributes, mimetype, width, height, fileformat, contentformat, compressionformat, contentlength INTO img_data, img_attrib, mimeType, width, height, fileFormat, contentFormat, compressionFormat, contentLength FROM timg WHERE N = 1 FOR UPDATE; ORDSYS.ORDImage.getProperties(img_data, img_attrib, mimeType, width, height, fileFormat, contentFormat, compressionFormat, contentLength); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(img_attrib))); DBMS_OUTPUT.put_line('mimeType: ' || mimeType ); DBMS_OUTPUT.put_line('width: ' || width ); DBMS_OUTPUT.put_line('height: ' || height ); DBMS_OUTPUT.put_line('fileFormat: ' || fileFormat ); DBMS_OUTPUT.put_line('contentFormat: ' || contentFormat ); DBMS_OUTPUT.put_line('compressionFormat: ' || compressionFormat ); DBMS_OUTPUT.put_line('contentLength: ' || contentLength ); UPDATE timg SET img=img_data, attributes=img_attrib, mimetype=mimeType, width=width, height=height, fileformat=fileFormat, contentformat=contentFormat, compressionformat=compressionFormat, contentlength=contentLength WHERE N=1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
process(imageBlob IN OUT NOCOPY BLOB,
command IN VARCHAR2);
Performs one or more image processing operations on a BLOB, writing the image back onto itself.
The image data represented as a BLOB.
A list of image processing operations to perform on the image.
You can change one or more of the image attributes shown in Table 5-1. Table 5-2 shows additional changes that can be made only to raw pixel and foreign images.
See Appendix D for more information about process( ) operators.
The process( ) method changes image attributes, therefore if you are storing image attributes, you should call the getProperties( ) method after calling the process( ) method.
None.
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised if you call the process( ) method and the imageBlob parameter is not initialized.
See Appendix G for more information about this exception.
Example 1: Change the image in the image_data BLOB to use higher quality JPEG compression and double the length of the image along the X-axis:
ORDSYS.ORDImage.process( image_data,'compressionFormat=JPEG,compressionQuality=MAXCOMPRATIO, xScale="2.0"');
Note that changing the length on only one axis (for example, xScale=2.0) does not affect the length on the other axis, and would result in image distortion. Also, only the xScale and yScale parameters can be combined in a single scale operation. Any other combinations of scale operators result in an error.
Example 2: Create at most a 32-by-32 pixel thumbnail image, preserving the original aspect ratio. The maxScale and fixedScale operators are especially useful for creating thumbnail images from various-sized originals:
ORDSYS.ORDImage.process(image_data, 'maxScale=32 32');
Example 3: Convert the image to TIFF:
DECLARE img_attrib CLOB; image_data BLOB; BEGIN SELECT img, attributes INTO image_data, img_attrib FROM timg WHERE N = 1 FOR UPDATE; ORDSYS.ORDImage.process(image_data, 'fileFormat=TIFF'); ORDSYS.ORDImage.getProperties(image_data, img_attrib); UPDATE timg SET img = image_data, attributes=img_attrib WHERE N = 1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
processCopy(imageBfile IN OUT NOCOPY BFILE,
command IN VARCHAR2,
dest IN OUT NOCOPY BLOB);
Copies an image stored internally or externally to another image stored internally in the source.localData attribute (of the embedded ORDSource object) and performs one or more image processing operations on the copy.
The image data represented as a BFILE.
A list of image processing changes to make for the image in the new copy.
The destination of the new image.
See Table 5-1, "Image Processing Operators" and Table 5-2, "Additional Image Processing Operators for Raw Pixel and Foreign Images".
Calling this method processes the image into the destination BLOB from any source BFILE.
The processCopy( ) method changes image attributes, therefore, if you are storing image attributes, you should call the getProperties( ) method on the destination image after calling the processCopy( ) method.
See Appendix D for more information about processCopy( ) operators.
None.
ORDImageExceptions.NULL_DESTINATION
This exception is raised if you call the processCopy( ) method and the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
See Appendix G for more information about these exceptions.
Copy an image, generating a thumbnail image of, at most, 32 x 32 pixels in the destination image:
DECLARE dest_attrib CLOB; image_data BFILE := BFILENAME('IMAGEDIR','testimg.dat'); destination_data BLOB; the_Command VARCHAR2(4000); BEGIN SELECT img, attributes INTO destination_data, dest_attrib FROM timg WHERE N = 2 FOR UPDATE; the_Command := 'maxScale=32 32'; ORDSYS.ORDImage.processCopy(image_data, the_Command, destination_data); ORDSYS.ORDImage.getProperties(destination_data, dest_attrib); UPDATE timg SET img = destination_data, attributes=dest_attrib WHERE N = 2; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
processCopy(imageBlob IN BLOB,
command IN VARCHAR2,
dest IN OUT NOCOPY BLOB);
Copies an image stored internally or externally to another image stored internally in the source.localData attribute (of the embedded ORDSource object) and performs one or more image processing operations on the copy.
The source image data represented as a BLOB.
A list of image processing changes to make for the image in the new copy.
The destination of the new image.
See Table 5-1, "Image Processing Operators" and Table 5-2, "Additional Image Processing Operators for Raw Pixel and Foreign Images".
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Calling this method processes the image into the destination BLOB from any source BLOB.
The processCopy( ) method changes image attributes, therefore, if you are storing image attributes, you should call the getProperties( ) method on the destination image after calling the processCopy( ) method.
See Appendix D for more information about processCopy( ) operators.
None.
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised if you call the processCopy( ) method and the imageBlob parameter is not initialized.
See Appendix G for more information about this exception.
Copy an image, changing the file format, compression format, and content format in the destination image:
DECLARE dest_attrib CLOB; image_data BLOB; destination_data BLOB; the_Command VARCHAR2(4000); BEGIN SELECT img INTO image_data FROM timg WHERE N = 1; SELECT img, attributes INTO destination_data, dest_attrib FROM timg WHERE N = 2 FOR UPDATE; the_Command := 'fileFormat=tiff, compressionFormat=packbits, contentFormat=8bitlut'; ORDSYS.ORDImage.processCopy(image_data, the_Command, destination_data); ORDSYS.ORDImage.getProperties(destination_data, dest_attrib); UPDATE timg SET img = destination_data, attributes=dest_attrib WHERE N = 2; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
putMetadata(imageBfile IN NOCOPY BFILE,
dest IN OUT NOCOPY BLOB
xmlData IN NOCOPY XMLType,
metadataType IN VARCHAR2 DEFAULT 'XMP',
encoding IN VARCHAR2 DEFAULT "UTF-8");
Accepts a BFILE containing an image and a schema valid XML document, and creates a binary packet suitable for embedding in the target image file format. The packet is encoded according to the value of the encoding parameter. If the value of the metadataType parameter is XMP, a new XMP packet is written to the image, replacing any existing XMP packets. The new image file with embedded metadata is returned in the dest parameter.
The BFILE handle to the image.
The BLOB to receive the image containing the embedded metadata.
The XMLtype that contains a schema valid XML document for the indicated metadataType. If the value of the metadataType parameter is XMP, the root element should contain a well-formed RDF document.
A string that specifies the type of metadata to write. The valid value is XMP; it is also the default.
The character encoding to be used in the image file. Valid values are UTF-8, UTF-16, UTF-16BE, and UTF-16LE. The default is UTF-8.
The binary metadata packet generated from the same xmlData input may have different sizes for different encodings. Different image file formats support different encodings, and may restrict the binary metadata packet size. The following are the restrictions of the supported image formats:
GIF89a supports UTF-8 encoding only.
JPEG requires a binary packet size of less than 65502 bytes.
TIFF requires a binary packet size of less than 4 gigabytes.
See Oracle interMedia User's Guide for more information about the Metadata feature.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the image is NULL.
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
See Appendix G for more information about these exceptions.
DECLARE imageBfile BFILE := BFILENAME('MEDIA_DIR','keyboard.jpg'); dest BLOB; xmlData XMLType; BEGIN SELECT ad_photo INTO dest FROM pm.print_media WHERE product_id = 3106 FOR UPDATE; xmlData := xmltype( '<xmpMetadata xmlns="http://xmlns.oracle.com/ord/meta/xmp">' || '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"' || ' xmlns:dc="http://purl.org/dc/elements/1.1/">' || '<rdf:Description>' || ' <dc:rights>' || ' <rdf:Alt>' || ' <rdf:li>' || ' Oracle Corporation' || ' </rdf:li>' || ' </rdf:Alt>'|| ' </dc:rights>' || '</rdf:Description>' || '</rdf:RDF>' || '</xmpMetadata>', 'http://xmlns.oracle.com/ord/meta/xmp'); ORDSYS.ORDImage.putMetadata(imageBfile, dest, xmlData, 'xmp', 'utf-8'); UPDATE pm.print_media SET ad_photo = dest WHERE product_id = 3106; COMMIT; EXCEPTION WHEN ORDSYS.ORDImageExceptions.NULL_CONTENT THEN DBMS_OUTPUT.PUT_LINE('image source is null'); WHEN ORDSYS.ORDImageExceptions.NULL_DESTINATION THEN DBMS_OUTPUT.PUT_LINE('image destionation is null'); WHEN OTHERS THEN RAISE; END;/
putMetadata(imageBlob IN NOCOPY BLOB,
dest IN OUT NOCOPY BLOB
xmlData IN NOCOPY XMLType,
metadataType IN VARCHAR2 DEFAULT 'XMP',
encoding IN VARCHAR2 DEFAULT "UTF-8");
Accepts a BLOB containing an image and a schema valid XML document, and creates a binary packet suitable for embedding in the target image file format. The packet is encoded according to the value of the encoding parameter. If the value of the metadataType parameter is XMP, a new XMP packet is written to the image, replacing any existing XMP packets. The new image file with embedded metadata is returned in the dest parameter.
The BLOB handle to the image.
The BLOB to receive the image containing the embedded metadata.
The XMLtype that contains a schema valid XML document for the indicated metadataType. If the value of the metadataType parameter is XMP, the root element should contain a well-formed RDF document.
A string that specifies the type of metadata to write. The valid value is XMP; it is also the default.
The character encoding to be used in the image file. Valid values are UTF-8, UTF-16, UTF-16BE, and UTF-16LE. The default is UTF-8.
Because temporary LOBs do not have read consistency, you cannot use one temporary LOB for both the imageBlob and dest parameters. The binary metadata packet generated from the same xmlData input may have different sizes for different encodings. Different image file formats support different encodings, and may restrict the binary metadata packet size. The following are the restrictions of the supported image formats:
GIF89a supports UTF-8 encoding only.
JPEG requires a binary packet size of less than 65502 bytes.
TIFF requires a binary packet size of less than 4 gigabytes.
See Oracle interMedia User's Guide for more information about the Metadata feature.
None.
ORDImageExceptions.NULL_CONTENT
This exception is raised when the image is NULL.
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
See Appendix G for more information about these exceptions.
DECLARE imageBlob BLOB; tmp BLOB; xmlData XMLType; ctx RAW(64):=NULL; BEGIN SELECT ad_photo INTO imageBlob FROM pm.print_media WHERE product_id = 3106 FOR UPDATE; xmlData := xmltype( '<xmpMetadata xmlns="http://xmlns.oracle.com/ord/meta/xmp">' || '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"' || ' xmlns:dc="http://purl.org/dc/elements/1.1/">' || '<rdf:Description>' || ' <dc:rights>' || ' <rdf:Alt>' || ' <rdf:li>' || ' Oracle Corporation' || ' </rdf:li>' || ' </rdf:Alt>'|| ' </dc:rights>' || '</rdf:Description>' || '</rdf:RDF>' || '</xmpMetadata>', 'http://xmlns.oracle.com/ord/meta/xmp'); tmp := imageBlob; ORDSYS.ORDImage.putMetadata(tmp, imageBlob, xmlData, 'xmp', 'utf-8'); UPDATE pm.print_media SET ad_photo = imageBlob WHERE product_id = 3106; COMMIT; EXCEPTION WHEN ORDSYS.ORDImageExceptions.NULL_CONTENT THEN DBMS_OUTPUT.PUT_LINE('image source is null'); WHEN ORDSYS.ORDImageExceptions.NULL_DESTINATION THEN DBMS_OUTPUT.PUT_LINE('image destionation is null'); WHEN OTHERS THEN RAISE; END;/
This section presents reference information on the interMedia static methods unique to the ORDVideo relational interface.
The relational interface adds interMedia support to video data stored in BLOBs and BFILEs rather than in the ORDVideo object type. The static methods unique to the ORDVideo relational interface are defined as follows in the ordvspec.sql
file:
. . . -- Static Methods for the relational interface STATIC PROCEDURE getProperties(ctx IN OUT RAW, videoBlob IN BLOB, attributes IN OUT NOCOPY CLOB, format IN VARCHAR2), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, videoBlob IN BLOB, attributes IN OUT NOCOPY CLOB, mimeType OUT VARCHAR2, format IN OUT VARCHAR2, width OUT INTEGER, height OUT INTEGER, frameResolution OUT INTEGER, frameRate OUT INTEGER, videoDuration OUT INTEGER, numberOfFrames OUT INTEGER, compressionType OUT VARCHAR2, numberOfColors OUT INTEGER, bitRate OUT INTEGER), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, videoBfile IN OUT NOCOPY BFILE, attributes IN OUT NOCOPY CLOB, format IN VARCHAR2), -- STATIC PROCEDURE getProperties(ctx IN OUT RAW, videoBfile IN OUT NOCOPY BFILE, attributes IN OUT NOCOPY CLOB, mimeType OUT VARCHAR2, format IN OUT VARCHAR2, width OUT INTEGER, height OUT INTEGER, frameResolution OUT INTEGER, frameRate OUT INTEGER, videoDuration OUT INTEGER, numberOfFrames OUT INTEGER, compressionType OUT VARCHAR2, numberOfColors OUT INTEGER, bitRate OUT INTEGER), . . .
Example Video Table Definition
The methods described in this section show examples based on a test video table TVID. Refer to the TVID table definition that follows when reading through the examples:
TVID Table Definition
CREATE TABLE tvid(n NUMBER, vid BLOB, attributes CLOB, mimetype VARCHAR2(4000), format VARCHAR2(31), width INTEGER, height INTEGER, frameresolution INTEGER, framerate INTEGER, videoduration INTEGER, numberofframes INTEGER, compressiontype VARCHAR2(4000), numberofcolors INTEGER, bitrate INTEGER) STORAGE (INITIAL 100K NEXT 100K PCTINCREASE 0); INSERT INTO tvid VALUES(1, EMPTY_BLOB(), EMPTY_CLOB(), NULL, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); INSERT INTO tvid VALUES(2, EMPTY_BLOB(), EMPTY_CLOB(), NULL, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); COMMIT;
getProperties(ctx IN OUT RAW,
videoBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB,
format IN VARCHAR2);
Reads the video BFILE data to get the values of the media attributes for supported formats, and then stores them in the input CLOB. This method populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The video data represented as a BFILE.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the video BFILE data in XML form.
The format of the video data. If a non-NULL value is specified, then the format plug-in for this format type is invoked.
None.
None.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the video plug-in raises an exception.
See Appendix G for more information about these exceptions.
Get the property information for known video attributes:
DECLARE vid_attrib CLOB; ctx RAW(64) :=NULL; vid_data BFILE := BFILENAME('VIDEODIR','testvid.dat'); vid_format VARCHAR2(160) := NULL; BEGIN DBMS_LOB.CREATETEMPORARY(vid_attrib, FALSE, DBMS_LOB.CALL); ORDSYS.ORDVideo.getProperties(ctx, vid_data, vid_attrib, vid_format); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(vid_attrib))); EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
videoBfile IN OUT NOCOPY BFILE,
attributes IN OUT NOCOPY CLOB,
mimeType OUT VARCHAR2,
format IN OUT VARCHAR2,
width OUT INTEGER,
height OUT INTEGER,
frameResolution OUT INTEGER,
frameRate OUT INTEGER,
videoDuration OUT INTEGER,
numberOfFrames OUT INTEGER,
compressionType OUT VARCHAR2,
numberOfColors OUT INTEGER,
bitRate OUT INTEGER);
Reads the video BFILE data to get the values of the media attributes for supported formats, and then stores them in the input CLOB and returns them as explicit parameters. This method gets the properties for the following attributes of the video data: MIME type, format, frame size, frame resolution, frame rate, video duration, number of frames, compression type, number of colors, and bit rate. It populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The video data represented as a BFILE.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the video BFILE data in XML form.
The MIME type of the video data.
The format of the video data. If a non-NULL value is specified, then the format plug-in for this format type is invoked. If specified as NULL, the format of the video data is returned.
The width of the frame in pixels of the video data.
The height of the frame in pixels of the video data.
The number of pixels per inch of frames in the video data.
The number of frames per second at which the video data was recorded.
The total time required to play the video data.
The total number of frames in the video data.
The compression type of the video data.
The number of colors in the video data.
The bit rate in the video data.
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
None.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the video plug-in raises an exception.
See Appendix G for more information about these exceptions.
Get the property information for known video attributes:
DECLARE vid_attrib CLOB; ctx RAW(64) :=NULL; vid_data BFILE := BFILENAME('VIDEODIR','testvid.dat'); mimeType VARCHAR2(80); format VARCHAR2(32) := NULL; width NUMBER; height NUMBER; frameResolution NUMBER; frameRate NUMBER; videoDuration NUMBER; numberOfFrames NUMBER; compressionType VARCHAR2(160); numberOfColors NUMBER; bitRate NUMBER; BEGIN DBMS_LOB.CREATETEMPORARY(vid_attrib, FALSE, DBMS_LOB.CALL); ORDSYS.ORDVideo.getProperties(ctx, vid_data, vid_attrib, mimeType, format, width, height, frameResolution, frameRate, videoDuration, numberOfFrames, compressionType, numberOfColors, bitRate); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(vid_attrib))); DBMS_OUTPUT.put_line('mimeType: ' || mimeType ); DBMS_OUTPUT.put_line('format: ' || format ); DBMS_OUTPUT.put_line('width: ' || width ); DBMS_OUTPUT.put_line('height: ' || height ); DBMS_OUTPUT.put_line('frameResolution: ' || frameResolution ); DBMS_OUTPUT.put_line('frameRate: ' || frameRate ); DBMS_OUTPUT.put_line('videoDuration: ' || videoDuration ); DBMS_OUTPUT.put_line('numberOfFrames: ' || numberOfFrames ); DBMS_OUTPUT.put_line('compressionType: ' || compressionType ); DBMS_OUTPUT.put_line('numberOfColors: ' || numberOfColors ); DBMS_OUTPUT.put_line('bitRate: ' || bitRate ); EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
videoBlob IN BLOB,
attributes IN OUT NOCOPY CLOB,
format IN VARCHAR2);
Reads the video BLOB data to get the values of the media attributes for supported formats, and then stores them in the input CLOB. This method populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The video data represented as a BLOB.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the video BLOB data in XML form.
The format of the video data. If a non-NULL value is specified, then the format plug-in for this format type is invoked.
None.
None.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the video plug-in raises an exception.
See Appendix G for more information about these exceptions.
Get the property information for known video attributes:
DECLARE vid_attrib CLOB; ctx RAW(64) :=NULL; vid_data BLOB; vid_format VARCHAR2(31) := NULL; BEGIN SELECT vid, attributes INTO vid_data, vid_attrib FROM tvid WHERE N = 1 FOR UPDATE; ORDSYS.ORDVideo.getProperties(ctx, vid_data, vid_attrib, vid_format); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(vid_attrib))); UPDATE tvid SET vid=vid_data, attributes=vid_attrib WHERE N=1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /
getProperties(ctx IN OUT RAW,
videoBlob IN BLOB,
attributes IN OUT NOCOPY CLOB,
mimeType OUT VARCHAR2,
format IN OUT VARCHAR2
width OUT INTEGER,
height OUT INTEGER,
frameResolution OUT INTEGER,
frameRate OUT INTEGER,
videoDuration OUT INTEGER,
numberOfFrames OUT INTEGER,
compressionType OUT VARCHAR2,
numberOfColors OUT INTEGER,
bitRate OUT INTEGER);
Reads the video BLOB data to get the values of the media attributes for supported formats, and then stores them in the input CLOB and returns them as explicit parameters. This method gets the properties for the following attributes of the video data: MIME type, format, frame size, frame resolution, frame rate, video duration, number of frames, compression type, number of colors, and bit rate. It populates the CLOB with an extensive set of format and application properties in XML form.
The format plug-in context information.
The video data represented as a BLOB.
The CLOB to hold the XML attribute information generated by the getProperties( ) method. This CLOB is populated with an extensive set of format and application properties of the video BLOB data in XML form.
The MIME type of the video data.
The format of the video data. If a non-NULL value is specified, then the format plug-in for this format type is invoked. If specified as NULL, the format of the video data is returned.
The width of the frame in pixels of the video data.
The height of the frame in pixels of the video data.
The number of pixels per inch of frames in the video data.
The number of frames per second at which the video data was recorded.
The total time required to play the video data.
The total number of frames in the video data.
The compression type of the video data.
The number of colors in the video data.
The bit rate in the video data.
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
None.
ORDSourceExceptions.EMPTY_SOURCE
This exception is raised when the value of the source.local attribute is 1 or 0 (TRUE), but the value of the source.localData attribute is NULL.
ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION
This exception is raised if you call the getProperties( ) method and the video plug-in raises an exception.
See Appendix G for more information about these exceptions.
Get the property information for known video attributes:
DECLARE vid_attrib CLOB; ctx RAW(64) :=NULL; vid_data BLOB; mimeType VARCHAR2(80); format VARCHAR2(32); width NUMBER; height NUMBER; frameResolution NUMBER; frameRate NUMBER; videoDuration NUMBER; numberOfFrames NUMBER; compressionType VARCHAR2(160); numberOfColors NUMBER; bitRate NUMBER; BEGIN SELECT vid, attributes, mimetype, format, width, height, frameresolution, framerate, videoduration, numberofframes, compressiontype, numberofcolors, bitrate INTO vid_data, vid_attrib, mimeType, format, width, height, frameResolution, frameRate, videoDuration, numberOfFrames, compressionType, numberOfColors, bitRate FROM tvid WHERE N = 1 FOR UPDATE; ORDSYS.ORDVideo.getProperties(ctx, vid_data, vid_attrib, mimeType, format, width, height, frameResolution, frameRate, videoDuration, numberOfFrames, compressionType, numberOfColors, bitRate); DBMS_OUTPUT.put_line('Size of XML Annotations ' || TO_CHAR(DBMS_LOB.GETLENGTH(vid_attrib))); DBMS_OUTPUT.put_line('mimeType: ' || mimeType ); DBMS_OUTPUT.put_line('format: ' || format ); DBMS_OUTPUT.put_line('width: ' || width ); DBMS_OUTPUT.put_line('height: ' || height ); DBMS_OUTPUT.put_line('frameResolution: ' || frameResolution ); DBMS_OUTPUT.put_line('frameRate: ' || frameRate ); DBMS_OUTPUT.put_line('videoDuration: ' || videoDuration ); DBMS_OUTPUT.put_line('numberOfFrames: ' || numberOfFrames ); DBMS_OUTPUT.put_line('compressionType: ' || compressionType ); DBMS_OUTPUT.put_line('numberOfColors: ' || numberOfColors ); DBMS_OUTPUT.put_line('bitRate: ' || bitRate ); UPDATE tvid SET vid=vid_data, attributes=vid_attrib, mimetype=mimeType, format=format, width=width, height=height, frameresolution=frameResolution, framerate=frameRate, videoduration=videoDuration, numberofframes=numberOfFrames, compressiontype=compressionType, numberofcolors=numberOfColors, bitrate=bitRate WHERE N=1; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE; END; /