Oracle interMedia Audio, Image, and Video User's Guide and Reference Release 8.1.7 Part Number A85336-01 |
|
Oracle interMedia contains the following information about the ORDVideo type:
The examples in this chapter assume that the test video table TVID has been created and filled with data. This table was created using the SQL statements described in Section 6.3.1.
Methods invoked at the ORDSource level that are handed off to the source plug-in for processing have ctx (RAW(4000)) as the first argument. Before calling any of these methods for the first time, the client must allocate the ctx structure, initialize it to NULL, and invoke the openSource( ) method. At this point, the source plug-in can initialize context for this client. When processing is complete, the client should invoke the closeSource( ) method.
Methods invoked from a source plug-in call have the first argument as ctx (RAW(4000)).
Methods invoked at the ORDVideo level that are handed off to the format plug-in for processing have ctx (RAW(4000)) as the first argument. Before calling any of these methods for the first time, the client must allocate the ctx structure and initialize it to NULL.
Oracle interMedia describes the ORDVideo object type, which supports the storage and management of video data.
The ORDVideo object type supports the storage and management of video data. This object type is defined as follows:
CREATE OR REPLACE TYPE ORDVideo AS OBJECT ( -- ATTRIBUTES description VARCHAR2(4000), source ORDSource, format VARCHAR2(31), mimeType VARCHAR2(4000), comments CLOB, -- VIDEO RELATED ATTRIBUTES width INTEGER, height INTEGER, frameResolution INTEGER, frameRate INTEGER, videoDuration INTEGER, numberOfFrames INTEGER, compressionType VARCHAR2(4000), numberOfColors INTEGER, bitRate INTEGER, -- METHODS -- CONSTRUCTORS -- STATIC FUNCTION init( ) RETURN ORDVideo, STATIC FUNCTION init(srcType IN VARCHAR2, srcLocation IN VARCHAR2, srcName IN VARCHAR2) RETURN ORDVideo, -- Methods associated with the date attribute MEMBER FUNCTION getUpdateTime RETURN DATE, PRAGMA RESTRICT_REFERENCES(getUpdateTime, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setUpdateTime(current_time DATE), -- Methods associated with the description attribute MEMBER PROCEDURE setDescription(user_description IN VARCHAR2), MEMBER FUNCTION getDescription RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getDescription, WNDS, WNPS, RNDS, RNPS), -- Methods associated with the mimeType attribute MEMBER PROCEDURE setMimeType(mime IN VARCHAR2), MEMBER FUNCTION getMimeType RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getMimeType, WNDS, WNPS, RNDS, RNPS), -- Methods associated with the source attribute MEMBER FUNCTION processSourceCommand( ctx IN OUT RAW, cmd IN VARCHAR2, arguments IN VARCHAR2, result OUT RAW) RETURN RAW, MEMBER FUNCTION isLocal RETURN BOOLEAN, PRAGMA RESTRICT_REFERENCES(isLocal, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setLocal, MEMBER PROCEDURE clearLocal, MEMBER PROCEDURE setSource( source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2), MEMBER FUNCTION getSource RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getSource, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getSourceType RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getSourceType, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getSourceLocation RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getSourceLocation, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getSourceName RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getSourceName, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE import(ctx IN OUT RAW), MEMBER PROCEDURE importFrom( ctx IN OUT RAW, source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2), MEMBER PROCEDURE export( ctx IN OUT RAW, source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2), MEMBER FUNCTION getContentLength(ctx IN OUT RAW) RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getContentLength, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getContentInLob( ctx IN OUT RAW, dest_lob IN OUT NOCOPY BLOB, mimeType OUT VARCHAR2, format OUT VARCHAR2), MEMBER FUNCTION getContent RETURN BLOB, PRAGMA RESTRICT_REFERENCES(getContent, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE deleteContent, MEMBER FUNCTION getBFILE RETURN BFILE, PRAGMA RESTRICT_REFERENCES(getBFILE, WNDS, WNPS, RNDS, RNPS), -- Methods associated with file operations on the source MEMBER FUNCTION openSource(userArg IN RAW, ctx OUT RAW) RETURN INTEGER, MEMBER FUNCTION closeSource(ctx IN OUT RAW) RETURN INTEGER, MEMBER FUNCTION trimSource(ctx IN OUT RAW, newlen IN INTEGER) RETURN INTEGER, MEMBER PROCEDURE readFromSource( ctx IN OUT RAW, startPos IN INTEGER, numBytes IN OUT INTEGER, buffer OUT RAW), MEMBER PROCEDURE writeToSource( ctx IN OUT RAW, startPos IN INTEGER, numBytes IN OUT INTEGER, buffer IN RAW), -- Methods associated with the comments attribute MEMBER PROCEDURE appendToComments(amount IN BINARY_INTEGER, buffer IN VARCHAR2), MEMBER PROCEDURE writeToComments(offset IN INTEGER, amount IN BINARY_INTEGER, buffer IN VARCHAR2), MEMBER FUNCTION readFromComments(offset IN INTEGER, amount IN BINARY_INTEGER := 32767) RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(readFromComments, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION locateInComments(pattern IN VARCHAR2, offset IN INTEGER := 1, occurrence IN INTEGER := 1) RETURN INTEGER, MEMBER PROCEDURE trimComments(newlen IN INTEGER), MEMBER PROCEDURE eraseFromComments(amount IN OUT NOCOPY INTEGER, offset IN INTEGER := 1), MEMBER PROCEDURE deleteComments, MEMBER PROCEDURE loadCommentsFromFile(fileobj IN BFILE, amount IN INTEGER, from_loc IN INTEGER :=1, to_loc IN INTEGER :=1), MEMBER PROCEDURE copyCommentsOut(dest IN OUT NOCOPY CLOB, amount IN INTEGER, from_loc IN INTEGER :=1, to_loc IN INTEGER :=1), MEMBER FUNCTION compareComments( compare_with_lob IN CLOB, amount IN INTEGER := 4294967295, starting_pos_in_comment IN INTEGER := 1, starting_pos_in_compare IN INTEGER := 1) RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(compareComments, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getCommentLength RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getCommentLength, WNDS, WNPS, RNDS, RNPS), -- Methods associated with the video attributes accessors MEMBER PROCEDURE setFormat(knownformat IN VARCHAR2), MEMBER FUNCTION getFormat RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getFormat, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setFrameSize(knownWidth IN INTEGER, knownHeight IN INTEGER), MEMBER PROCEDURE getFrameSize(retWidth OUT INTEGER, retHeight OUT INTEGER), PRAGMA RESTRICT_REFERENCES(getFrameSize, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setFrameResolution(knownFrameResolution IN INTEGER), MEMBER FUNCTION getFrameResolution RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getFrameResolution, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setFrameRate(knownFrameRate IN INTEGER), MEMBER FUNCTION getFrameRate RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getFrameRate, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setVideoDuration(knownVideoDuration IN INTEGER), MEMBER FUNCTION getVideoDuration RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getVideoDuration, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setNumberOfFrames(knownNumberOfFrames IN INTEGER), MEMBER FUNCTION getNumberOfFrames RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getNumberOfFrames, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setCompressionType(knownCompressionType IN VARCHAR2), MEMBER FUNCTION getCompressionType RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getCompressionType, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setNumberOfColors(knownNumberOfColors IN INTEGER), MEMBER FUNCTION getNumberOfColors RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getNumberOfColors, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setBitRate(knownBitRate IN INTEGER), MEMBER FUNCTION getBitRate RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getBitRate, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setKnownAttributes( knownFormat IN VARCHAR2, knownWidth IN INTEGER, knownHeight IN INTEGER, knownFrameResolution IN INTEGER, knownFrameRate IN INTEGER, knownVideoDuration IN INTEGER knownNumberOfFrames IN INTEGER, knownCompressionType IN VARCHAR2, knownNumberOfColors IN INTEGER, knownBitRate IN INTEGER), -- Methods associated with setting all the properties MEMBER PROCEDURE setProperties(ctx IN OUT RAW), MEMBER PROCEDURE setProperties(ctx IN OUT RAW, setComments IN BOOLEAN), MEMBER FUNCTION checkProperties(ctx IN OUT RAW) RETURN BOOLEAN, MEMBER FUNCTION getAttribute( ctx IN OUT RAW, name IN VARCHAR2) RETURN VARCHAR2, MEMBER PROCEDURE getAllAttributes( ctx IN OUT RAW, attributes IN OUT NOCOPY CLOB), -- Methods associated with video processing MEMBER FUNCTION processVideoCommand( ctx IN OUT RAW, cmd IN VARCHAR2, arguments IN VARCHAR2, result OUT RAW) RETURN RAW );
where:
This section describes the constructor functions.
The interMedia video constructor functions are as follows:
init( ) RETURN ORDVideo;
Allows for easy initialization of instances of the ORDVideo object type.
None.
None.
None.
This static method initializes all the ORDVideo attributes to NULL with the following exceptions:
You should begin using the init( ) method as soon as possible to allow you to more easily initialize the ORDVideo object type, especially if the ORDVideo type evolves and attributes are added in a future release. INSERT statements left unchanged using the default constructor (which initializes each object attribute), will fail under these circumstances.
Initialize the ORDVideo object attributes:
DECLARE myVideo ORDSYS.ORDVideo; BEGIN myVideo := ORDSYS.ORDVideo.init( ); INSERT INTO tvid VALUES (myVideo); END; /
init(srcType IN VARCHAR2,
srcLocation IN VARCHAR2,
srcName IN VARCHAR2)
RETURN ORDVideo;
Allows for easy initialization of instances of the ORDVideo object type.
The source type of the video data.
The source location of the video data.
The source name of the video data.
None.
None.
This static method initializes all the ORDVideo attributes to NULL with the following exceptions:
You should begin using the init( ) method as soon as possible to allow you to more easily initialize the ORDVideo object type, especially if the ORDVideo type evolves and attributes are added in a future release. INSERT statements left unchanged using the default constructor (which initializes each object attribute), will fail under these circumstances.
Initialize the ORDVideo object attributes:
DECLARE myVideo ORDSYS.ORDVideo; BEGIN myVideo := ORDSYS.ORDVideo.init('FILE','VIDDIR','video1.rm'); INSERT INTO tvid VALUES (myVideo); END; /
This section presents reference information on the Oracle interMedia methods used for video data manipulation. These methods are described in the following groupings:
The following methods are supported only by user-defined format plug-ins:
For more information on object types and methods, see Oracle8i Concepts.
The methods described in this reference chapter show examples based on a test video table TVID. Refer to the TVID table definition that follows when reading through the examples in Section 6.3.2 through Section 6.3.9:
CREATE TABLE TVID(n NUMBER, vid ORDSYS.ORDVIDEO) storage (initial 100K next 100K pctincrease 0); INSERT INTO TVID VALUES(1, ORDSYS.ORDVideo.init()); INSERT INTO TVID VALUES(2, ORDSYS.ORDVideo.init());
This section presents reference information on the ORDVideo methods associated with the updateTime attribute.
getUpdateTime RETURN DATE;
Returns the time when the object was last updated.
None.
None.
PRAGMA RESTRICT_REFERENCES(getUpdateTime, WNDS,
WNPS, RNDS, RNPS)
None.
Get the updated time of some video data:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT TVID INTO obj FROM TVID WHERE N = 1; DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getUpdateTime,'MM-DD-YYYY HH24:MI:SS')); END; /
setUpdateTime(current_time DATE);
Sets the time when the video data was last updated. Use this method whenever you modify the video data. The methods setDescription( ), setMimeType( ), setSource( ), import( ), importFrom( ), export( ), deleteContent, and all set video accessors call this method implicitly.
The timestamp to be stored. Default is SYSDATE.
You must invoke this method whenever you modify the video data.
None.
None.
See also the example in the getUpdateTime Method.
Set the updated time of some video data:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N = 1; obj.setUpdateTime(SYSDATE); UPDATE TVID SET vid=obj WHERE N = 1; COMMIT; END;
This section presents reference information on the ORDVideo methods associated with the description attribute.
setDescription (user_description IN VARCHAR2);
Sets the description of the video data.
The description of the video data.
Each video object may need a description to help some client applications. For example, a Web-based client can show a list of video descriptions from which a user can select one to access the video data.
Web access components and other client components provided with Oracle interMedia make use of this description attribute to present video data to users.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
None.
Set the description attribute for some video data:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('writing description'); DBMS_OUTPUT.PUT_LINE('-------------'); obj.setDescription('video1'); DBMS_OUTPUT.PUT_LINE(obj.getDescription); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; END; /
getDescription RETURN VARCHAR2;
Returns the description of the video data.
None.
None.
PRAGMA RESTRICT_REFERENCES(getTitle, WNDS, WNPS, RNDS, RNPS)
DESCRIPTION_IS_NOT_SET
This exception is raised if you call the getDescription method and the description is not set.
See the example in the setDescription( ) Method.
This section presents reference information on the ORDVideo methods associated with the mimeType attribute.
setMimeType(mime IN VARCHAR2);
Allows you to set the MIME type of the video data.
The MIME type.
Calling this method implicitly calls the setUpdateTime( ) method.
Call the setMimeType( ) method to set the MIME type if the source is a file or BLOB.
The MIME type is extracted from the HTTP header on import for HTTP sources.
None.
INVALID_MIME_TYPE
This exception is raised if you call the setMimeType( ) method and the value for MIME type is NULL.
Set the MIME type for some stored video data:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('writing mimetype'); DBMS_OUTPUT.PUT_LINE('----------------'); obj.setMimeType('video/avi'); DBMS_OUTPUT.PUT_LINE(obj.getMimeType); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; END; /
getMimeType RETURN VARCHAR2;
Returns the MIME type for the video data.
None.
If the source is an HTTP server, the MIME type information is read from the HTTP header information. If the source is a file or BLOB, you must call the setMimeType( ) method to set the MIME type.
PRAGMA RESTRICT_REFERENCES(getMimeType, WNDS, WNPS, RNDS, RNPS)
None.
See the example in the setMimeType( ) Method.
This section presents reference information on the ORDVideo methods associated with the source attribute.
processSourceCommand(
ctx IN OUT RAW,
cmd IN VARCHAR2,
arguments IN VARCHAR2,
result OUT RAW)
RETURN RAW;
Allows you to send any command and its arguments to the source plug-in. This method is available only for user-defined source plug-ins.
The source plug-in context information. This must be allocated. You must call the openSource( ) method; see the introduction to this chapter for more information.
Any command recognized by the source plug-in.
The arguments of the command.
The result of calling this function returned by the source plug-in.
Use this method to send any command and its respective arguments to the source plug-in. Commands are not interpreted; they are taken and passed through to be processed.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the processSourceCommand( ) method and the value of srcType is NULL.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the processSourceCommand( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the processSourceCommand( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Process some commands:
DECLARE obj ORDSYS.ORDVideo; res RAW(4000); result RAW(4000); command VARCHAR(4000); argList VARCHAR(4000); ctx RAW(4000) :=NULL; BEGIN select vid into obj from TVID where N =1 for UPDATE; -- assign command -- assign argList res := obj.processSourceCommand (ctx, command, argList, result); UPDATE TVID SET vid=obj WHERE N=1 ; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('Source METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('SOURCE PLUGIN EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('VIDEO METHOD_NOT_SUPPORTED EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('VIDEO PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('EXCEPTION caught'); END; /
isLocal RETURN BOOLEAN;
Returns TRUE if the data is stored locally in a BLOB or FALSE if the data is stored externally.
None.
If the local attribute value is set to 1 or NULL, this method returns TRUE, otherwise this method returns FALSE.
PRAGMA RESTRICT_REFERENCES(getLocal, WNDS, WNPS, RNDS, RNPS)
None.
Determine whether or not the data is local:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N = 1 FOR UPDATE; if(obj.isLocal) then DBMS_OUTPUT.put_line('local is true'); else DBMS_OUTPUT.put_line('local is false'); endif; END; /
setLocal;
Sets the local attribute to indicate that the data is stored internally in a BLOB. When the local flag is set, video methods look for video data in the source.localData attribute.
None.
This method sets the local attribute to 1, meaning the data is stored locally in the localData attribute.
None.
None.
Set the flag to local for the data:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT s INTO obj FROM TVID WHERE N = 1 FOR UPDATE; obj.setLocal; UPDATE TVID SET s=obj WHERE N = 1; COMMIT; END; /
clearLocal;
Resets the local flag to indicate that the data is stored externally. When the local flag is set to clear, video methods look for video data using the srcLocation, srcName, and srcType attributes.
None.
This method sets the local attribute to a 0, meaning the data is stored externally or outside of Oracle8i.
None.
None.
Clear the value of the local flag for the data:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT s INTO obj FROM TVID WHERE N = 1 FOR UPDATE; obj.clearLocal; UPDATE TVID SET s=obj WHERE N = 1; COMMIT; END; /
setSource(
source_type IN VARCHAR2,
source_location IN VARCHAR2,
source_name IN VARCHAR2);
Sets or alters information about the external source of the video data.
The source type of the external data. See the "ORDSource Object Type" definition in Chapter 7 for more information.
The source location of the external data. See the "ORDSource Object Type" definition in Chapter 7 for more information.
The source name of the external data. See the "ORDSource Object Type" definition in Chapter 7 for more information.
Users can use this method to set the video data source to a new BFILE or URL.
You must ensure that the directory exists or is created before you use this method.
Calling this method implicitly calls the setUpdateTime( ) method and the clearLocal method.
None.
None.
Change the source to the exported file prior to exporting the video data:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); obj.setSource('LOCAL','VIDEODIR','video.dat'); DBMS_OUTPUT.PUT_LINE(obj.getSource); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; END; /
getSource RETURN VARCHAR2;
Returns information about the external location of the video data in URL format.
None.
Possible return values are:
PRAGMA RESTRICT_REFERENCES(getSource, WNDS, WNPS, RNDS, RNPS)
None.
See the example in the setSource( ) Method.
getSourceType RETURN VARCHAR2;
Returns a string containing the type of the external video data source.
None.
This method returns a VARCHAR2 string containing the type of the external video data source, for example 'FILE'.
PRAGMA RESTRICT_REFERENCES(getSourceType, WNDS, WNPS, RNDS, RNPS)
None.
Get the source type information about a video data source:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); -- set source to a file obj.setSource('FILE','VIDEODIR','MV1.AVI'); -- get source information DBMS_OUTPUT.put_line(obj.getSource); DBMS_OUTPUT.put_line(obj.getSourceType); DBMS_OUTPUT.put_line(obj.getSourceLocation); DBMS_OUTPUT.put_line(obj.getSourceName); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; EXCEPTION WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('Source not specified'); END; /
getSourceLocation RETURN VARCHAR2;
Returns a string containing the value of the external video data source location.
None.
This method returns a VARCHAR2 string containing the value of the external video data location, for example 'BFILEDIR'.
PRAGMA RESTRICT_REFERENCES(getSourceLocation, WNDS,
WNPS, RNDS, RNPS)
ORDSourceExceptions.INCOMPLETE_SOURCE_LOCATION
This exception is raised if you call the getSourceLocation method and the value of srcLocation is NULL.
See the example in the getSourceType Method.
getSourceName RETURN VARCHAR2;
Returns a string containing the name of the external video data source.
None.
This method returns a VARCHAR2 string containing the name of the external data source, for example 'testvid.dat'.
PRAGMA RESTRICT_REFERENCES(getSourceName, WNDS,
WNPS, RNDS, RNPS)
ORDSourceExceptions.INCOMPLETE_SOURCE_NAME
This exception is raised if you call the getSourceName method and the value of srcName is NULL.
See the example in the getSourceType Method.
import(ctx IN OUT RAW);
Transfers video data from an external video data source to a local source (localData) within an Oracle database.
The source plug-in context information. This must be allocated. You must call the openSource( ) method; see the introduction to this chapter for more information.
Use the setSource( ) method to set the external source type, location, and name prior to calling import.
You must ensure that the directory exists or is created before you use this method.
After importing data from an external video data source to a local source (within an Oracle database), the source information remains unchanged (that is, pointing to the source from where the data was imported).
Invoking this method implicitly calls the setUpdateTime( ) and setLocal methods.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the import( ) method and the value of srcType is NULL.
ORDSourceExceptions.NULL_SOURCE
This exception is raised if you call the import( ) method and the value of dlob is NULL.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the import( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the import( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Import video data by first setting the source and then importing it:
DECLARE obj ORDSYS.ORDVideo; ctx RAW(4000) :=NULL; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); -- set source to a file obj.setSource('FILE','VIDEODIR','testvid.dat'); -- get source information DBMS_OUTPUT.PUT_LINE(obj.getSource); -- import data obj.import(ctx); -- check size DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getContentLength(ctx))); DBMS_OUTPUT.PUT_LINE(obj.getSource); DBMS_OUTPUT.PUT_LINE('deleting contents'); DBMS_OUTPUT.PUT_LINE('-----------------'); obj.deleteContent; DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getContentLength(ctx))); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; END; /
importFrom(ctx IN OUT RAW,
source_type IN VARCHAR2,
source_location IN VARCHAR2,
source_name IN VARCHAR2);
Transfers video data from the specified external video data source to a local source (localData) within an Oracle database.
The source plug-in context information. This must be allocated. You must call the openSource( ) method; see the introduction to this chapter for more information.
The source type of the video data.
The location from where the video data is to be imported.
The name of the video data.
This method is similar to the import( ) method except the source information is specified as parameters to the method instead of separately.
You must ensure that the directory exists or is created before you use this method.
After importing data from an external video data source to a local source (within an Oracle database), the source information (that is, pointing to the source from where the data was imported) is set to the input values.
Invoking this method implicitly calls the setUpdateTime( ) and setLocal methods.
None.
ORDSourceExceptions.NULL_SOURCE exception
This exception is raised if you call the importFrom( ) method and the value dlob is NULL.
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.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the importFrom( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Import video data from the specified external data source into the local source:
DECLARE obj ORDSYS.ORDVideo; ctx RAW(4000) :=NULL; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); -- import data obj.importFrom(ctx,'FILE','VIDEODIR','MV1.AVI'); -- check size DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getContentLength(ctx))); DBMS_OUTPUT.PUT_LINE(TO_CHAR(DBMS_LOB.GETLENGTH(obj.getContent))); DBMS_OUTPUT.PUT_LINE(obj.getSource); DBMS_OUTPUT.PUT_LINE('deleting contents'); DBMS_OUTPUT.PUT_LINE('-----------------'); obj.deleteContent; DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getContentLength(ctx))); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('Source METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('SOURCE PLUGIN EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('VIDEO METHOD_NOT_SUPPORTED EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('VIDEO PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('EXCEPTION Caught'); END; /
export(
ctx IN OUT RAW,
source_type IN VARCHAR2,
source_location IN VARCHAR2,
source_name IN VARCHAR2);
Copies video data from a local source (localData) within an Oracle database to an external video data source.
The source plug-in context information.
The source type of the location to where the data is to be exported.
The location to where the video data is to be exported.
The name of the video object to where the data is to be exported.
After exporting video data, all video attributes remain unchanged and srcType, srcLocation, and srcName are updated with input values. After calling the export method, you can call the clearLocal( ) method to indicate the data is stored outside the database and call the deleteContent( ) method if you want to delete the content of the local data.
This method is also available for user-defined sources that can support the export method.
The only server-side native support for the export method is for the srcType FILE.
The export( ) method for a source type of FILE is similar to a file copy operation in that the original data stored in the BLOB is not touched other than for reading purposes.
The export( ) method is not an exact mirror operation to the import( ) method in that the clearLocal( ) method is not automatically called to indicate the data is stored outside the database, whereas the import( ) method automatically calls the setLocal( ) method.
Call the deleteContent( ) method after calling the export( ) method to delete the content from the database if you no longer intend to manage the multimedia data within the database.
The export( ) method writes only to a directory object that the user has privilege to access. That is, you can access a directory that you have created using the SQL CREATE DIRECTORY statement, or one to which you have been granted READ access. To execute the CREATE DIRECTORY statement, you must have the CREATE ANY DIRECTORY privilege. In addition, you must use the DBMS_JAVA.GRANT_PERMISSION call to specify which files can be written.
For example, the following grants the user, MEDIAUSER, the permission to write to the file named filename.dat:
CALL DBMS_JAVA.GRANT_PERMISSION( 'MEDIAUSER', 'java.io.FilePermission', '/actual/server/directory/path/filename.dat', 'write');
See the security and performance section in the Oracle8i Java Developer's Guide for more information.
Invoking this method implicitly calls the setUpdateTime( ) method.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the export( ) method and the value of srcType is NULL.
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.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the export( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Export data from a local source to an external data source:
DECLARE obj ORDSYS.ORDVideo; ctx RAW(4000) :=NULL; BEGIN SELECT vid INTO obj FROM tvid WHERE N = 1; obj.export(ctx,'FILE','VIDEODIR','testvid.dat'); EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('Source METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('SOURCE PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('OTHER EXCEPTION caught'); END; /
getContentLength(ctx IN OUT RAW) RETURN INTEGER;
Returns the length of the video data content stored in the source.
The source plug-in context information.
This method is not supported for all source types. For example, HTTP type sources do not support this method. If you want to implement this call for HTTP type sources, you must define your own modified HTTP source type and implement this method on it.
PRAGMA RESTRICT_REFERENCES(getContentLength, WNDS,
WNPS, RNDS, RNPS)
ORDSourceExceptions.INCOM-PLETE_SOURCE_INFORMATION
This exception is raised if you call the getContentLength( ) method and the value of srcType is NULL and data is not stored locally in the BLOB.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the getContentLength( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about this exception.
See the example in the import( ) Method.
getContentInLob(
ctx IN OUT RAW,
dest_lob IN OUT NOCOPY BLOB,
mimeType OUT VARCHAR2,
format OUT VARCHAR2)
Transfers data from a data source into the specified BLOB. The BLOB can be another BLOB, not the BLOB for the object.
The source plug-in context information.
The LOB in which to receive data.
The MIME type of the data; this may or may not be returned.
The format of the data; this may or may not be returned.
None.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the getContentInLob( ) method and the value of srcType is NULL.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the getContentInLob( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the getContentInLob( ) method and within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Get data from a data source into the specified BLOB on the local source:
DECLARE obj ORDSYS.ORDVideo; tempBLob BLOB; mimeType VARCHAR2(4000); format VARCHAR2(4000); ctx RAW(4000) :=NULL; BEGIN SELECT vid INTO obj FROM TVID WHERE N = 1 ; if(obj.isLocal) then DBMS_OUTPUT.put_line('local is true'); end if; DBMS_LOB.CREATETEMPORARY(tempBLob, true, 10); obj.getContentInLob(ctx,tempBLob, mimeType,format); -- process tempBLob DBMS_OUTPUT.PUT_LINE(TO_CHAR(DBMS_LOB.getLength(tempBLob))); EXCEPTION WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('ORDVideoExceptions.METHOD_NOT_SUPPORTED caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
getContent RETURN BLOB;
Returns a handle to the local BLOB storage, that is the BLOB within the ORDVideo object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getContent, WNDS, WNPS, RNDS, RNPS)
None.
A client accesses video data to be put on a Web-based player:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('setting and getting source'); DBMS_OUTPUT.PUT_LINE('--------------------------'); -- import data obj.importFrom(ctx,'FILE','VIDEODIR','MV1.AVI'); -- check size DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getContentLength(ctx))); DBMS_OUTPUT.PUT_LINE(TO_CHAR(DBMS_LOB.GETLENGTH(obj.getContent))); DBMS_OUTPUT.PUT_LINE(obj.getSource); DBMS_OUTPUT.PUT_LINE('deleting contents'); DBMS_OUTPUT.PUT_LINE('-----------------'); obj.deleteContent; DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getContentLength(ctx))); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('Source METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('SOURCE PLUGIN EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('VIDEO METHOD_NOT_SUPPORTED EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('VIDEO PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('EXCEPTION Caught'); END; /
deleteContent;
Deletes the local data from the current local source (localData).
None.
This method can be called after you export the data from the local source to an external video data source and you no longer need this data in the local source.
Call this method when you want to update the object with a new object.
None.
None.
See the example in the import( ) Method.
getBFILE RETURN BFILE;
Returns the LOB locator of the BFILE containing the video clip.
None.
This method constructs and returns a BFILE using the stored source.srcLocation and source.srcName attribute information. The source.srcLocation attribute must contain a defined directory object. The source.srcName attribute must be a valid file name.
PRAGMA RESTRICT_REFERENCES(getBFILE, WNDS, WNPS, RNDS, RNPS)
If the source.srcType attribute value is NULL, calling this method raises an INCOMPLETE_SOURCE_INFORMATION exception.
If the value of srcType is other than FILE, then calling this method raises an INVALID_SOURCE_TYPE exception.
Return the BFILE for the stored source directory and file name attributes:
DECLARE Video ORDSYS.ORDVideo; videobfile BFILE; BEGIN SELECT videoclip INTO Video FROM emp WHERE ename = 'John Doe'; -- get the vodeo BFILE videobfile := Video.getBFILE; END;
This section presents reference information on the ORDVideo methods associated with file-like operations on a data source. You can use the methods in this section specifically to manipulate video data.
openSource(userArg IN RAW, ctx OUT RAW) RETURN INTEGER;
Opens a data source.
The user argument. This may be used by user-defined source plug-ins.
The source plug-in context information. This must be allocated. You must call the openSource( ) method; see the introduction to this chapter for more information.
The return INTEGER is 0 (zero) for success and >0 (for example, 1) for failure. The exact number and the meaning for that number is plug-in defined. For example, for the file plug-in, 1 might mean "File not found," 2 might mean "No such directory," and so forth.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the openSource( ) method and the value for srcType is NULL and the data is not local.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the openSource( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the openSource( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Open a local data source:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; ctx RAW(4000) :=NULL; userArg RAW(4000); BEGIN select vid into obj from TVID where N =1 for UPDATE; res := obj.openSource(userArg, ctx); UPDATE TVID SET vid =obj WHERE N=1 ; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
closeSource(ctx IN OUT RAW) RETURN INTEGER;
Closes a data source.
The source plug-in context information. You must call the openSource( ) method; see the introduction to this chapter for more information.
The return INTEGER is 0 (zero) for success and >0 (for example, 1) for failure. The exact number and the meaning for that number is plug-in defined. For example, for the file plug-in, 1 might mean "File not found," 2 might mean "No such directory," and so forth.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the closeSource( ) method and the value for srcType is NULL and the data is not local.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the closeSource( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the closeSource( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Close an external BFILE data source:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; ctx RAW(4000) :=NULL; BEGIN select vid into obj from TVID where N =2 for UPDATE; obj.source.clearLocal; res := obj.closeSource(ctx); UPDATE TVID SET vid=obj WHERE N=2 ; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
trim(ctx IN OUT RAW,
newlen IN INTEGER) RETURN RAW;
Trims a data source.
The source plug-in context information. This must be allocated. You must call the openSource( ) method; see the introduction to this chapter for more information.
The trimmed new length.
The return INTEGER is 0 (zero) for success and >0 (for example, 1) for failure. The exact number and the meaning for that number is plug-in defined. For example, for the file plug-in, 1 might mean "File not found," 2 might mean "No such directory," and so forth.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the trimSource( ) method and the value for srcType is NULL and the data is not local.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the trimSource( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the trimSource( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Trim a local data source:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; ctx RAW(4000) :=NULL; BEGIN select vid into obj from TVID where N =1 for UPDATE; res := obj.trimSource(ctx,0); UPDATE TVID SET vid=obj WHERE N=1 ; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
readFromSource(
ctx IN OUT RAW,
startPos IN INTEGER,
numBytes IN OUT INTEGER,
buffer OUT RAW);
Allows you to read a buffer of n bytes from a source beginning at a start position.
The source plug-in context information. This must be allocated. You must call the openSource( ) method; see the introduction to this chapter for more information.
The start position in the data source.
The number of bytes to be read from the data source.
The buffer into which the data will be read.
This method is not supported for HTTP sources.
To successfully read HTTP source types, the entire URL source must be requested to be read. If you want to implement a read method for an HTTP source type, you must provide your own implementation for this method in the modified source plug-in for HTTP source type.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the readFromSource( ) method and the value of srcType is NULL and the data is not local.
ORDSourceExceptions.NULL_SOURCE
This exception is raised if you call the readFromSource( ) method and the data is local but the value of localData is NULL.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the readFromSource( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the readFromSource( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Read a buffer from the source:
DECLARE obj ORDSYS.ORDVideo; buffer RAW(4000); i INTEGER; ctx RAW(4000) :=NULL; BEGIN i := 20; select vid into obj from TVID where N =1 ; obj.readFromSource(ctx,1,i,buffer); DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getContentLength(ctx))); EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
writeToSource(
ctx IN OUT RAW,
startPos IN INTEGER,
numBytes IN OUT INTEGER,
buffer IN RAW);
Allows you to write a buffer of n bytes to a source beginning at a start position.
The source plug-in context information. This must be allocated. You must call the openSource( ) method; see the introduction to this chapter for more information.
The start position in the source to where the buffer should be copied.
The number of bytes to be written to the source.
The buffer of data to be written.
This method assumes that the writable source allows you to write n number of bytes starting at a random byte location. The FILE and HTTP source types are not writable sources and do not support this method. This method will work if data is stored in a local BLOB or is accessible through a user-defined source plug-in.
None.
ORDSourceExceptions.INCOMPLETE_SOURCE_INFORMATION
This exception is raised if you call the writeToSource( ) method and the value of srcType is NULL and the data is not local.
ORDSourceExceptions.NULL_SOURCE
This exception is raised if you call the writeToSource( ) method and the data is local but the localData value is NULL.
ORDSourceExceptions.METHOD_NOT_SUPPORTED
This exception is raised if you call the writeToSource( ) method and this method is not supported by the source plug-in being used.
ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION
This exception is raised if you call the writeToSource( ) method within a source plug-in when any other exception is raised.
See Appendix H for more information about these exceptions.
Write a buffer to the source:
DECLARE obj ORDSYS.ORDVideo; n INTEGER := 6; ctx RAW(4000) :=NULL; BEGIN select vid into obj from TVID where N =1 for update; obj.writeToSource(ctx,1,n,UTL_RAW.CAST_TO_RAW('helloP')); DBMS_OUTPUT.PUT_LINE(TO_CHAR(obj.getContentLength(ctx))); update TVID set vid = obj where N = 1; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('ORDSourceExceptions.METHOD_NOT_SUPPORTED caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
This section presents reference information on the ORDVideo methods associated with the comments attribute.
appendToComments(amount IN BINARY_INTEGER,
buffer IN VARCHAR2);
Appends a specified buffer and amount of comment data to the end of the comments attribute of the video object.
The amount of comment data to be appended.
The buffer of comment data to be appended.
None.
None.
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
Append comment information to the comments attribute of the video object:
DECLARE obj ORDSYS.ORDVideo; i INTEGER; j INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; obj.writeToComments(1,18,'This is a Comments'); obj.appendToComments(18,'This is a Comments'); DBMS_OUTPUT.PUT_LINE(obj.readFromComments(1,obj.getCommentLength)); DBMS_OUTPUT.PUT_LINE(obj.locateInComments('Comments',1)); obj.trimComments(18); DBMS_OUTPUT.PUT_LINE(obj.readFromComments(1,18)); i := 8; j := 9; obj.eraseFromComments(i,j); DBMS_OUTPUT.PUT_LINE(obj.readFromComments(1,10)); obj.deleteComments; UPDATE TVID SET vid=obj WHERE N=1; COMMIT; EXCEPTION WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('Source not specified'); END; /
writeToComments(offset IN INTEGER,
amount IN BINARY_INTEGER,
buffer IN VARCHAR2);
Writes a specified amount of comment buffer data to the comments attribute of the video object beginning at the specified offset.
The starting offset position in comments where comments data is to be written.
The amount of comment data to be written.
The buffer of comment data to be written.
None.
None.
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
See the example in the appendToComments( ) Method.
readFromComments(offset IN INTEGER,
amount IN BINARY_INTEGER :=32767)
RETURN VARCHAR2;
Reads a specified amount of comment data from the comments attribute of the video object beginning at a specified offset.
The starting offset position in comments from where comments data is to be read.
The amount of comment data to be read.
None.
PRAGMA RESTRICT_REFERENCES(readFromComments, WNDS,
WNPS, RNDS, RNPS)
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
See the example in the appendToComments( ) Method.
locateInComments(pattern IN VARCHAR2,
offset IN INTEGER := 1,
occurrence IN INTEGER := 1)
RETURN INTEGER;
Matches and locates the nth occurrence of the specified pattern of character data in the comments attribute of the video object beginning at a specified offset.
The pattern of comment data for which to search.
The starting offset position in comments where the search for a match should begin.
The nth occurrence in the comments where the pattern of comment data was found.
None.
None.
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
See the example in the appendToComments( ) Method.
trimComments(newlen IN INTEGER);
Trims the length of comments of the video object to the specified new length.
The new length to which the comments are to be trimmed.
None.
None.
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
See the example in the appendToComments( ) Method.
eraseFromComments(amount IN OUT NOCOPY INTEGER,
offset IN INTEGER := 1);
Erases a specified amount of comment data from the comments attribute of the video object beginning at a specified offset.
The amount of comment data to be erased.
The starting offset position in comments where comments data is to be erased.
None.
None.
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
See the example in the appendToComments( ) Method.
deleteComments;
Deletes the comments attribute of the video object.
None.
None.
None.
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
See the example in the appendToComments( ) Method.
loadCommentsFromFile(fileobj IN BFILE,
amount IN INTEGER,
from_loc IN INTEGER := 1,
to_loc IN INTEGER := 1);
Loads a specified amount of comment data from a BFILE into the comments attribute of the video object beginning at a specified offset.
The file object to be loaded.
The amount of comment data to be loaded from the BFILE.
The location from which to load comments from the BFILE.
The location to which to load comments.
None.
None.
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
Load comment information from a BFILE into the comments of the video data:
DECLARE file_handle BFILE; obj ORDSYS.ORDVideo; isopen BINARY_INTEGER; amount INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; --file_handle := BFILENAME(obj.getSourceLocation, obj.getSourceName); file_handle := BFILENAME('VIDEODIR', 'testvid.dat'); isopen := DBMS_LOB.FILEISOPEN(file_handle); IF isopen = 0 THEN --dbms_output.put_line('File Not Open'); DBMS_LOB.FILEOPEN(file_handle, DBMS_LOB.FILE_READONLY); END IF; --dbms_output.put_line('File is now Open'); isopen := DBMS_LOB.FILEISOPEN(file_handle); IF isopen <> 0 THEN amount := DBMS_LOB.GETLENGTH(file_handle); END IF; obj.loadCommentsFromFile(file_handle, 18, 1, 18); dbms_output.put_line(obj.getCommentLength); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; EXCEPTION WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('Source not specified'); END; /
copyCommentsOut(dest IN OUT NOCOPY CLOB,
amount IN INTEGER,
from_loc IN INTEGER := 1,
to_loc IN INTEGER := 1);
Copies a specified amount of video object comments attribute into the given CLOB.
The destination to which the comments are to be copied.
The amount of comments data to be copied.
The location from which to copy the comments.
The location to which to copy the comments.
None.
None.
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
Copy comments of the video data to the given CLOB:
DECLARE file_handle BFILE; obj ORDSYS.ORDVideo; obj1 ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj1 FROM TVID WHERE N=2 FOR UPDATE; SELECT vid INTO obj FROM TVID WHERE N=1; obj.copyCommentsOut(obj1.comments,obj.getCommentLength,1,10); DBMS_OUTPUT.put_line(obj1.getCommentLength); DBMS_OUTPUT.put_line(obj.getCommentLength); UPDATE TVID SET vid=obj1 WHERE N=2; COMMIT; EXCEPTION WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('Source not specified'); END; /
compareComments(compare_with_lob IN CLOB,
amount IN INTEGER := 4294967295,
starting_pos_in_comment IN INTEGER := 1,
starting_pos_in_compare IN INTEGER := 1)
RETURN INTEGER;
Compares a specified amount of comments of video data with comments of the other CLOB provided.
The comparison comments.
The amount of comments of video data to compare with the comparison comments.
The starting position in the comments attribute of the video object.
The starting position in the comparison comments.
None.
PRAGMA RESTRICT_REFERENCES(compareComments, WNDS,
WNPS, RNDS, RNPS)
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
Compare comments of the video data with comments of another CLOB:
DECLARE file_handle BFILE; obj ORDSYS.ORDVideo; obj1 ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N=2 ; SELECT vid INTO obj1 FROM TVID WHERE N=1; DBMS_OUTPUT.put_line('comparison output'); DBMS_OUTPUT.put_line(obj.compareComments(obj1.comments,obj.getCommentLength, 1,18)); EXCEPTION WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.PUT_LINE('Source not specified'); END; /
getCommentLength RETURN INTEGER;
Returns the length of the comments attribute of the video object.
None.
PRAGMA RESTRICT_REFERENCES(getCommentLength, WNDS,
WNPS, RNDS, RNPS)
The exceptions-raised behavior for this method is similar to that of the DBMS_LOB functions and procedures. See the DBMS_LOB package description in the Oracle8i Supplied PL/SQL Packages Reference manual for a list of exceptions that can be raised for the DBMS_LOB functions and procedures.
See the example in the compareComments( ) Method.
This section presents reference information on the ORDVideo methods associated with the video attributes accessors.
setFormat(knownFormat IN VARCHAR2);
Sets the format attribute of the video object.
The known format of the video data to be set in the audio object.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setFormat( ) method and the value for the knownFormat parameter is NULL.
Set the format for some stored video data:
DECLARE obj ORDSYS.ORDVideo; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 FOR UPDATE; DBMS_OUTPUT.PUT_LINE('writing format'); DBMS_OUTPUT.PUT_LINE('--------------'); obj.setFormat('avi'); DBMS_OUTPUT.PUT_LINE(obj.getFormat); UPDATE TVID SET vid=obj WHERE N=1; COMMIT; END; /
getFormat RETURN VARCHAR2;
Returns the value of the format attribute of the video object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getStoredFormat, WNDS,
WNPS, RNDS, RNPS)
VIDEO_FORMAT_IS_NULL
This exception is raised if you call the getFormat( ) method and the value for format is NULL.
See the example in the setFormat( ) Method.
setFrameSize(
knownWidth IN INTEGER,
knownHeight IN INTEGER);
Sets the value of the height and width attributes of the video object.
The frame width in pixels.
The frame height in pixels.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setFrameSize( ) method and the value for either the knownWidth or knownHeight parameter is NULL.
Set the frame size for video data:
DECLARE obj ORDSYS.ORDVideo; BEGIN select vid into obj from TVID where N =1 for update; obj.setFrameSize(1,2); obj.setFrameResolution(4); obj.setFrameRate(5); obj.setVideoDuration(20); obj.setNumberOfFrames(8); obj.setCompressionType('Cinepak'); obj.setBitRate(1500); obj.setNumberOfColors(256); update TVID set vid = obj where N = 1; COMMIT; END; /
getFrameSize(
retWidth OUT INTEGER,
retHeight OUT INTEGER);
Returns the value of the height and width attributes of the video object.
The frame width in pixels.
The frame height in pixels.
None.
PRAGMA RESTRICT_REFERENCES(getFrameSize, WNDS, WNPS, RNDS, RNPS)
None.
Return the frame size for video data:
DECLARE obj ORDSYS.ORDVideo; width INTEGER; height INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 ; obj.getFrameSize(width, height); DBMS_OUTPUT.put_line('width :' || width); DBMS_OUTPUT.put_line('height :' || height); END; /
setFrameResolution(knownFrameResolution IN INTEGER);
Sets the value of the frameResolution attribute of the video object.
The known frame resolution in pixels per inch.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setFrameResolution( ) method and the value for the knownFrameResolution parameter is NULL.
See the example in the setFrameSize( ) Method.
getFrameResolution RETURN INTEGER;
Returns the value of the frameResolution attribute of the video object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getFrameResolution, WNDS,
WNPS, RNDS, RNPS)
None.
Return the value of the frame resolution for the video data:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 ; res := obj.getFrameResolution; DBMS_OUTPUT.put_line('resolution : ' ||res); END; /
setFrameRate(knownFrameRate IN INTEGER);
Sets the value of the frameRate attribute of the video object.
The frame rate.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setFrameRate( ) method and the value for the knownFrameRate parameter is NULL.
See the example in the setFrameSize( ) Method.
getFrameRate RETURN INTEGER;
Returns the value of the frameRate attribute of the video object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getFrameRate, WNDS, WNPS, RNDS, RNPS)
None.
Return the object attribute value of the frame rate for video data stored in the database:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 ; res := obj.getFrameRate; DBMS_OUTPUT.put_line('frame rate : ' ||res); END; /
setVideoDuration(knownVideoDuration RETURN INTEGER);
Sets the value of the videoDuration attribute of the video object.
A known video duration.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setVideoDuration( ) method and the value for the knownVideoDuration parameter is NULL.
See the example in the setFrameSize( ) Method.
getVideoDuration RETURN INTEGER;
Returns the value of the videoDuration attribute of the video object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getVideoDuration, WNDS,
WNPS, RNDS, RNPS)
None.
Return the total time to play the video data:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 ; res := obj.getVideoDuration; DBMS_OUTPUT.put_line('video duration : ' ||res); END; /
setNumberOfFrames(knownNumberOfFrames RETURN INTEGER);
Sets the value of the numberOfFrames attribute of the video object.
A known number of frames.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setNumberOfFrames( ) method and the value for the knownNumberOfFrames parameter is NULL.
See the example in the setFrameSize( ) Method.
getNumberOfFrames RETURN INTEGER;
Returns the value of the numberOfFrames attribute of the video object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getNumberOfFrames, WNDS,
WNPS, RNDS, RNPS)
None.
Return the object attribute value of the total number of frames in the video data:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 ; res := obj.getNumberOfFrames; DBMS_OUTPUT.put_line('number of frames : ' ||res); END; /
setCompressionType(knownCompressionType IN VARCHAR2);
Sets the value of the compressionType attribute of the video object.
A known compression type.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setCompressionType( ) method and the value for the knownCompressionType parameter is NULL.
See the example in the setFrameSize( ) Method.
getCompressionType RETURN VARCHAR2;
Returns the value of the compressionType attribute of the video object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getCompressionType, WNDS,
WNPS, RNDS, RNPS)
None.
Return the object attribute value of the compressionType attribute of the video object:
DECLARE obj ORDSYS.ORDVideo; res VARCHAR2(4000); BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 ; res := obj.getCompressionType; DBMS_OUTPUT.put_line('compression type: ' ||res); END; /
setNumberOfColors(knownNumberOfColors RETURN INTEGER);
Sets the value of the numberOfColors attribute of the video object.
A known number of colors.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setNumberOfColors( ) method and the value for the knownNumberOfColors parameter is NULL.
See the example in the setFrameSize( ) Method.
getNumberOfColors RETURN INTEGER;
Returns the value of the numberOfColors attribute of the video object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getNumberOfColors, WNDS,
WNPS, RNDS, RNPS)
None.
Return the object attribute value of the numberOfColors attribute of the video object:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 ; res := obj.getNumberOfColors; DBMS_OUTPUT.put_line('number of colors: ' ||res); END; /
setBitRate(knownBitRate IN INTEGER);
Sets the value of the bitRate attribute of the video object.
The bit rate.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
NULL_INPUT_VALUE
This exception is raised if you call the setBitRate( ) method and the value for the knownBitRate parameter is NULL.
See the example in the setFrameSize( ) Method.
getBitRate RETURN INTEGER;
Returns the value of the bitRate attribute of the video object.
None.
None.
PRAGMA RESTRICT_REFERENCES(getBitRate, WNDS, WNPS, RNDS, RNPS)
None.
Return the object attribute value of the bitRate attribute of the video object:
DECLARE obj ORDSYS.ORDVideo; res INTEGER; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1 ; res := obj.getBitRate; DBMS_OUTPUT.put_line('bit rate : ' || res ); END; /
setKnownAttributes(
knownFormat IN VARCHAR2,
knownWidth IN INTEGER,
knownHeight IN INTEGER,
knownFrameResolution IN INTEGER,
knownFrameRate IN INTEGER,
knownVideoDuration IN INTEGER,
knownNumberOfFrames IN INTEGER,
knownCompressionType IN VARCHAR2,
knownNumberOfColors IN INTEGER,
knownBitRate IN INTEGER);
Sets the known video attributes for the video data.
The known format.
The known width.
The known height.
The known frame resolution.
The known frame rate.
The known video duration.
The known number of frames.
The known compression type.
The known number of colors.
The known bit rate.
Calling this method implicitly calls the setUpdateTime( ) method.
None.
None.
Set the property information for all known attributes for video data:
DECLARE obj ORDSYS.ORDVideo; BEGIN select vid into obj from TVID where N =1 for update; obj.setKnownAttributes('MOOV',1,2,4,5,20,8,'Cinepak', 256, 1500); DBMS_OUTPUT.put_line('width: ' || TO_CHAR(obj.width)); DBMS_OUTPUT.put_line('height: ' || TO_CHAR(obj.height)); DBMS_OUTPUT.put_line('format: ' || obj.getFormat); DBMS_OUTPUT.put_line('frame resolution: ' ||TO_CHAR(obj.getFrameResolution)); DBMS_OUTPUT.put_line('frame rate: ' || TO_CHAR(obj.getFrameRate)); DBMS_OUTPUT.put_line('video duration: ' || TO_CHAR(obj.getVideoDuration)); DBMS_OUTPUT.put_line('number of frames: ' || TO_CHAR(obj.getNumberOfFrames)); DBMS_OUTPUT.put_line('compression type: ' || obj.getCompressionType); DBMS_OUTPUT.put_line('bite rate: ' || TO_CHAR(obj.getBitRate)); DBMS_OUTPUT.put_line('number of colors: ' || TO_CHAR(obj.getNumberOfColors)); update TVID set vid = obj where N = 1; COMMIT; END; /
setProperties(ctx IN OUT RAW);
Reads the video data to get the values of the object attributes and then stores them in the object. For the known attributes that ORDVideo understands, it sets the properties for these attributes, which include: format, frame size, frame resolution, frame rate, video duration, number of frames, compression type, number of colors, and bit rate.
The format plug-in context information.
If the property cannot be extracted from the media source, then the respective attribute is set to NULL.
If the format is set to NULL, then the setProperties( ) method uses the default format plug-in; otherwise, it uses your user-defined format plug-in.
None.
VIDEO_PLUGIN_EXCEPTION
This exception is raised if you call the setProperties( ) method and the video plug-in raises an exception when calling this method.
Set the property information for known video attributes:
DECLARE obj ORDSYS.ORDVideo; ctx RAW(4000) :=NULL; BEGIN select vid into obj from TVID where N =1 for update; obj.setProperties(ctx); update TVID set vid = obj where N = 1; COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line('exception raised'); END; /
setProperties(ctx IN OUT RAW,
setComments IN BOOLEAN);
Reads the video data to get the values of the object attributes and then stores them in the object. For the known attributes that ORDVideo understands, it sets the properties for these attributes, which include: format, frame size, frame resolution, frame rate, video duration, number of frames, compression type, number of colors, and bit rate. It populates the comments field of the object with a rich set of format and application properties in XML form if the value of the setComments parameter is TRUE.
The format plug-in context information.
If the value is TRUE, then the comments field of the object is populated with a rich set of format and application properties of the video object in XML form, identical to what is provided by the interMedia Annotator utility; otherwise, if the value is FALSE, the comments field of the object remains unpopulated. The default value is FALSE.
If the property cannot be extracted from the media source, then the respective attribute is set to NULL.
If the format is set to NULL, then the setProperties( ) method uses the default format plug-in; otherwise, it uses your user-defined format plug-in.
None.
VIDEO_PLUGIN_EXCEPTION
This exception is raised if you call the setProperties( ) method and the video plug-in raises an exception when calling this method.
Set the property information for known video attributes:
DECLARE obj ORDSYS.ORDVideo; ctx RAW(4000) :=NULL; BEGIN select vid into obj from TVID where N =1 for update; obj.setProperties(ctx,0); update TVID set vid = obj where N = 1; COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line('exception raised'); END; /
checkProperties(ctx IN OUT RAW) RETURN BOOLEAN;
Checks all the properties of the stored video data, including the following video attributes: format, frame size, frame resolution, frame rate, video duration, number of frames, compression type, number of colors, and bit rate.
The format plug-in context information.
If the format is set to NULL, then the checkProperties( ) method uses the default format plug-in; otherwise, it uses your user-defined format plug-in.
The checkProperties( ) method does not check the MIME type because a file can have multiple correct MIME types and this is not well defined.
None.
VIDEO_PLUGIN_EXCEPTION
This exception is raised if you call the checkProperties( ) method and the video plug-in raises an exception when calling this method.
Check property information for known video attributes:
DECLARE obj ORDSYS.ORDVideo; ctx RAW(4000) :=NULL; BEGIN select vid into obj from TVID where N =1 ; if (obj.checkProperties(ctx)) then DBMS_OUTPUT.put_line('check Properties returned true'); else DBMS_OUTPUT.put_line('check Properties returned false'); end if; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line('exception raised'); END; /
getAttribute(
ctx IN OUT RAW,
name IN VARCHAR2)
RETURN VARCHAR2;
Returns the value of the requested attribute from video data for user-defined formats only.
The format plug-in context information.
The name of the attribute.
The video data attributes are available from the header of the formatted video data.
If the format is set to NULL, then the getAttribute( ) method uses the default format plug-in; otherwise, it uses your user-defined format plug-in.
Video data attribute information can be extracted from the video data itself. You can extend support to a video format that is not understood by the ORDVideo object by implementing an ORDPLUGINS.ORDX_<format>_VIDEO package that supports that format. See Section 2.3.13 for more information.
None.
VIDEO_PLUGIN_EXCEPTION
This exception is raised if you call the getAttribute( ) method and the video plug-in raises an exception when calling this method.
Return information for the specified video attribute for video data stored in the database:
DECLARE obj ORDSYS.ORDVideo; res VARCHAR2(4000); ctx RAW(4000) :=NULL; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1; DBMS_OUTPUT.PUT_LINE('getting video duration'); DBMS_OUTPUT.PUT_LINE('---------------------'); res := obj.getAttribute(ctx,'video_duration'); EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('Source METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('SOURCE PLUGIN EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('VIDEO METHOD_NOT_SUPPORTED EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('VIDEO PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('EXCEPTION caught'); END; /
getAllAttributes(
ctx IN OUT RAW,
attributes IN OUT NOCOPY CLOB);
Returns a formatted string for convenient client access. For natively supported formats, the string includes the following list of audio data attributes separated by a comma (','): width, height, format, frameResolution, frameRate, videoDuration, numberOfFrames, compressionType, numberOfColors, and bitRate. For user-defined formats, the string is defined by the format plug-in.
The format plug-in context information.
The attributes.
These video data attributes are available from the header of the formatted video data.
If the format is set to NULL, then the getAllAttributes( ) method uses the default format plug-in; otherwise, it uses your user-defined format plug-in.
Video data attribute information can be extracted from the video data itself. You can extend support to a video format that is not understood by the ORDVideo object by implementing an ORDPLUGINS.ORDX_<format>_VIDEO package that supports that format. See Section 2.3.13 for more information.
None.
METHOD_NOT_SUPPORTED
This exception is raised if you call the getAllAttributes( ) method and the video plug-in raises an exception when calling this method.
Return all video attributes for video data stored in the database:
DECLARE obj ORDSYS.ORDVideo; tempLob CLOB; ctx RAW(4000) :=NULL; BEGIN SELECT vid INTO obj FROM TVID WHERE N=1; DBMS_OUTPUT.PUT_LINE('getting comma separated list of all attributes'); DBMS_OUTPUT.PUT_LINE('---------------------------------------------'); DBMS_LOB.CREATETEMPORARY(tempLob, FALSE, DBMS_LOB.CALL); obj.getAllAttributes(ctx,tempLob);
DBMS_OUTPUT.put_line(DBMS_LOB.substr(tempLob, DBMS_LOB.getLength(tempLob), 1));
EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('Source METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('SOURCE PLUGIN EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('VIDEO METHOD_NOT_SUPPORTED EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('VIDEO PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION CAUGHT'); END; /
This section presents reference information on the ORDVideo methods associated with processing video data.
processVideoCommand(
ctx IN OUT RAW,
cmd IN VARCHAR2,
arguments IN VARCHAR2,
result OUT RAW)
RETURN RAW;
Allows you to send a command and related arguments to the format plug-in for processing.
The format plug-in context information.
Any command recognized by the format plug-in.
The arguments of the command.
The result of calling this function returned by the format plug-in.
Use this method to send any video commands and their respective arguments to the format plug-in. Commands are not interpreted; they are taken and passed through to a format plug-in to be processed.
If the format is set to NULL, then the processVideoCommand( ) method uses the default format plug-in; otherwise, it uses your user-defined format plug-in.
You can extend support to a format that is not understood by the ORDVideo object by preparing an ORDPLUGINS.ORDX_<format>_VIDEO package that supports that format. See Section 2.3.13 for more information.
None.
METHOD_NOT_SUPPORTED or VIDEO_PLUGIN_EXCEPTION
Either exception is raised if you call the ProcessVideoCommand( ) method and the video plug-in raises an exception when calling this method.
Process a set of commands:
DECLARE obj ORDSYS.ORDVideo; res RAW(4000); result RAW(4000); command VARCHAR(4000); argList VARCHAR(4000); ctx RAW(4000) :=NULL; BEGIN select vid into obj from TVID where N =1 for UPDATE; -- assign command -- assign argList res := obj.processVideoCommand (ctx, command, argList, result); UPDATE TVID SET vid=obj WHERE N=1 ; COMMIT; EXCEPTION WHEN ORDSYS.ORDSourceExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('Source METHOD_NOT_SUPPORTED caught'); WHEN ORDSYS.ORDSourceExceptions.SOURCE_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('SOURCE PLUGIN EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.METHOD_NOT_SUPPORTED THEN DBMS_OUTPUT.put_line('VIDEO METHOD_NOT_SUPPORTED EXCEPTION caught'); WHEN ORDSYS.ORDVideoExceptions.VIDEO_PLUGIN_EXCEPTION THEN DBMS_OUTPUT.put_line('VIDEO PLUGIN EXCEPTION caught'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('EXCEPTION caught'); END; /
This section presents reference information on the packages or PL/SQL plug-ins provided. Table 6-1 describes the PL/SQL plug-in packages provided in the ORDPLUGINS schema.
Section 6.4.1 describes the ORDPLUGINS.ORDX_DEFAULT_VIDEO package, the methods supported, and the level of support. Note that the methods supported and the level of support for the other PL/SQL plug-in packages described in Table 6-1 are identical for all plug-in packages, therefore, refer to Section 6.4.1.
Use the following provided ORDPLUGINS.ORDX_DEFAULT_VIDEO package as a guide in developing your own ORDPLUGINS.ORDX_<format>_VIDEO video format package. This package sets the mimeType field in the setProperties( ) method with a MIME type value that is dependent on the file format.
CREATE OR REPLACE PACKAGE ORDX_DEFAULT_VIDEO authid current_user AS --VIDEO ATTRIBUTES ACCESSORS FUNCTION getFormat(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN VARCHAR2; FUNCTION getAttribute(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo, name IN VARCHAR2) RETURN VARCHAR2; PROCEDURE getFrameSize(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo, width OUT INTEGER, height OUT INTEGER); FUNCTION getFrameResolution(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER; FUNCTION getFrameRate(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER; FUNCTION getVideoDuration(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER; FUNCTION getNumberOfFrames(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER; FUNCTION getCompressionType(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN VARCHAR2; FUNCTION getNumberOfColors(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER; FUNCTION getBitRate(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER; PROCEDURE setProperties(ctx IN OUT RAW, obj IN OUT NOCOPY ORDSYS.ORDVideo, setComments IN NUMBER := 0); FUNCTION checkProperties(ctx IN OUT RAW,obj IN ORDSYS.ORDVideo) RETURN NUMBER; -- must return name=value; name=value; ... pairs PROCEDURE getAllAttributes(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo, attributes IN OUT NOCOPY CLOB); -- VIDEO PROCESSING METHODS FUNCTION processCommand( ctx IN OUT RAW, obj IN OUT NOCOPY ORDSYS.ORDVideo, cmd IN VARCHAR2, arguments IN VARCHAR2, result OUT RAW) RETURN RAW; PRAGMA RESTRICT_REFERENCES(getFormat, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getAttribute, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getFrameSize, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getFrameResolution, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getFrameRate, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getVideoDuration, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getNumberOfFrames, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getCompressionType, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getNumberOfColors, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getBitRate, WNDS, WNPS, RNDS, RNPS); END; /
Table 6-2 shows the methods supported in the ORDPLUGINS.ORDX_DEFAULT_VIDEO package and the exceptions raised if you call a method that is not supported.
Extending interMedia to support a new video data format consists of four steps:
Section 2.3.12 briefly describes how to extend interMedia to support a new video data format and describes the interface. A package body listing is provided in Example 6-1 to assist you in this operation. Add your variables to the places that say "--Your variables go here" and add your code to the places that say "--Your code goes here".
See Section F.3 for more information on installing your own video format plug-in and running the sample scripts provided.
CREATE OR REPLACE PACKAGE BODY ORDX_MY_VIDEO AS --VIDEO ATTRIBUTES ACCESSORS FUNCTION getFormat(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN VARCHAR2 IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getAttribute(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo, name IN VARCHAR2) RETURN VARCHAR2 IS --Your variables go here BEGIN --Your code goes here END; PROCEDURE getFrameSize(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo, width OUT INTEGER, height OUT INTEGER) IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getFrameResolution(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getFrameRate(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getVideoDuration(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getNumberOfFrames(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getCompressionType(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN VARCHAR2 IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getNumberOfColors(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getBitRate(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN INTEGER IS --Your variables go here BEGIN --Your code goes here END; PROCEDURE setProperties(ctx IN OUT RAW, obj IN OUT NOCOPY ORDSYS.ORDVideo, setComments IN NUMBER :=0) IS --Your variables go here BEGIN --Your code goes here END; FUNCTION checkProperties(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN NUMBER IS IS --Your variables go here BEGIN --Your code goes here END; PROCEDURE getAllAttributes(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo, attributes IN OUT NOCOPY CLOB) IS --Your variables go here BEGIN --Your code goes here END; -- VIDEO PROCESSING METHODS FUNCTION processCommand( ctx IN OUT RAW, obj IN OUT NOCOPY ORDSYS.ORDVideo, cmd IN VARCHAR2, arguments IN VARCHAR2, result OUT RAW) RETURN RAW IS --Your variables go here BEGIN --Your code goes here END; END; / show errors;
|
![]() Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
|