Bagikan melalui


Membuat Permukaan Video DXVA-HD

Aplikasi harus membuat satu atau beberapa permukaan Direct3D untuk digunakan untuk bingkai input. Ini harus dialokasikan di kumpulan memori yang ditentukan oleh anggota InputPool dari struktur DXVAHD_VPDEVCAPS . Jenis permukaan berikut dapat digunakan:

  • Permukaan video yang dibuat dengan memanggil IDXVAHD_Device::CreateVideoSurface dan menentukan jenis permukaan DXVAHD_SURFACE_TYPE_VIDEO_INPUT atau DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE . Jenis permukaan ini setara dengan permukaan biasa di luar layar.
  • Permukaan target render decoder, dibuat dengan memanggil IDirectXVideoAccelerationService::CreateSurface dan menentukan jenis permukaan DXVA2_VideoDecoderRenderTarget . Jenis permukaan ini digunakan untuk pendekodean DXVA.
  • Permukaan polos di luar layar.

Kode berikut menunjukkan cara mengalokasikan permukaan video, menggunakan CreateVideoSurface:

    // Create the video surface for the primary video stream.
    hr = pDXVAHD->CreateVideoSurface(
        VIDEO_WIDTH,
        VIDEO_HEIGHT,
        VIDEO_FORMAT,
        caps.InputPool,
        0,  // Usage
        DXVAHD_SURFACE_TYPE_VIDEO_INPUT,
        1,      // Number of surfaces to create
        &pSurf, // Array of surface pointers
        NULL
        );

DXVA-HD