Bagikan melalui


IMFTimecodeTranslate::Metode BeginConvertTimecodeToHNS (mfidl.h)

Memulai panggilan asinkron untuk mengonversi kode waktu Society of Motion Picture dan Television Engineers (SMPTE) menjadi 100 unit nanodetik.

Sintaks

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

Parameter

[in] pPropVarTimecode

Waktu dalam kode waktu SMPTE untuk dikonversi. Anggota vt struktur PROPVARIANT diatur ke VT_I8. Anggota hVal.QuadPart berisi waktu dalam bentuk desimal berkode biner (BCD). Lihat Keterangan.

[in] pCallback

Penunjuk ke antarmuka IMFAsyncCallback dari objek panggilan balik. Pemanggil harus mengimplementasikan antarmuka ini.

[in] punkState

PPointer ke antarmuka IUnknown dari objek status, yang ditentukan oleh pemanggil. Parameter ini bisa NULL. Anda dapat menggunakan objek ini untuk menyimpan informasi status. Objek dikembalikan ke pemanggil ketika panggilan balik dipanggil.

Nilai kembali

Metode mengembalikan HRESULT. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, yang ada dalam tabel berikut.

Menampilkan kode Deskripsi
E_INVALIDARG
pPropVarTimecode tidak VT_I8.
MF_E_SHUTDOWN
Metode Matikan objek dipanggil.
MF_E_BYTESTREAM_NOT_SEEKABLE
Aliran byte tidak dapat dicari. Kode waktu tidak dapat dibaca dari akhir aliran byte.

Keterangan

Ketika metode asinkron selesai, metode IMFAsyncCallback::Invoke objek panggilan dipanggil. Pada saat itu, aplikasi harus memanggil IMFTimecodeTranslate::EndConvertTimecodeToHNS untuk menyelesaikan permintaan asinkron.

Nilai pPropVarTimecode adalah nilai tidak bertanda 64-bit yang ditik sebagai LONGLONG. DWORD atas berisi rentang . ( Rentang adalah serangkaian kode waktu berkelanjutan.) DWORD yang lebih rendah berisi kode waktu dalam bentuk angka heksadesimal 0xhhmmssff, di mana setiap urutan 2-byte dibaca sebagai nilai desimal.

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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header mfidl.h

Lihat juga

Memanggil Metode Asinkron

IMFTimecodeTranslate