Sample - https://yadi.sk/i/tHeBjqFbRRHcyA DXVA2 Native working good. The reason is that ffmpeg when opened MPEG1/2 don't read/parse extradata and don't fill level/profile/pix_fmt. But when use DXVA2(copy-back) or D3D11 Native - init decoder(second time) after decode first frame...
【求助】LAV硬解D..madVR是最新版,Lav也应该没有问题……可能是你独显驱动没装好?实在不行用copy-back吧(选dxva2copyback或者d3d11选择一个显卡),copy-back比native速度稍慢,
EnterCriticalSection(&cs);//直接渲染ctx->d3d9device->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0),1.0f,0); ctx->d3d9device->BeginScene();if(m_pBackBuffer) { m_pBackBuffer->Release(); m_pBackBuffer=NULL; } ctx->d3d9device->GetBackBuffer(0,0, D3DBACKBUFFER_TYPE_MONO,...
if (m_pBackBuffer) { m_pBackBuffer->Release(); m_pBackBuffer = NULL; } ctx->d3d9device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO,&m_pBackBuffer); GetClientRect(d3dpp.hDeviceWindow,&m_rtViewport); ctx->d3d9device->StretchRect(surface, NULL, m_pBackBuffer,&m_rtViewport, D3DT...
函数dxva2_retrieve_data_call用来获得解码后的数据的。如我前面所说,如果不必要,最后不要再把它copy出来,直接用D3D绘制出来就行了,把数据从GPU再copy到内存中会极大的降低GPU的使用率,在我的试验中这样做完全没达到GPU加速的目的,反而是CPU的使用率增高了。所以你在我上传的源码中看到的是直接绘制数据。
#if CONFIG_D3D11VA if (avctx->pix_fmt == AV_PIX_FMT_D3D11VA_VLD) { type = D3D11_VIDEO_DECODER_BUFFER_BITSTREAM; if (FAILED(ID3D11VideoContext_GetDecoderBuffer(D3D11VA_CONTEXT(ctx)->video_context, D3D11VA_CONTEXT(ctx)->decoder, type, &dxva_size, &dxva_data_ptr))) re...
(struct dxva2_picture_context), }; #endif #if CONFIG_VC1_D3D11VA_HWACCEL AVHWAccel ff_vc1_d3d11va_hwaccel = { .name = "vc1_d3d11va", .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_VC1, .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .start_frame = dxva2_vc1_star...
sizeof(start_code) : 0; const unsigned mb_count = s->mb_width * (s->mb_height >> v->field_mode); DXVA_SliceInfo *slice = NULL; void *dxva_data_ptr; uint8_t *dxva_data, *current, *end; unsigned dxva_size; unsigned padding; unsigned i; unsigned type; #if CONFIG_...
(struct dxva2_picture_context), }; #endif #if CONFIG_VC1_D3D11VA_HWACCEL AVHWAccel ff_vc1_d3d11va_hwaccel = { .name = "vc1_d3d11va", .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_VC1, .pix_fmt = AV_PIX_FMT_D3D11VA_VLD, .start_frame = dxva2_vc1_start...