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;
参照