libogg

ogg_page

"ogg/ogg.h"で宣言されています

ogg_page構造体はOgg pageのためのデータを包みます

Ogg pageはひとつのOgg bitstreamの、フレーミングとインターリーブの基本単位です
これらは、255バイトずつのパケットセグメントから成ります
ページの最大サイズは64KBより小さいため、ページ度に存在できるパケットは255個となります
セグメントは、ページ境界を任意サイズで跨いで連結できるので、これは制限にはなりません
実際、多くのアプリケーションはすべてのページを、完全に埋めることはできないでしょう


Ogg pageとヘッダに関する完全な記述は
フレーミング文書を参照してください


typedef struct {
 unsigned char *header;
 long           header_len;
 unsigned char *body;
 long           body_len;
} ogg_page;


header
ヘッダを指すポインタです
詳しい中身は、フレーミング仕様文書に定義されています

header_len
ページヘッダのバイト長です

body
データを指すポインタです

body_len
データのバイト長です




ogg_stream_state

"ogg/ogg.h"で宣言されています

ogg_stream_state構造体は現在の論理ビットストリームのエンコード/デコード状態を記録します


typedef struct {
 unsigned char   *body_data;    /* bytes from packet bodies */
 long    body_storage;          /* storage elements allocated */
 long    body_fill;             /* elements stored; fill mark */
 long    body_returned;         /* elements of fill returned */


 int     *lacing_vals;    /* The values that will go to the segment table */
 ogg_int64_t *granule_vals;      /* granulepos values for headers. Not compact
                            this way, but it is simple coupled to the
                            lacing fifo */
 long    lacing_storage;
 long    lacing_fill;
 long    lacing_packet;
 long    lacing_returned;

 unsigned char    header[282];      /*ヘッダエンコードのための作業領域*/
 int              header_fill;

 int     e_o_s;          /*論理ビットストリーム中に最後のパケットが蓄えられた時にセットされる*/
 int     b_o_s;          /*論理ビットストリームの最初のページが書き込まれた後にセットされる*/

 long     serialno;
 int      pageno;
 ogg_int64_t  packetno;      /*デコードのためのシークエンス番号*/
 ogg_int64_t   granulepos;

} ogg_stream_state;
Relevant Struct Members

body_data
パケットボディーからのデータを指すポインタ

body_storage
ボディーのために確保された領域のバイト数(埋められた、または埋められていない)

body_fill
格納されたパケットボディーで埋められた領域の量
body_returned
領域から返った要素の数
lacing_vals
現在のページ内のパケットセグメントのためのレーシング値の列。各値は、パケットセグメント長を表す1バイト
granule_vals
現在のページ内のパケットセグメントのためのレーシング値を指すポインタ
lacing_storage
レーシング値を格納するために確保された領域の総(バイト)数
lacing_fill
現在のvsのためのフィルマーカー。すべての、ページ用のレーシング値として確保された領域
lacing_packet
現在のパケットセグメントのレーシング値
lacing_returned
レーシング領域から返ったレーシング値の数
header
ヘッダ作成時の、エンコード処理中のページヘッダのための一時領域
header_fill
ヘッダ領域の確保のためのフィルマーカー。ヘッダ作成処理中に使用される
e_o_s
論理ビットストリームの最後のパケットが蓄えられたときに、セットされる
b_o_s
論理ビットストリームの最初のページが書き込まれた後にセットされる
serialno
この論理ビットストリームのシリアルナンバー
pageno
現在、ストリーム内にあるページの数
packetno
現在のパケット数
granulepos
デコード/エンコード処理の正確な位置





ogg_packet

"ogg/ogg.h"で宣言されています

ogg_packet構造体は、ひとつの生パケットのデータを包みます
oggフレーミング層と扱っているコーデックとの間で
データを転送するために使われます


typedef struct {
 unsigned char *packet;
 long  bytes;
 long  b_o_s;
 long  e_o_s;

 ogg_int64_t  granulepos;
 ogg_int64_t  packetno; 

} ogg_packet;
Relevant Struct Members

packet
パケットのデータを指すポインタ。これはoggからは不透明型として扱われます
bytes
パケットデータのバイト数。パケットは任意のサイズにできます
b_o_s
このパケットが論理ビットストリームの最初かどうかのフラグです
1ならこれは最初のパケットです
0なら、ストリーム内のその他の位置のものです
e_o_s
このパケットが論理ビットストリームの最後かどうかのフラグです
1ならこれは最後のパケットです
0なら、ストリーム内のその他の位置のものです
granulepos
このパケットの、デコードデータ中での位置を示す数字です
これが、このパケットからデコードを完了できる、最後のサンプル、あるいはフレームやその他の単位の情報です
packetno
oggビットストリームでの、このパケットのシーケンシャル番号です





ogg_sync_state

"ogg/ogg.h"で宣言されています

ogg_sync_state構造体は現在のページの同期を記録します

デコード中に
現在の物理ビットストリームのリンクで、個々の論理ビットストリームに属するページに対する
データの読み出し、同期、検証、解析の状態の記録に使われます


typedef struct {
 unsigned char *data;
 int storage;
 int fill;
 int returned;

 int unsynced;
 int headerbytes;
 int bodybytes;
} ogg_sync_state;
Relevant Struct Members

data
蓄えられたストリームデータを指すポインタ
storage
dataに保持されたストリームデータの現在の確保サイズ
fill
現在dataに保持されている有効なバイト数。バッファの先頭を指すポインタとして機能する
returned
ページとして返されたdataの先頭のバイト数。バッファの末尾を指すポインタとして機能する
unsynced
同期状態フラグ。もし同期がまだ達成され庭内か失敗したとき、ゼロではない
headerbytes
同期したら、バイト数は、同期したページのヘッダに使われる
bodybytes
同期したら、バイト数は、同期したページのボディに使われる

タグ:

+ タグ編集
  • タグ:
最終更新:2015年11月17日 15:05