次の方法で共有


IMFTimecodeTranslate::BeginConvertTimecodeToHNS メソッド (mfidl.h)

映画テレビ協会 (SMPTE) のタイム コードを 100 ナノ秒単位に変換するための非同期呼び出しを開始します。

構文

HRESULT BeginConvertTimecodeToHNS(
  [in] const PROPVARIANT *pPropVarTimecode,
  [in] IMFAsyncCallback  *pCallback,
  [in] IUnknown          *punkState
);

パラメーター

[in] pPropVarTimecode

変換する SMPTE 時間コードの時刻。 PROPVARIANT 構造体の vt メンバーは、VT_I8に設定されます。 hVal.QuadPart メンバーには、バイナリ コード化された 10 進数 (BCD) 形式の時刻が含まれています。 「解説」を参照してください。

[in] pCallback

コールバック オブジェクトの IMFAsyncCallback インターフェイスへのポインター。 呼び出し元は、このインターフェイスを実装する必要があります。

[in] punkState

呼び出し元によって定義された状態オブジェクトの IUnknown インターフェイスへの PPointer。 このパラメーターは、NULL でもかまいません。 このオブジェクトを使用して、状態情報を保持できます。 コールバックが呼び出されると、オブジェクトが呼び出し元に返されます。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
E_INVALIDARG
pPropVarTimecodeVT_I8されていません。
MF_E_SHUTDOWN
オブジェクトの Shutdown メソッドが呼び出されました。
MF_E_BYTESTREAM_NOT_SEEKABLE
バイト ストリームはシークできません。 バイト ストリームの末尾からタイム コードを読み取ることはできません。

注釈

非同期メソッドが完了すると、コールバック オブジェクトの IMFAsyncCallback::Invoke メソッドが呼び出されます。 その時点で、アプリケーションは IMFTimecodeTranslate::EndConvertTimecodeToHNS を呼び出して非同期要求を完了する必要があります。

pPropVarTimecode の値は、LONGLONG として入力された 64 ビット符号なし値です。 上の DWORD には範囲が含まれています。 ( 範囲 は連続する一連のタイム コードです)。下位 DWORD には、16 進数 の 0xhhmmssff の形式で時刻コードが含まれています。ここで、各 2 バイト シーケンスは 10 進数として読み取られます。

void CreateTimeCode(
    DWORD dwFrames,
    DWORD dwSeconds,
    DWORD dwMinutes,
    DWORD dwHours,
    DWORD dwRange,
    PROPVARIANT *pvar
    )
{
    ULONGLONG ullTimecode = ((ULONGLONG)dwRange) << 32;

    ullTimecode +=   dwFrames  % 10;
    ullTimecode += (( (ULONGLONG)dwFrames )  / 10) << 4;
    ullTimecode += (( (ULONGLONG)dwSeconds ) % 10) << 8;
    ullTimecode += (( (ULONGLONG)dwSeconds ) / 10) << 12;
    ullTimecode += (( (ULONGLONG)dwMinutes ) % 10) << 16;
    ullTimecode += (( (ULONGLONG)dwMinutes ) / 10) << 20;
    ullTimecode += (( (ULONGLONG)dwHours )   % 10) << 24;
    ullTimecode += (( (ULONGLONG)dwHours )   / 10) << 28;

    pvar->vt = VT_I8;
    pvar->hVal.QuadPart = (LONGLONG)ullTimecode;
}

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mfidl.h

こちらもご覧ください

非同期メソッドの呼び出し

IMFTimecodeTranslate