ホーム › Media.MediaFoundation › MF_SINK_WRITER_STATISTICS
MF_SINK_WRITER_STATISTICS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cb | DWORD | 4 | +0 | +0 | この構造体のバイトサイズ。 |
| llLastTimestampReceived | LONGLONG | 8 | +8 | +8 | 最後に受信したサンプルのタイムスタンプを100ナノ秒単位で示す。 |
| llLastTimestampEncoded | LONGLONG | 8 | +16 | +16 | 最後にエンコードしたサンプルのタイムスタンプを100ナノ秒単位で示す。 |
| llLastTimestampProcessed | LONGLONG | 8 | +24 | +24 | 最後に処理したサンプルのタイムスタンプを100ナノ秒単位で示す。 |
| llLastStreamTickReceived | LONGLONG | 8 | +32 | +32 | 最後に受信したストリームティックのタイムスタンプを100ナノ秒単位で示す。 |
| llLastSinkSampleRequest | LONGLONG | 8 | +40 | +40 | 最後のシンクサンプル要求のタイムスタンプを100ナノ秒単位で示す。 |
| qwNumSamplesReceived | ULONGLONG | 8 | +48 | +48 | 受信したサンプルの総数。 |
| qwNumSamplesEncoded | ULONGLONG | 8 | +56 | +56 | エンコードしたサンプルの総数。 |
| qwNumSamplesProcessed | ULONGLONG | 8 | +64 | +64 | 処理したサンプルの総数。 |
| qwNumStreamTicksReceived | ULONGLONG | 8 | +72 | +72 | 受信したストリームティックの総数。 |
| dwByteCountQueued | DWORD | 4 | +80 | +80 | キューに保持されているバイト数。 |
| qwByteCountProcessed | ULONGLONG | 8 | +88 | +88 | 処理済みの総バイト数。 |
| dwNumOutstandingSinkSampleRequests | DWORD | 4 | +96 | +96 | 未処理のシンクサンプル要求数。 |
| dwAverageSampleRateReceived | DWORD | 4 | +100 | +100 | 受信サンプルの平均レート。 |
| dwAverageSampleRateEncoded | DWORD | 4 | +104 | +104 | エンコードサンプルの平均レート。 |
| dwAverageSampleRateProcessed | DWORD | 4 | +108 | +108 | 処理サンプルの平均レート。 |
各言語での定義
#include <windows.h>
// MF_SINK_WRITER_STATISTICS (x64 112 / x86 112 バイト)
typedef struct MF_SINK_WRITER_STATISTICS {
DWORD cb;
LONGLONG llLastTimestampReceived;
LONGLONG llLastTimestampEncoded;
LONGLONG llLastTimestampProcessed;
LONGLONG llLastStreamTickReceived;
LONGLONG llLastSinkSampleRequest;
ULONGLONG qwNumSamplesReceived;
ULONGLONG qwNumSamplesEncoded;
ULONGLONG qwNumSamplesProcessed;
ULONGLONG qwNumStreamTicksReceived;
DWORD dwByteCountQueued;
ULONGLONG qwByteCountProcessed;
DWORD dwNumOutstandingSinkSampleRequests;
DWORD dwAverageSampleRateReceived;
DWORD dwAverageSampleRateEncoded;
DWORD dwAverageSampleRateProcessed;
} MF_SINK_WRITER_STATISTICS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MF_SINK_WRITER_STATISTICS
{
public uint cb;
public long llLastTimestampReceived;
public long llLastTimestampEncoded;
public long llLastTimestampProcessed;
public long llLastStreamTickReceived;
public long llLastSinkSampleRequest;
public ulong qwNumSamplesReceived;
public ulong qwNumSamplesEncoded;
public ulong qwNumSamplesProcessed;
public ulong qwNumStreamTicksReceived;
public uint dwByteCountQueued;
public ulong qwByteCountProcessed;
public uint dwNumOutstandingSinkSampleRequests;
public uint dwAverageSampleRateReceived;
public uint dwAverageSampleRateEncoded;
public uint dwAverageSampleRateProcessed;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MF_SINK_WRITER_STATISTICS
Public cb As UInteger
Public llLastTimestampReceived As Long
Public llLastTimestampEncoded As Long
Public llLastTimestampProcessed As Long
Public llLastStreamTickReceived As Long
Public llLastSinkSampleRequest As Long
Public qwNumSamplesReceived As ULong
Public qwNumSamplesEncoded As ULong
Public qwNumSamplesProcessed As ULong
Public qwNumStreamTicksReceived As ULong
Public dwByteCountQueued As UInteger
Public qwByteCountProcessed As ULong
Public dwNumOutstandingSinkSampleRequests As UInteger
Public dwAverageSampleRateReceived As UInteger
Public dwAverageSampleRateEncoded As UInteger
Public dwAverageSampleRateProcessed As UInteger
End Structureimport ctypes
from ctypes import wintypes
class MF_SINK_WRITER_STATISTICS(ctypes.Structure):
_fields_ = [
("cb", wintypes.DWORD),
("llLastTimestampReceived", ctypes.c_longlong),
("llLastTimestampEncoded", ctypes.c_longlong),
("llLastTimestampProcessed", ctypes.c_longlong),
("llLastStreamTickReceived", ctypes.c_longlong),
("llLastSinkSampleRequest", ctypes.c_longlong),
("qwNumSamplesReceived", ctypes.c_ulonglong),
("qwNumSamplesEncoded", ctypes.c_ulonglong),
("qwNumSamplesProcessed", ctypes.c_ulonglong),
("qwNumStreamTicksReceived", ctypes.c_ulonglong),
("dwByteCountQueued", wintypes.DWORD),
("qwByteCountProcessed", ctypes.c_ulonglong),
("dwNumOutstandingSinkSampleRequests", wintypes.DWORD),
("dwAverageSampleRateReceived", wintypes.DWORD),
("dwAverageSampleRateEncoded", wintypes.DWORD),
("dwAverageSampleRateProcessed", wintypes.DWORD),
]#[repr(C)]
pub struct MF_SINK_WRITER_STATISTICS {
pub cb: u32,
pub llLastTimestampReceived: i64,
pub llLastTimestampEncoded: i64,
pub llLastTimestampProcessed: i64,
pub llLastStreamTickReceived: i64,
pub llLastSinkSampleRequest: i64,
pub qwNumSamplesReceived: u64,
pub qwNumSamplesEncoded: u64,
pub qwNumSamplesProcessed: u64,
pub qwNumStreamTicksReceived: u64,
pub dwByteCountQueued: u32,
pub qwByteCountProcessed: u64,
pub dwNumOutstandingSinkSampleRequests: u32,
pub dwAverageSampleRateReceived: u32,
pub dwAverageSampleRateEncoded: u32,
pub dwAverageSampleRateProcessed: u32,
}import "golang.org/x/sys/windows"
type MF_SINK_WRITER_STATISTICS struct {
cb uint32
llLastTimestampReceived int64
llLastTimestampEncoded int64
llLastTimestampProcessed int64
llLastStreamTickReceived int64
llLastSinkSampleRequest int64
qwNumSamplesReceived uint64
qwNumSamplesEncoded uint64
qwNumSamplesProcessed uint64
qwNumStreamTicksReceived uint64
dwByteCountQueued uint32
qwByteCountProcessed uint64
dwNumOutstandingSinkSampleRequests uint32
dwAverageSampleRateReceived uint32
dwAverageSampleRateEncoded uint32
dwAverageSampleRateProcessed uint32
}type
MF_SINK_WRITER_STATISTICS = record
cb: DWORD;
llLastTimestampReceived: Int64;
llLastTimestampEncoded: Int64;
llLastTimestampProcessed: Int64;
llLastStreamTickReceived: Int64;
llLastSinkSampleRequest: Int64;
qwNumSamplesReceived: UInt64;
qwNumSamplesEncoded: UInt64;
qwNumSamplesProcessed: UInt64;
qwNumStreamTicksReceived: UInt64;
dwByteCountQueued: DWORD;
qwByteCountProcessed: UInt64;
dwNumOutstandingSinkSampleRequests: DWORD;
dwAverageSampleRateReceived: DWORD;
dwAverageSampleRateEncoded: DWORD;
dwAverageSampleRateProcessed: DWORD;
end;const MF_SINK_WRITER_STATISTICS = extern struct {
cb: u32,
llLastTimestampReceived: i64,
llLastTimestampEncoded: i64,
llLastTimestampProcessed: i64,
llLastStreamTickReceived: i64,
llLastSinkSampleRequest: i64,
qwNumSamplesReceived: u64,
qwNumSamplesEncoded: u64,
qwNumSamplesProcessed: u64,
qwNumStreamTicksReceived: u64,
dwByteCountQueued: u32,
qwByteCountProcessed: u64,
dwNumOutstandingSinkSampleRequests: u32,
dwAverageSampleRateReceived: u32,
dwAverageSampleRateEncoded: u32,
dwAverageSampleRateProcessed: u32,
};type
MF_SINK_WRITER_STATISTICS {.bycopy.} = object
cb: uint32
llLastTimestampReceived: int64
llLastTimestampEncoded: int64
llLastTimestampProcessed: int64
llLastStreamTickReceived: int64
llLastSinkSampleRequest: int64
qwNumSamplesReceived: uint64
qwNumSamplesEncoded: uint64
qwNumSamplesProcessed: uint64
qwNumStreamTicksReceived: uint64
dwByteCountQueued: uint32
qwByteCountProcessed: uint64
dwNumOutstandingSinkSampleRequests: uint32
dwAverageSampleRateReceived: uint32
dwAverageSampleRateEncoded: uint32
dwAverageSampleRateProcessed: uint32struct MF_SINK_WRITER_STATISTICS
{
uint cb;
long llLastTimestampReceived;
long llLastTimestampEncoded;
long llLastTimestampProcessed;
long llLastStreamTickReceived;
long llLastSinkSampleRequest;
ulong qwNumSamplesReceived;
ulong qwNumSamplesEncoded;
ulong qwNumSamplesProcessed;
ulong qwNumStreamTicksReceived;
uint dwByteCountQueued;
ulong qwByteCountProcessed;
uint dwNumOutstandingSinkSampleRequests;
uint dwAverageSampleRateReceived;
uint dwAverageSampleRateEncoded;
uint dwAverageSampleRateProcessed;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MF_SINK_WRITER_STATISTICS サイズ: 112 バイト(x64)
dim st, 28 ; 4byte整数×28(構造体サイズ 112 / 4 切り上げ)
; cb : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; llLastTimestampReceived : LONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; llLastTimestampEncoded : LONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; llLastTimestampProcessed : LONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; llLastStreamTickReceived : LONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; llLastSinkSampleRequest : LONGLONG (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; qwNumSamplesReceived : ULONGLONG (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; qwNumSamplesEncoded : ULONGLONG (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; qwNumSamplesProcessed : ULONGLONG (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; qwNumStreamTicksReceived : ULONGLONG (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; dwByteCountQueued : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; qwByteCountProcessed : ULONGLONG (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; dwNumOutstandingSinkSampleRequests : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; dwAverageSampleRateReceived : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; dwAverageSampleRateEncoded : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; dwAverageSampleRateProcessed : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MF_SINK_WRITER_STATISTICS
#field int cb
#field int64 llLastTimestampReceived
#field int64 llLastTimestampEncoded
#field int64 llLastTimestampProcessed
#field int64 llLastStreamTickReceived
#field int64 llLastSinkSampleRequest
#field int64 qwNumSamplesReceived
#field int64 qwNumSamplesEncoded
#field int64 qwNumSamplesProcessed
#field int64 qwNumStreamTicksReceived
#field int dwByteCountQueued
#field int64 qwByteCountProcessed
#field int dwNumOutstandingSinkSampleRequests
#field int dwAverageSampleRateReceived
#field int dwAverageSampleRateEncoded
#field int dwAverageSampleRateProcessed
#endstruct
stdim st, MF_SINK_WRITER_STATISTICS ; NSTRUCT 変数を確保
st->cb = 100
mes "cb=" + st->cb