From 58fdccfd69e805e6d5fd76b3ac7616fa37e4c28d Mon Sep 17 00:00:00 2001 From: Elia Zammuto Date: Mon, 9 Aug 2021 19:59:09 +0200 Subject: [PATCH] Version 1.2.0 and return of full HW Acceleration --- Content/SamplePixelShader.hlsl | 4 ++-- FFmpegDecoder.cpp | 9 ++++++--- Package.appxmanifest | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Content/SamplePixelShader.hlsl b/Content/SamplePixelShader.hlsl index 73357ab..ed5dba0 100644 --- a/Content/SamplePixelShader.hlsl +++ b/Content/SamplePixelShader.hlsl @@ -36,8 +36,8 @@ min16float4 main(PixelShaderInput input) : SV_TARGET { float y = luminanceChannel.Sample(defaultSampler, input.texCoord); float2 uv = chrominanceChannel.Sample(defaultSampler, input.texCoord); - float r = uv.r; + /*float r = uv.r; uv.r = uv.g; - uv.g = r; + uv.g = r;*/ return min16float4(ConvertYUVtoRGB(float3(y, uv)), 1.f); } diff --git a/FFmpegDecoder.cpp b/FFmpegDecoder.cpp index 01f0031..cf156af 100644 --- a/FFmpegDecoder.cpp +++ b/FFmpegDecoder.cpp @@ -211,7 +211,7 @@ namespace moonlight_xbox_dx { decodedFrameNumber++; if (err == 0 && sharedTexture != NULL && (decodedFrameNumber - renderedFrameNumber) <= 1) { AVFrame* frame = dec_frames[next_frame]; - if (!useSoftwareEncoder) { + /*if (!useSoftwareEncoder) { int error = av_hwframe_transfer_data(ready_frames[next_frame], dec_frames[next_frame], 0); if (error < 0) { char errorstringnew[1024]; @@ -228,9 +228,12 @@ namespace moonlight_xbox_dx { unsigned char* texturePointer = (unsigned char*)ms.pData; memcpy(texturePointer, frame->data[0], luminanceLength); memcpy((texturePointer + luminanceLength + 1), frame->data[1], chrominanceLength); - ffmpegDeviceContext->Unmap(stagingTexture, 0); + ffmpegDeviceContext->Unmap(stagingTexture, 0);*/ DX::ThrowIfFailed(dxgiMutex->AcquireSync(0, INFINITE)); - ffmpegDeviceContext->CopyResource(sharedTexture, stagingTexture); + ID3D11Texture2D* ffmpegTexture = (ID3D11Texture2D*)(frame->data[0]); + int index = (int)(frame->data[1]); + ffmpegDeviceContext->CopySubresourceRegion(sharedTexture, 0, 0, 0, 0, ffmpegTexture, index, NULL); + //ffmpegDeviceContext->CopyResource(sharedTexture, stagingTexture); DX::ThrowIfFailed(dxgiMutex->ReleaseSync(1)); return 0; } diff --git a/Package.appxmanifest b/Package.appxmanifest index b04f327..356b908 100644 --- a/Package.appxmanifest +++ b/Package.appxmanifest @@ -9,7 +9,7 @@ + Version="1.2.0.0" />