The Media Kit Table of Contents     The Media Kit Index

BMediaDecoder

Derived from: none

Declared in: be/media/MediaDecoder.h

Library: libmedia.so

Summary

 BMediaDecoderクラスは、decoderクラスが派生する基底クラスです。これは適切なdecoder add-onを配置し、そのインターフェイス処理を行う作業の全てを扱います。あなたがしなければならないのは、処理されるエンコードされたデータの次のチャンクを取りだすために、GetNextChunk()関数を実装することだけです。

 BMediaBufferDecoderクラスが提供されています。このクラスは、メモリバッファからデータを返すようGetNextChunk()の実装された派生クラスです。

 ファイルに由来しないデータのストリームをデコードすることを望むアプリケーションは、(BMediaBufferDecoderといった)BMediaDecoderのサブクラスを使用して下さい。


Hook Functions

GetNextChunk()


Constructor and Destructor


BMediaDecoder()

                                                         
  

BMediaDecoder()

BMediaDecoder(const media_format *inFormat,
      const void *info = NULL, size_t infoSize = 0)

 このコンストラクタは、BMediaDecoderをセットアップします。もし引数を取らないコンストラクタを使用する場合は、Decode()を呼び出す前に、エンコードされるフォーマットを確立するためにSetTo()を呼び出さなければなりません。

 2つ目のコンストラクタは、media_format構造体であるinFormatを引数に取ります。これは、decoderに入力されるメディアデータのタイプを示します。infoが指定されている場合、これはnodeに関する文字情報によって満たされます。あなたはバッファをinfoSizeバイトの長さに指定しなければなりません。

 3つ目のコンストラクタは、media_codec_info構造体であるmciを引数に取ります。これは、どのcodecが使用されるかを決定します。

 
もしmedia_formatまたはmedia_codec_infoを引数に取るコンストラクタを使用する場合、このクラスの他の関数を使用する前に、コンストラクトが問題なく行われたことを保証するためにInitCheck()を呼び出さなければなりません。



~BMediaDecoder()

                                                         
  

virtual ~BMediaDecoder()

 BMediaDecoderによって使用されるdecoder add-onを解放します。


Member Functions


Decode()

                                                         
  

status_t Decode(void *outBuffer, int64 *outFrameCount,
      media_header *outMH, media_decode_info *info)

 メディアデータをデコードし、outBufferによって指定される出力バッファに送ります。関数が返る際には、データのフレームがいくつデコードされたかを示すようにoutFrameCountが設定され、outMHはデコードされたバッファに関するヘッダとなります。

 media_decode_info構造体であるinfoは、入力時にdecoding parameterを特定するために使用されます。

 デコードされたデータ量は、SetTo()またはSetInputFormat()によって指定されたフォーマットの一部にあります。オーディオについては、buffer_sizeが表します。ビデオについては、height*row_bytesのひとつのフレームです。デコードされるデータは、decoder add-onが派生クラスのGetNextChunk()関数を呼び出して得るsourceから取りだされます。

RETURN CODES


GetDecoderInfo()

                                                         
  

status_t GetDecoderInfo(media_codec_info *outInfo) const

 media_codec_info構造体であるoutInfoを、BMediaDecoderによって使用されているdecoderに関する情報で満たします。

RETURN CODES


GetNextChunk()

protected:

                                                         
  

status_t GetNextChunk(const void **chunkData, size_t *chunkLen,
      media_header *mh) = 0

 派生クラスでは、sourceからメディアデータを取り出すために、この関数を実装しなければなりません。メディアデータの次のチャンクへのポインタをchunkDataに入れ、バッファの大きさをchunkLenに渡して下さい。media_header構造体であるmhは、チャンクを取り出している間に使用することのできる情報を提供します。

 このフックは、sourceからデータを取り出すために、decoder add-onに呼び出されます。

 もしチャンクが安全に取り出せたら、B_OKを返し、そうでなければ適切なエラーコードを返して下さい。


InitCheck()

                                                         
  

status_t InitCheck(void) const

 コンストラクトが問題なく行われたかどうかを示すstatus_tの値を返します。コンストラクトの後、他のBMediaDecoderの関数を呼び出す前に、この関数を呼び出して下さい。

RETURN CODES


SetInputFormat() , SetOutputFormat

                                                         
  

status_t SetInputFormat(const media_format *inFormat,
      const void *info = NULL, size_t infoSize = 0)

status_t SetOutputFormat(media_format *outputFormat)

 SetInputFormat()は、inFormatに入力データのフォーマットを設定します。関数が返る際には、(もしNULLが指定されていなければ)decoderが提供したいテキストによる情報がなんであるかを内包するように、infoがdecoderによって満たされます。infoSizeは、infoポインタによって指定されるバッファの大きさを示さなければなりません。

 SetTo()と違い、SetInputFormat()関数はcodecを選択しないため、現在選択されているcodecが続けて使用されます。他のdecoderがそのcodecを使用するように要求しない場合は、フォーマット設定を洗練させるためにだけ、SetInputFormat()を使用して下さい。

 SetOutputFormat()は、decoderが出力するフォーマットを設定します。この関数が返される際には、outputFormatが出力される実際のフォーマットに一致するように変更されます。これはワイルドカードを指定した場合、異なることがあります。

RETURN CODES


SetOutputFormat() see SetInputFormat()


SetTo()

                                                         
  

status_t SetTo(const media_format *inFormat,
      const void *info = NULL, size_t infoSize = 0

status_t SetTo(const media_codec_info *mci)

 SetTo()は、BMediaDecoderオブジェクトによってデコードされるメディアデータのフォーマットを設定します。これによってBMediaDecoderは適切なcodecを使用するために配置することができます。

 最初の形式は、media_format構造体であるinFormatを引数に取ります。inFormatは、decoderに入力されるメディアデータのタイプを示します。infoが指定されている場合、それはnodeに関するテキスト情報によって満たされます。バッファをinfoSizeバイトの長さに指定しなければなりません。

 SetTo()の二つ目の形式は、media_codec_info構造体であるmciを引数に取ります。mciは、どのcodecが使用されるかを決定します。

RETURN CODES


The Media Kit Table of Contents     The Media Kit Index


The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..