The Media Kit Table of Contents     The Media Kit Index

BMediaFormats

Derived from: none

Declared in: be/media/MediaFormats.h

Library: libmedia.so

Allocation: Constructor only

Summary

 BMediaFormatクラスは、BeOSのメディアフォーマットの識別子と、codec自身によって使用される識別子との間の変換の手段を提供します。これは、主としてcodec add-onまたはファイルフォーマットのパーサを書いている場合に便利です。


Supported Families

 BMediaFormatsクラスは、現在のところ下記のフォーマットを扱うcodecの同定方法間の変換手法を知っています :

  • BeOS
    BeOSは、扱われているメディアのkindを示すmedia_format構造体の中の定数を使用します。

  • QuickTime
    QuickTimeは、メディアのタイプを示すために2ワードのvendor/codecのペアを使用します。

  • AVI
    メディアフォーマットは、1ワードの定数で示されます。

  • AVR
    メディアフォーマットは、1ワードの定数で示されます。

  • ASF
    メディアフォーマットは、128ビットのUUID値で示されます。

  • MPEG
    メディアフォーマットは、MPEGのバージョン及びレイヤーを示すワードによって指定されます。

  • AIFF
    メディアフォーマットは、codecのIDワードによって指定されます。

  • WAV
    メディアフォーマットは、codecのIDワードによって指定されます。

  • Miscellaneous
    メディアフォーマットは、1ワードのファイルフォーマットの値と1ワードのcodecのIDによって示されます。


    Constructor and Destructor


    BMediaFormats()

                                                             
      

    BMediaFormats(void)

     コンストラクタです。インスタンスが生成された後、オブジェクトが適切に初期化されたことを確認するためにInitCheck()を呼び出して下さい。


    ~BMediaFormats()

                                                             
      

    virtual ~BMediaFormats(void)

     デストラクタです。


    Member Functions


    GetBeOSFormatFor() , GetAVIFormatFor() , GetQuicktimeFormatFor()

                                                             
      

    status_t GetBeOSFormatFor(uint32 format,
          media_format *outFormat,
          media_type type = B_MEDIA_UNKNOWN_TYPE)

    status_t GetAVIFormatFor(uint32 format,
          media_format *outFormat,
          media_type type = B_MEDIA_UNKNOWN_TYPE)

    status_t GetQuicktimeFormatFor(uint32 vendor, uint32 codec,
          media_format *outFormat,
          media_type type = B_MEDIA_UNKNOWN_TYPE)

     GetBeOSFormatFor()は、与えられたBeOSのformatのID及びmedia_typeに対応するメディアフォーマットを記述するmedia_format構造体を、outFormatに返します。

     GetAVIFormatFor()は、与えられたAVIのformatのID及びmedia_typeに対応するメディアフォーマットを記述するmedia_format構造体を、outFormatに返します。

     GetQuicktimeormatFor()は、与えられたQuickTimeのvendor ID、codec ID及びmedia_typeに対応するメディアフォーマットを記述するmedia_format構造体を、outFormatに返します。

    RETURN CODES

    B_OK. エラーなし。


    GetCodeFor()

                                                             
      

    status_t GetCodeFor(const media_format &format,
          media_format_family family,
          media_format_description *outDescription)

     指定されたメディアのformatを与えられることによって、指定されたフォーマットのfamilyを記述するメディアフォーマットをoutDescriptionに返します。

    RETURN CODES

    B_OK. エラーなし。


    GetFormatFor()

                                                             
      

    status_t GetFormatFor(const media_format_description &description
          
    media_format *outFormat)

     descriptionによって指定されるメディアフォーマットを記述するmedia_format構造体を、outFormatに返します。これによって、ファイル独自の記述情報から容易にmedia_format構造体を得ることができます。

    RETURN CODES

    B_OK. エラーなし。


    GetNextFormat()

                                                             
      

    status_t GetNextFormat(media_format *outFormat,
          media_format_description *outDescription)

     サポートされた次のメディアフォーマットのmedia_formatとmedia_format_descriptionで、outFormat及びoutDescriptionを満たします。

    RETURN CODES

    B_OK. エラーなし。


    InitCheck()

                                                             
      

    status_t InitCheck(void)

     コンストラクタからの状態コードを返します。他の呼び出しを発行する前に、オブジェクトが適切に初期化されたことを確認するためにこの関数を呼び出して下さい。

    RETURN CODES

    B_OK. オブジェクトは使用準備が整っている。


    Lock() , Unlock()

                                                             
      

    bool Lock(void)

    void Unlock(void)

     Lock()は、BMediaFormatsオブジェクトをロックします。これによって、作業している間にそれが変化しないと信頼して、そのオブジェクトを使用することができます。

     Unlock()は、そのオブジェクトを用いた作業が終了したらBMediaFormatsオブジェクトを解放します。作業が完了する際には、必ずこの関数を呼び出して下さい。

     
    RewindFormats()及びGetNextFormat()を使用する際のみ、Lock()及びUnlock()する必要があります。



    MakeFormatFor()

                                                             
      

    status_t MakeFormatFor(const media_format_description *descriptions,
          int32 descCount,
          media_format *ioFormat,
          uint32 flags = 0, void *_reserved = 0)

     配列descriptionsにメディアフォーマットの記述を与え、そのリストの記述数をdescCountに与え、そしてmedia_formatであるioFormatを与えることで、この関数はフォーマットの記述とMedia Kitにサポートされるmedia_formatを登録し、それ以降に使用可能なmedia_formatを返します。

     この関数は、Media Serverに、エンコードしている値をあなたのmedia_format_descriptionに割り当てさせるために呼び出されます。もしあなたがcodec add-onまたはファイルパーサを実装しているなら、あなたが何を扱うかMedia Kitに知らせるためにこの関数を呼び出して下さい。
    (訳注 : 訳に自信なし)

    RETURN CODES

    B_OK. エラーなし。


    RewindFormats()

                                                             
      

    status_t RewindFormats(void)

     フォーマットのスキャンを、サポートされるフォーマットの最初にリセットします。これにより、GetNextFormat()はリストの最初から開始されることになります。

    RETURN CODES

    B_OK. オブジェクトは使用する準備ができている。


    Unlock() see Lock()


    Constants


    make_format_flags

    Declared in: <be/media/MediaFormats.h>

    Constant Meaning
    B_EXCLUSIVE もしこのフォーマットがすでに登録されていれば失敗する。
    B_NO_MERGE もし以前登録されているものと複数の(番号の)衝突があれば、フォーマットを再度番号付けせず、その代りに失敗する。
    B_SET_DEFAULT 同じfamilyに一つ以上の登録が行われる際に、最初のフォーマットをフォーマットのfamilyのデフォルトにする。

     これらの定数は、新しいフォーマットの追加に取りかかる方法についてのオプションを提供します。


    Media , Format , Families

    Declared in: <be/media/MediaDefs.h>

    Constant Meaning
    B_ANY_FORMAT_FAMILY 全てのfamily。
    B_BEOS_FORMAT_FAMILY BeOSフォーマット。
    B_QUICKTIME_FORMAT_FAMILY QuickTimeフォーマット。
    B_AVI_FORMAT_FAMILY AVIフォーマット。
    B_ASF_FORMAT_FAMILY ASFフォーマット。
    B_MISC_FORMAT_FAMILY その他(MPEGを含む)

     これらの定数は、BMediaFormatsクラスがマップできるメディアフォーマットのfamilyを示します。


    Defined Types


    media_aiff_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          uint32 codec;
       } media_aiff_description;

     メディアデータのフォーマットを、AIFF codec IDで記述します。


    media_asf_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          GUID guid;
       } media_asf_description;

     メディアデータのフォーマットを、128ビットのASF GUIDで記述します。


    media_avi_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          uint32 codec;
       } media_avi_description;

     メディアデータのフォーマットを、AVI codec IDで記述します。


    media_avr_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          uint32 id;
       } media_avr_description;

     メディアデータのフォーマットを、AVR codec IDで記述します。


    media_beos_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          int32 format;
       } media_beos_description;

     メディアデータのフォーマットを、BeOSのMedia Kitが理解し、正しく評価できる方法で記述します。formatフィールドは、あらかじめ決められた意味を持ちません。それはMedia Kitのみが理解するマジックナンバーです。


    media_codec_info

    Declared in: <be/media/MediaFormats.h>

       
       struct encoder_info {
          char pretty_name[96];
          char short_name[32];
       
          int32 id;
          int32 sub_id;
       
          int32 pad[63];
       };

     エンコーダに関する情報を提供します。pretty_nameは、(例えば"SuperSqueeze by Applied Interdynamic Systems, Inc."等といった)人間に読むことのできる完全な名前であり、short_nameは、("SuperSqueeze"等の)短い形式のエンコーダの名前です。

     idは、BMediaFile::AddTrack()に渡される不透明なID番号であり、これによってトラックはエンコーダを識別することができます。

     padは、構造体が将来拡張できるように予約されたスペースです。


    media_file_format_info

    Declared in: <be/media/MediaFormats.h>

       
       struct media_file_format_info {
          char mimetype[64];
          char pretty_name[64];
          char short_name[32];
          char file_extension[8];
       
          media_format_family family;
       
          int64 capabilities;
          int32 id;
       
          int32 pad[64];
       };

     メディアファイルフォーマットを記述します。この構造体は、使用されているメディアファイルのタイプを決定するためにBMediaFileオブジェクトを使用する際に使われます。


    media_format_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct _media_format_description {
       #if defined(__cplusplus)
          _media_format_description();
          ~_media_format_description();
          _media_format_description(const _media_format_description &other);
          _media_format_description & operator=(const _media_format_description
                &other);
       #endif
          media_format_family family;
          uint32 _reserved_[3];
          union {
             media_beos_description beos;
             media_quicktime_description quicktime;
             media_avi_description avi;
             media_asf_description asf;
             media_mpeg_description mpeg;
             media_wav_description wav;
             media_aiff_description aiff;
             media_misc_description misc;
             media_avr_description avr;
             uint32 _reserved_[12];
          } u;
       } media_format_description;

     メディアフォーマットを記述します。familyは、記述がフォーマットを認識するのに使用するmedia familyがユニオンの中のどれか示します。


    media_misc_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          uint32 file_format;
          uint32 codec;
       } media_misc_description;

     その他のメディアファイルのフォーマットを記述します。


    media_mpeg_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          uint32 id;
       } media_mpeg_description;

     メディアデータのフォーマットをMPEGのフォーマットIDとして記述します。これは下記の値を取ることができます :


    media_quicktime_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          uint32 file_format;
          uint32 codec;
       } media_misc_description;

     メディアデータのフォーマットを、ファイルフォーマット/codecのペアで記述します。


    media_wav_description

    Declared in: <be/media/MediaFormats.h>

       
       typedef struct {
          uint32 codec;
       } media_wav_description;

     メディアデータのフォーマットを、WAVのcodec IDで記述します。


    Global C Functions


    does_file_accept_format()

                                                             
      

    bool does_file_accept_format(const media_file_format *mfi,
          const media_format *format)

     もし与えられたmedia_file_formatが指定されたmedia_formatでデータを内包できるなら、trueを返します。そうでなければ、falseが返されます。


    get_next_encoder()

                                                             
      

    status_t get_next_encoder(int32 *cookie,
          media_file_format *mfi,
          media_format *outputFormat,
          media_codec_info *codecInfo)

    status_t get_next_encoder(int32 *cookie,
          media_file_format *mfi,
          media_format *inputFormat,
          media_format *outputFormat,
          media_codec_info *codecInfo,
          media_format *acceptedInputFormat,
          media_format *acceptedOutputFormat)

    status_t get_next_encoder(int32 *cookie,
          media_codec_info *codecInfo)

     メディアファイルのフォーマットを記述するmedia_file_formatのmfi、要求された出力フォーマットを記述するmedia_formatのoutputFormat、及びオプションとして要求された入力フォーマットを記述するmedia_formatのinputFormatが与えられると、そのフォーマットを扱う能力のある次のエンコーダに関する情報をcodecInfoに返します。

     cookieポインタによって示されるint32の値に、最初は0をセットして下さい。そして全ての利用可能なエンコードをスキャンするために、同じポインタをget_next_encoder()を呼び出すたびに渡して下さい。チェックするべきエンコーダがもう残っていないときは、B_BAD_INDEXが返されます。

     もしこの関数の2つ目の形式を使用するなら、関数が返る際に、media_format構造体のacceptedInputFormat及びacceptedOutputFormatがcodecの受け入れるフォーマットを示すように満たされます。この関数のこの形式はワイルドカードをサポートしますが、最初は形式はサポートしません。

     この関数の3番目の形式は特異度が低く、完全なcodecのリストを得るために使用できます。これは、ユーザが自分の使用したいcodecの選択を許可するユーザインターフェイスをあなたがコンストラクトする際に、codecが生成できる全ての利用可能なフォーマットの全リストを得るのに便利でしょう。

    RETURN CODES

    B_OK. エンコーダが発見され、返された。

     グローバルC関数の節のget_next_file_format()もご覧下さい。


    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..