Captured Data of NV12 Writing into DXVA Encode Buffer

Captured Data of NV12 Writing into DXVA Encode Buffer

Bild des Benutzers Joyah

Hi there,

We're designing a HDMI Capture with 1080i stream.

 It's considered that the capture outputs the RAW of NV12 to the MSDK encode frame buffer(DXVA) by the way of DMA though PCIE.

I would like to ask, whether the MSDK hardware impl support that kind of input behavior? (seems more efficient without colorspace convert.)

Any advices appreciated.

Regards,

 Joyah

- "What hurts more, the pain of hard work, or the pain of regret?"
6 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.
Bild des Benutzers Nina Kurina (Intel)

Hi Joyah,

Your solution is good as long as "DXVA buffer" is a Direct3D9 or a Direct3D11 (DX11.1 on Windows 8) surface - that's what Media SDK Encoder supports at input.

Please also note that you have to provide the D3D device used to create D3D buffers and an external frame allocator to Media SDK so that HW accelerated encoding can be performed on those buffers. I recommend to check out sections "Working with Microsoft* DirectX* Applications" and "Memory Allocation and External Allocators" of mediasdk_man.pdf for more details.

Regards,
Nina

Bild des Benutzers camkego

Joyah,

You can also use system memory to do this, and the programming model is simpler to get going than Direct3D,
but you will pay a performance penalty.
In my experience encoding 1080P from system memory was about 78% as fast as using Direct3D surfaces.

So, you have a couple options.

Cameron

Bild des Benutzers Joyah

Quote:

Nina Kurina (Intel) wrote:

Hi Joyah,

Your solution is good as long as "DXVA buffer" is a Direct3D9 or a Direct3D11 (DX11.1 on Windows 8) surface - that's what Media SDK Encoder supports at input.

Please also note that you have to provide the D3D device used to create D3D buffers and an external frame allocator to Media SDK so that HW accelerated encoding can be performed on those buffers. I recommend to check out sections "Working with Microsoft* DirectX* Applications" and "Memory Allocation and External Allocators" of mediasdk_man.pdf for more details.

Regards,
Nina

Your reply helps a lot, thank you!

- "What hurts more, the pain of hard work, or the pain of regret?"
Bild des Benutzers Joyah

Quote:

camkego wrote:

Joyah,

You can also use system memory to do this, and the programming model is simpler to get going than Direct3D,
but you will pay a performance penalty.
In my experience encoding 1080P from system memory was about 78% as fast as using Direct3D surfaces.

So, you have a couple options.

Cameron


Thanks for your advice!
- "What hurts more, the pain of hard work, or the pain of regret?"
Bild des Benutzers Nina Kurina (Intel)

If native memory for the capture device output is video memory it would be better to use D3D surfaces to avoid costly copy from video to system memory.

Regards,
Nina

Melden Sie sich an, um einen Kommentar zu hinterlassen.