イメージ、オーディオ、およびビデオ・エクステンダー 管理およびプログラミングの手引き

ユーザー指定の属性をもつオブジェクトの保管

画像、音声、ビデオのオブジェクトを保管する場合、形式は、エクステンダーが解釈できるものだけには限定されません。 つまり、独自の形式を指定することができます。 その場合、エクステンダーはその形式を認識できませんので、ソース・オブジェクトの属性をユーザーが指定する必要があります。 属性値は、属性構造体に割り当ててください。 属性構造体は、UDF の LONG VARCHAR FOR BIT DATA 変数のデータ・フィールドに保管しなければなりません。

サーバー上の UDF コードは常に、"ビッグ・エンディアン形式" のデータを期待します。 ビッグ・エンディアン形式とは、ほとんどの UNIX プラットフォームで使用される形式です。 オブジェクトを "リトル・エンディアン形式" で保管する場合、サーバー上の UDF コードが正しく処理できるように、ユーザー指定の属性データを作成する必要があります。 リトル・エンディアン形式は、Intel(R) および他のマイクロプロセッサー・プラットフォームで一般に使用されている形式です。 (オブジェクトをリトル・エンディアン形式で保管していないとしても、ユーザー指定の属性を作成するのは良いことです。) 画像オブジェクトの属性を作成するには DBiPrepareAttrs API を使用します。 音声オブジェクトの属性を作成するには DBaPrepareAttrs API を使用します。 ビデオ・オブジェクトの属性を作成するには DBvPrepareAttrs API を使用してください。

たとえば、C アプリケーション・プログラムの次のステートメントでは、画像を含む行をデータベース表に保管します。 サーバー・ファイルにあるソース画像は、高さが 640 ピクセル、幅が 480 ピクセルのユーザー定義形式です。 属性は画像の保管前に作成されることに注意してください。

EXEC SQL BEGIN DECLARE SECTION;
long hvStorageType;
struct {
       short len;
       char data[400];
       }hvImgattrs;
EXEC SQL END DECLARE SECTION;
 
DB2IMAGEATTRS    *pimgattr;
 
hvStorageType=MMDB_STORAGE_TYPE_INTERNAL;
 
pimgattr = (DB2IMAGEATTRS *) hvImgattrs.data;
strcpy(pimgattr>format,"FormatI");
pimgattr>width=640;
pimgattr>height=480;
hvImgattrs.len=sizeof(DB2IMAGEATTRS);
 
DBiPrepareAttrs(pimgattr);
 
DBEXEC SQL INSERT INTO EMPLOYEE VALUES(
        '128557',
        'Anita Jones',
        DB2IMAGE(
          CURRENT SERVER,
          '/employee/images/ajones.bmp',
          :hvStorageType,
          'Anita''s picture',
          :hvImgattrs,                   /* user-specified attributes */
          CAST(NULL as LONG VARCHAR)
       );

C アプリケーション・プログラムの次のステートメントでは、音声クリップを含む行をデータベース表に保管します。 サーバー・ファイルにある音声クリップは、サンプリング率が 44.1 kHz で、2 つのチャネルに録音されたユーザー定義形式です。 オーディオ・クリップは MIDI ではないので、トラック名および楽器に対して空ストリングが指定されます。

EXEC SQL BEGIN DECLARE SECTION;
long hvStorageType;
struct (
       short len;
       char data[600];
}hvAudattr;
EXEC SQL END DECLARE SECTION;
 
MMDBAudioAttrs          *paudiattr;
 
hvStorageType=MMDB_STORAGE_TYPE_INTERNAL;
 
paudioattr=(MMDBAudioAttrs *) hvAudattr.data;
strcpy(paudioAttr>cFormat,"FormatA");
paudioAttr>ulSamplingRate=44100;
paudioAttr>usNumChannels=2;
hvAudattrs.len=sizeof(MMDBAudioAttrs);
 
DBaPrepareAttrs(paudioAttr);
 
EXEC SQL INSERT INTO EMPLOYEE VALUES(
        '128557',
        'Anita Jones',
        DB2AUDIO(
          CURRENT SERVER,
          '/employee/sounds/ajones.aud',
          :hvStorageType,
          'Anita''s voice',
          :hvAudattr)                   /* user-specified attributes */
       );


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]