From 25019f052c5beba2309b70267e0c2a7281a6e6f1 Mon Sep 17 00:00:00 2001 From: Souryo Date: Thu, 4 May 2017 23:38:27 -0400 Subject: [PATCH] Fixed Linux compilation errors/warnings --- Core/BizhawkMovie.h | 4 +- Core/FDS.h | 2 +- Core/FceuxMovie.cpp | 1 + Core/Mapper112.h | 2 +- Core/VideoRenderer.h | 1 - Linux/BaseRenderer.cpp | 3 +- Utilities/Scale2x/scale2x.cpp | 177 ---------------------- Utilities/Scale2x/scale3x.cpp | 273 ---------------------------------- Utilities/xBRZ/xbrz.cpp | 48 +----- 9 files changed, 10 insertions(+), 501 deletions(-) diff --git a/Core/BizhawkMovie.h b/Core/BizhawkMovie.h index 985538bb..a12a37c4 100644 --- a/Core/BizhawkMovie.h +++ b/Core/BizhawkMovie.h @@ -20,7 +20,7 @@ public: virtual ~BizhawkMovie(); void RecordState(uint8_t port, uint8_t value) override; - void Record(string filename, bool reset); + void Record(string filename, bool reset) override; uint8_t GetState(uint8_t port) override; @@ -29,5 +29,5 @@ public: bool IsRecording() override; bool IsPlaying() override; - void ProcessNotification(ConsoleNotificationType type, void* parameter); + void ProcessNotification(ConsoleNotificationType type, void* parameter) override; }; \ No newline at end of file diff --git a/Core/FDS.h b/Core/FDS.h index 887ef17e..089ebc4f 100644 --- a/Core/FDS.h +++ b/Core/FDS.h @@ -85,7 +85,7 @@ protected: void InitMapper() override; void InitMapper(RomData &romData) override; - void Reset(bool softReset); + void Reset(bool softReset) override; uint32_t GetFdsDiskSideSize(uint8_t side); uint8_t ReadFdsDisk(); diff --git a/Core/FceuxMovie.cpp b/Core/FceuxMovie.cpp index 6c366122..992020fa 100644 --- a/Core/FceuxMovie.cpp +++ b/Core/FceuxMovie.cpp @@ -1,4 +1,5 @@ #include "stdafx.h" +#include #include "../Utilities/HexUtilities.h" #include "FceuxMovie.h" #include "Console.h" diff --git a/Core/Mapper112.h b/Core/Mapper112.h index 8db96c96..1d765601 100644 --- a/Core/Mapper112.h +++ b/Core/Mapper112.h @@ -27,7 +27,7 @@ protected: Stream(_currentReg, _outerChrBank); } - void SelectCHRPage(uint16_t slot, uint16_t page, ChrMemoryType memoryType) + void SelectCHRPage(uint16_t slot, uint16_t page, ChrMemoryType memoryType) override { switch(slot){ case 4: page |= (_outerChrBank & 0x10) << 4; break; diff --git a/Core/VideoRenderer.h b/Core/VideoRenderer.h index da460e62..c7dde57a 100644 --- a/Core/VideoRenderer.h +++ b/Core/VideoRenderer.h @@ -19,7 +19,6 @@ private: atomic _stopFlag; shared_ptr _aviRecorder; - FrameInfo type_info; void RenderThread(); diff --git a/Linux/BaseRenderer.cpp b/Linux/BaseRenderer.cpp index 8f4bb080..c47638f3 100644 --- a/Linux/BaseRenderer.cpp +++ b/Linux/BaseRenderer.cpp @@ -2,10 +2,11 @@ #include #include "../Core/EmulationSettings.h" #include "../Core/VideoDecoder.h" +#include "../Core/PPU.h" void BaseRenderer::DisplayMessage(string title, string message) { - shared_ptr toast(new ToastInfo(title, message, 4000, "")); + shared_ptr toast(new ToastInfo(title, message, 4000)); _toasts.push_front(toast); } diff --git a/Utilities/Scale2x/scale2x.cpp b/Utilities/Scale2x/scale2x.cpp index 0fbbfc7f..43f31b12 100644 --- a/Utilities/Scale2x/scale2x.cpp +++ b/Utilities/Scale2x/scale2x.cpp @@ -44,65 +44,6 @@ */ /* #define USE_SCALE_RANDOMWRITE */ -static inline void scale2x_8_def_whole(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) -{ - assert(count >= 2); - - /* first pixel */ - if (src0[0] != src2[0] && src1[0] != src1[1]) { - dst0[0] = src1[0] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[1] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[0] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[1] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } - ++src0; - ++src1; - ++src2; - dst0 += 2; - dst1 += 2; - - /* central pixels */ - count -= 2; - while (count) { - if (src0[0] != src2[0] && src1[-1] != src1[1]) { - dst0[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[1] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[-1] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[1] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } - - ++src0; - ++src1; - ++src2; - dst0 += 2; - dst1 += 2; - --count; - } - - /* last pixel */ - if (src0[0] != src2[0] && src1[-1] != src1[0]) { - dst0[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[0] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[-1] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[0] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } -} - static inline void scale2x_8_def_border(scale2x_uint8* dst, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count) { assert(count >= 2); @@ -193,65 +134,6 @@ static inline void scale2x_8_def_center(scale2x_uint8* dst, const scale2x_uint8* } } -static inline void scale2x_16_def_whole(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) -{ - assert(count >= 2); - - /* first pixel */ - if (src0[0] != src2[0] && src1[0] != src1[1]) { - dst0[0] = src1[0] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[1] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[0] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[1] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } - ++src0; - ++src1; - ++src2; - dst0 += 2; - dst1 += 2; - - /* central pixels */ - count -= 2; - while (count) { - if (src0[0] != src2[0] && src1[-1] != src1[1]) { - dst0[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[1] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[-1] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[1] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } - - ++src0; - ++src1; - ++src2; - dst0 += 2; - dst1 += 2; - --count; - } - - /* last pixel */ - if (src0[0] != src2[0] && src1[-1] != src1[0]) { - dst0[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[0] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[-1] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[0] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } -} - static inline void scale2x_16_def_border(scale2x_uint16* dst, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) { assert(count >= 2); @@ -342,65 +224,6 @@ static inline void scale2x_16_def_center(scale2x_uint16* dst, const scale2x_uint } } -static inline void scale2x_32_def_whole(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) -{ - assert(count >= 2); - - /* first pixel */ - if (src0[0] != src2[0] && src1[0] != src1[1]) { - dst0[0] = src1[0] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[1] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[0] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[1] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } - ++src0; - ++src1; - ++src2; - dst0 += 2; - dst1 += 2; - - /* central pixels */ - count -= 2; - while (count) { - if (src0[0] != src2[0] && src1[-1] != src1[1]) { - dst0[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[1] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[-1] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[1] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } - - ++src0; - ++src1; - ++src2; - dst0 += 2; - dst1 += 2; - --count; - } - - /* last pixel */ - if (src0[0] != src2[0] && src1[-1] != src1[0]) { - dst0[0] = src1[-1] == src0[0] ? src0[0] : src1[0]; - dst0[1] = src1[0] == src0[0] ? src0[0] : src1[0]; - dst1[0] = src1[-1] == src2[0] ? src2[0] : src1[0]; - dst1[1] = src1[0] == src2[0] ? src2[0] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - } -} - static inline void scale2x_32_def_border(scale2x_uint32* dst, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count) { assert(count >= 2); diff --git a/Utilities/Scale2x/scale3x.cpp b/Utilities/Scale2x/scale3x.cpp index 47073abc..8bfe328d 100644 --- a/Utilities/Scale2x/scale3x.cpp +++ b/Utilities/Scale2x/scale3x.cpp @@ -44,97 +44,6 @@ */ /* #define USE_SCALE_RANDOMWRITE */ -static inline void scale3x_8_def_whole(scale3x_uint8* dst0, scale3x_uint8* dst1, scale3x_uint8* dst2, const scale3x_uint8* src0, const scale3x_uint8* src1, const scale3x_uint8* src2, unsigned count) -{ - assert(count >= 2); - - /* first pixel */ - if (src0[0] != src2[0] && src1[0] != src1[1]) { - dst0[0] = src1[0]; - dst0[1] = (src1[0] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[0]) ? src0[0] : src1[0]; - dst0[2] = src1[1] == src0[0] ? src1[1] : src1[0]; - dst1[0] = (src1[0] == src0[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src0[0]) ? src1[0] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; - dst2[0] = src1[0]; - dst2[1] = (src1[0] == src2[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src2[0]) ? src2[0] : src1[0]; - dst2[2] = src1[1] == src2[0] ? src1[1] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } - ++src0; - ++src1; - ++src2; - dst0 += 3; - dst1 += 3; - dst2 += 3; - - /* central pixels */ - count -= 2; - while (count) { - if (src0[0] != src2[0] && src1[-1] != src1[1]) { - dst0[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; - dst0[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; - dst0[2] = src1[1] == src0[0] ? src1[1] : src1[0]; - dst1[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; - dst2[0] = src1[-1] == src2[0] ? src1[-1] : src1[0]; - dst2[1] = (src1[-1] == src2[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src2[-1]) ? src2[0] : src1[0]; - dst2[2] = src1[1] == src2[0] ? src1[1] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } - - ++src0; - ++src1; - ++src2; - dst0 += 3; - dst1 += 3; - dst2 += 3; - --count; - } - - /* last pixel */ - if (src0[0] != src2[0] && src1[-1] != src1[0]) { - dst0[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; - dst0[1] = (src1[-1] == src0[0] && src1[0] != src0[0]) || (src1[0] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; - dst0[2] = src1[0]; - dst1[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[0] == src0[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src0[0]) ? src1[0] : src1[0]; - dst2[0] = src1[-1] == src2[0] ? src1[-1] : src1[0]; - dst2[1] = (src1[-1] == src2[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src2[-1]) ? src2[0] : src1[0]; - dst2[2] = src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } -} - static inline void scale3x_8_def_border(scale3x_uint8* dst, const scale3x_uint8* src0, const scale3x_uint8* src1, const scale3x_uint8* src2, unsigned count) { assert(count >= 2); @@ -237,97 +146,6 @@ static inline void scale3x_8_def_center(scale3x_uint8* dst, const scale3x_uint8* } } -static inline void scale3x_16_def_whole(scale3x_uint16* dst0, scale3x_uint16* dst1, scale3x_uint16* dst2, const scale3x_uint16* src0, const scale3x_uint16* src1, const scale3x_uint16* src2, unsigned count) -{ - assert(count >= 2); - - /* first pixel */ - if (src0[0] != src2[0] && src1[0] != src1[1]) { - dst0[0] = src1[0]; - dst0[1] = (src1[0] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[0]) ? src0[0] : src1[0]; - dst0[2] = src1[1] == src0[0] ? src1[1] : src1[0]; - dst1[0] = (src1[0] == src0[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src0[0]) ? src1[0] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; - dst2[0] = src1[0]; - dst2[1] = (src1[0] == src2[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src2[0]) ? src2[0] : src1[0]; - dst2[2] = src1[1] == src2[0] ? src1[1] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } - ++src0; - ++src1; - ++src2; - dst0 += 3; - dst1 += 3; - dst2 += 3; - - /* central pixels */ - count -= 2; - while (count) { - if (src0[0] != src2[0] && src1[-1] != src1[1]) { - dst0[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; - dst0[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; - dst0[2] = src1[1] == src0[0] ? src1[1] : src1[0]; - dst1[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; - dst2[0] = src1[-1] == src2[0] ? src1[-1] : src1[0]; - dst2[1] = (src1[-1] == src2[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src2[-1]) ? src2[0] : src1[0]; - dst2[2] = src1[1] == src2[0] ? src1[1] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } - - ++src0; - ++src1; - ++src2; - dst0 += 3; - dst1 += 3; - dst2 += 3; - --count; - } - - /* last pixel */ - if (src0[0] != src2[0] && src1[-1] != src1[0]) { - dst0[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; - dst0[1] = (src1[-1] == src0[0] && src1[0] != src0[0]) || (src1[0] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; - dst0[2] = src1[0]; - dst1[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[0] == src0[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src0[0]) ? src1[0] : src1[0]; - dst2[0] = src1[-1] == src2[0] ? src1[-1] : src1[0]; - dst2[1] = (src1[-1] == src2[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src2[-1]) ? src2[0] : src1[0]; - dst2[2] = src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } -} - static inline void scale3x_16_def_border(scale3x_uint16* dst, const scale3x_uint16* src0, const scale3x_uint16* src1, const scale3x_uint16* src2, unsigned count) { assert(count >= 2); @@ -430,97 +248,6 @@ static inline void scale3x_16_def_center(scale3x_uint16* dst, const scale3x_uint } } -static inline void scale3x_32_def_whole(scale3x_uint32* dst0, scale3x_uint32* dst1, scale3x_uint32* dst2, const scale3x_uint32* src0, const scale3x_uint32* src1, const scale3x_uint32* src2, unsigned count) -{ - assert(count >= 2); - - /* first pixel */ - if (src0[0] != src2[0] && src1[0] != src1[1]) { - dst0[0] = src1[0]; - dst0[1] = (src1[0] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[0]) ? src0[0] : src1[0]; - dst0[2] = src1[1] == src0[0] ? src1[1] : src1[0]; - dst1[0] = (src1[0] == src0[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src0[0]) ? src1[0] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; - dst2[0] = src1[0]; - dst2[1] = (src1[0] == src2[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src2[0]) ? src2[0] : src1[0]; - dst2[2] = src1[1] == src2[0] ? src1[1] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } - ++src0; - ++src1; - ++src2; - dst0 += 3; - dst1 += 3; - dst2 += 3; - - /* central pixels */ - count -= 2; - while (count) { - if (src0[0] != src2[0] && src1[-1] != src1[1]) { - dst0[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; - dst0[1] = (src1[-1] == src0[0] && src1[0] != src0[1]) || (src1[1] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; - dst0[2] = src1[1] == src0[0] ? src1[1] : src1[0]; - dst1[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[1] == src0[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src0[1]) ? src1[1] : src1[0]; - dst2[0] = src1[-1] == src2[0] ? src1[-1] : src1[0]; - dst2[1] = (src1[-1] == src2[0] && src1[0] != src2[1]) || (src1[1] == src2[0] && src1[0] != src2[-1]) ? src2[0] : src1[0]; - dst2[2] = src1[1] == src2[0] ? src1[1] : src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } - - ++src0; - ++src1; - ++src2; - dst0 += 3; - dst1 += 3; - dst2 += 3; - --count; - } - - /* last pixel */ - if (src0[0] != src2[0] && src1[-1] != src1[0]) { - dst0[0] = src1[-1] == src0[0] ? src1[-1] : src1[0]; - dst0[1] = (src1[-1] == src0[0] && src1[0] != src0[0]) || (src1[0] == src0[0] && src1[0] != src0[-1]) ? src0[0] : src1[0]; - dst0[2] = src1[0]; - dst1[0] = (src1[-1] == src0[0] && src1[0] != src2[-1]) || (src1[-1] == src2[0] && src1[0] != src0[-1]) ? src1[-1] : src1[0]; - dst1[1] = src1[0]; - dst1[2] = (src1[0] == src0[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src0[0]) ? src1[0] : src1[0]; - dst2[0] = src1[-1] == src2[0] ? src1[-1] : src1[0]; - dst2[1] = (src1[-1] == src2[0] && src1[0] != src2[0]) || (src1[0] == src2[0] && src1[0] != src2[-1]) ? src2[0] : src1[0]; - dst2[2] = src1[0]; - } else { - dst0[0] = src1[0]; - dst0[1] = src1[0]; - dst0[2] = src1[0]; - dst1[0] = src1[0]; - dst1[1] = src1[0]; - dst1[2] = src1[0]; - dst2[0] = src1[0]; - dst2[1] = src1[0]; - dst2[2] = src1[0]; - } -} - static inline void scale3x_32_def_border(scale3x_uint32* dst, const scale3x_uint32* src0, const scale3x_uint32* src1, const scale3x_uint32* src2, unsigned count) { assert(count >= 2); diff --git a/Utilities/xBRZ/xbrz.cpp b/Utilities/xBRZ/xbrz.cpp index f9258cd2..c8f4f473 100644 --- a/Utilities/xBRZ/xbrz.cpp +++ b/Utilities/xBRZ/xbrz.cpp @@ -163,47 +163,6 @@ private: template inline T square(T value) { return value * value; } - - -inline -double distRGB(uint32_t pix1, uint32_t pix2) -{ - const double r_diff = static_cast(getRed (pix1)) - getRed (pix2); - const double g_diff = static_cast(getGreen(pix1)) - getGreen(pix2); - const double b_diff = static_cast(getBlue (pix1)) - getBlue (pix2); - - //euklidean RGB distance - return std::sqrt(square(r_diff) + square(g_diff) + square(b_diff)); -} - - -inline -double distYCbCr(uint32_t pix1, uint32_t pix2, double lumaWeight) -{ - //http://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion - //YCbCr conversion is a matrix multiplication => take advantage of linearity by subtracting first! - const int r_diff = static_cast(getRed (pix1)) - getRed (pix2); //we may delay division by 255 to after matrix multiplication - const int g_diff = static_cast(getGreen(pix1)) - getGreen(pix2); // - const int b_diff = static_cast(getBlue (pix1)) - getBlue (pix2); //substraction for int is noticeable faster than for double! - - //const double k_b = 0.0722; //ITU-R BT.709 conversion - //const double k_r = 0.2126; // - const double k_b = 0.0593; //ITU-R BT.2020 conversion - const double k_r = 0.2627; // - const double k_g = 1 - k_b - k_r; - - const double scale_b = 0.5 / (1 - k_b); - const double scale_r = 0.5 / (1 - k_r); - - const double y = k_r * r_diff + k_g * g_diff + k_b * b_diff; //[!], analog YCbCr! - const double c_b = scale_b * (b_diff - y); - const double c_r = scale_r * (r_diff - y); - - //we skip division by 255 to have similar range like other distance functions - return std::sqrt(square(lumaWeight * y) + square(c_b) + square(c_r)); -} - - struct DistYCbCrBuffer //30% perf boost compared to distYCbCr()! { public: @@ -352,26 +311,25 @@ DEF_GETTER(g) DEF_GETTER(h) DEF_GETTER(i) #undef DEF_GETTER #define DEF_GETTER(x, y) template <> inline uint32_t get_##x(const Kernel_3x3& ker) { return ker.y; } -DEF_GETTER(a, g) DEF_GETTER(b, d) DEF_GETTER(c, a) +DEF_GETTER(b, d) DEF_GETTER(c, a) DEF_GETTER(d, h) DEF_GETTER(e, e) DEF_GETTER(f, b) DEF_GETTER(g, i) DEF_GETTER(h, f) DEF_GETTER(i, c) #undef DEF_GETTER #define DEF_GETTER(x, y) template <> inline uint32_t get_##x(const Kernel_3x3& ker) { return ker.y; } -DEF_GETTER(a, i) DEF_GETTER(b, h) DEF_GETTER(c, g) +DEF_GETTER(b, h) DEF_GETTER(c, g) DEF_GETTER(d, f) DEF_GETTER(e, e) DEF_GETTER(f, d) DEF_GETTER(g, c) DEF_GETTER(h, b) DEF_GETTER(i, a) #undef DEF_GETTER #define DEF_GETTER(x, y) template <> inline uint32_t get_##x(const Kernel_3x3& ker) { return ker.y; } -DEF_GETTER(a, c) DEF_GETTER(b, f) DEF_GETTER(c, i) +DEF_GETTER(b, f) DEF_GETTER(c, i) DEF_GETTER(d, b) DEF_GETTER(e, e) DEF_GETTER(f, h) DEF_GETTER(g, a) DEF_GETTER(h, d) DEF_GETTER(i, g) #undef DEF_GETTER //compress four blend types into a single byte -inline BlendType getTopL (unsigned char b) { return static_cast(0x3 & b); } inline BlendType getTopR (unsigned char b) { return static_cast(0x3 & (b >> 2)); } inline BlendType getBottomR(unsigned char b) { return static_cast(0x3 & (b >> 4)); } inline BlendType getBottomL(unsigned char b) { return static_cast(0x3 & (b >> 6)); }