diff options
| author | skidau <skidau@gmail.com> | 2015-01-26 12:03:44 +1100 |
|---|---|---|
| committer | skidau <skidau@gmail.com> | 2015-01-26 12:03:44 +1100 |
| commit | 34079a00379d8fb773e570c2d6fbf8750c0cd7b2 (patch) | |
| tree | 57a32555f6de3a9d6e3ea34ac85b4d2b22c1bdbc /Source/Core/VideoBackends/D3D/Render.cpp | |
| parent | 3274df71588640b4648628e513cc59d6bdbdae26 (diff) | |
| parent | a20b576d8612ee07cfed514e6458f76ccffb46c4 (diff) | |
Merge pull request #1903 from RisingFog/libav
Use ffmpeg for Windows Video Dumping instead of VFW
Diffstat (limited to 'Source/Core/VideoBackends/D3D/Render.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/D3D/Render.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/Source/Core/VideoBackends/D3D/Render.cpp b/Source/Core/VideoBackends/D3D/Render.cpp index 23f9ceae2d..c3a0aba4f2 100644 --- a/Source/Core/VideoBackends/D3D/Render.cpp +++ b/Source/Core/VideoBackends/D3D/Render.cpp @@ -802,7 +802,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, co { s_recordWidth = GetTargetRectangle().GetWidth(); s_recordHeight = GetTargetRectangle().GetHeight(); - bAVIDumping = AVIDump::Start(D3D::hWnd, s_recordWidth, s_recordHeight); + bAVIDumping = AVIDump::Start(s_recordWidth, s_recordHeight); if (!bAVIDumping) { PanicAlert("Error dumping frames to AVI."); @@ -827,6 +827,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, co h = s_recordHeight; } formatBufferDump((u8*)map.pData, &frame_data[0], s_recordWidth, s_recordHeight, map.RowPitch); + FlipImageData(&frame_data[0], w, h); AVIDump::AddFrame(&frame_data[0], GetTargetRectangle().GetWidth(), GetTargetRectangle().GetHeight()); D3D::context->Unmap(s_screenshot_texture, 0); } @@ -1279,4 +1280,16 @@ void Renderer::BlitScreen(TargetRectangle src, TargetRectangle dst, D3DTexture2D } } +void Renderer::FlipImageData(u8 *data, int w, int h, int pixel_width) +{ + for (int y = 0; y < h / 2; ++y) + { + for (int x = 0; x < w; ++x) + { + for (int delta = 0; delta < pixel_width; ++delta) + std::swap(data[(y * w + x) * pixel_width + delta], data[((h - 1 - y) * w + x) * pixel_width + delta]); + } + } +} + } // namespace DX11 |
