次の方法で共有


MPEG_STREAM_BUFFER 構造体

MPEG_STREAM_BUFFER 構造体は、MPEG-2 データを受信するバッファを定義する。

構文

typedef struct {
    HRESULT hr;
    DWORD   dwDataBufferSize;
    DWORD   dwSizeOfDataRead;
    BYTE*   pDataBuffer;
} MPEG_STREAM_BUFFER, *PMPEG_STREAM_BUFFER;

メンバ

hr

ステータス コードを指定する。この値を使用して、読み取り要求のステータスをチェックする。

dwDataBufferSize

バッファのサイズ (バイト単位) を指定する。

dwSizeOfDataRead

バッファ内の有効なデータの量 (バイト単位) を指定する。

pDataBuffer

MPEG-2 データを保持するバッファへのポインタ。

注意

この構造体は、未処理の MPEG-2 データを取得するために、IMpeg2Stream::SupplyDataBuffer メソッドと共に使用される。

PSI テーブルおよびセクションについては、SECTION 構造体を指すように pDataBuffer を設定する。バッファのリストを保持する MPEG_PACKET_LIST 構造体も作成する場合は、そのリストを ISectionList::InitializeWithRawSections メソッドに渡すことができる。

次のコードは、MPEG_STREAM_BUFFER 構造体を初期化して、この構造体が MPEG_PACKET_LIST セクション リストに格納されている SECTION 構造体を指すようにする方法を示している。

// セクション データ用に 2 つのバッファを割り当てる。
const int cBufferSize = 4096;
BYTE pBuffer1[cBufferSize];
BYTE pBuffer2[cBufferSize];

// 両方のバッファを保持するパケット リストを作成する。
MPEG_RQST_PACKET RqstPacket[2];
MPEG_PACKET_LIST Packets;

RqstPacket[0].dwLength = cBufferSize;
RqstPacket[0].pSection = (SECTION*)pBuffer1;
RqstPacket[1].dwLength = cBufferSize;
RqstPacket[1].pSection = (SECTION*)pBuffer2;

Packets.wPacketCount = 2;
Packets.PacketList[0] = &RqstPacket[0];
Packets.PacketList[1] = &RqstPacket[1];

// リスト内の最初のパケットを指すようにストリーム バッファ構造体を設定する。
MPEG_STREAM_BUFFER StreamBuffer;
ZeroMemory(&StreamBuffer, sizeof(MPEG_STREAM_BUFFER));
StreamBuffer.dwDataBufferSize = Packets.PacketList[0]->dwLength;
StreamBuffer.pDataBuffer = (BYTE*) Packets.PacketList[0]->pSection;

参照