diff --git a/Toolchain-imx6.cmake b/Toolchain-imx6.cmake index 6ca757a7..3afbeaed 100644 --- a/Toolchain-imx6.cmake +++ b/Toolchain-imx6.cmake @@ -6,8 +6,8 @@ SET(CMAKE_SYSTEM_VERSION 1) # specify the cross compiler SET(CMAKE_C_COMPILER ${CUBIXCROSS_DIR}/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-gcc) SET(CMAKE_CXX_COMPILER ${CUBIXCROSS_DIR}/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++) -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=vfpv3 -mfloat-abi=softfp") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=vfpv3 -mfloat-abi=softfp") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard") # where is the target environment SET(CMAKE_FIND_ROOT_PATH ${CUBIXCROSS_DIR}/rootfs) diff --git a/bin/create_release.sh b/bin/create_release.sh index 625ff0e1..d6b9bf66 100644 --- a/bin/create_release.sh +++ b/bin/create_release.sh @@ -28,6 +28,7 @@ tar --create --verbose --gzip --absolute-names --show-transformed-names --ignore "$builddir/bin/hyperiond" \ "$builddir/bin/hyperion-remote" \ "$builddir/bin/hyperion-v4l2" \ + "$builddir/bin/gpio2spi" \ "$builddir/bin/dispmanx2png" \ "$repodir/effects/"* \ "$repodir/bin/hyperion.init.sh" \ diff --git a/deploy/hyperion_imx6.tar.gz.REMOVED.git-id b/deploy/hyperion_imx6.tar.gz.REMOVED.git-id index 99536c87..882af089 100644 --- a/deploy/hyperion_imx6.tar.gz.REMOVED.git-id +++ b/deploy/hyperion_imx6.tar.gz.REMOVED.git-id @@ -1 +1 @@ -471d676fb66aa53e3b10d887a1d9e6d3b4afea90 \ No newline at end of file +44d552b5adb3dc5af38edd5e6fb208a0dc75d63d \ No newline at end of file diff --git a/deploy/hyperion_rpi.tar.gz.REMOVED.git-id b/deploy/hyperion_rpi.tar.gz.REMOVED.git-id index 44bbdc58..f3692ead 100644 --- a/deploy/hyperion_rpi.tar.gz.REMOVED.git-id +++ b/deploy/hyperion_rpi.tar.gz.REMOVED.git-id @@ -1 +1 @@ -5c164e4ff52076a530461cdf6966943d52cd39df \ No newline at end of file +5b0f057a8591d76be009018b302977faeec5159a \ No newline at end of file diff --git a/deploy/hyperion_wetek.tar.gz.REMOVED.git-id b/deploy/hyperion_wetek.tar.gz.REMOVED.git-id index 668065d1..4f6eb81f 100644 --- a/deploy/hyperion_wetek.tar.gz.REMOVED.git-id +++ b/deploy/hyperion_wetek.tar.gz.REMOVED.git-id @@ -1 +1 @@ -d2bf44cca4e7753b53acc2ebbdb933ba8f74f93f \ No newline at end of file +7f0d60e7e0c7075cae5cef69ec5408f3087c00df \ No newline at end of file diff --git a/deploy/hyperion_x32.tar.gz.REMOVED.git-id b/deploy/hyperion_x32.tar.gz.REMOVED.git-id index 89355ddf..4866065e 100644 --- a/deploy/hyperion_x32.tar.gz.REMOVED.git-id +++ b/deploy/hyperion_x32.tar.gz.REMOVED.git-id @@ -1 +1 @@ -7936b39302bec31b18f11a321ba6904c12b5c3ec \ No newline at end of file +511ab205cce688c5d7151087d8659905402e5015 \ No newline at end of file diff --git a/deploy/hyperion_x64.tar.gz.REMOVED.git-id b/deploy/hyperion_x64.tar.gz.REMOVED.git-id index 38e3e0b0..812ded3c 100644 --- a/deploy/hyperion_x64.tar.gz.REMOVED.git-id +++ b/deploy/hyperion_x64.tar.gz.REMOVED.git-id @@ -1 +1 @@ -774c67bd8e4e46d2ebf9c223a38fdfd93cae1100 \ No newline at end of file +e26ac1a0bf52bcd54ab00c37ff25d01a457eec9d \ No newline at end of file diff --git a/include/blackborder/BlackBorderDetector.h b/include/blackborder/BlackBorderDetector.h index a3a1c32b..7323ebd1 100644 --- a/include/blackborder/BlackBorderDetector.h +++ b/include/blackborder/BlackBorderDetector.h @@ -1,3 +1,4 @@ +//#include #pragma once // Utils includes @@ -82,10 +83,13 @@ namespace hyperion int firstNonBlackXPixelIndex = -1; int firstNonBlackYPixelIndex = -1; + width--; // remove 1 pixel to get end pixel index + height--; + // find first X pixel of the image for (int x = 0; x < width33percent; ++x) { - const Pixel_T & color1 = image( (width - 1 - x), yCenter); // right side center line check + const Pixel_T & color1 = image( (width - x), yCenter); // right side center line check const Pixel_T & color2 = image(x, height33percent); const Pixel_T & color3 = image(x, height66percent); if (!isBlack(color1) || !isBlack(color2) || !isBlack(color3)) @@ -98,7 +102,7 @@ namespace hyperion // find first Y pixel of the image for (int y = 0; y < height33percent; ++y) { - const Pixel_T & color1 = image(xCenter, (height - 1 - y)); // bottom center line check + const Pixel_T & color1 = image(xCenter, (height - y)); // bottom center line check const Pixel_T & color2 = image(width33percent, y ); const Pixel_T & color3 = image(width66percent, y); if (!isBlack(color1) || !isBlack(color2) || !isBlack(color3)) @@ -174,7 +178,8 @@ namespace hyperion } -// osd detection mode (find x then y at detected x to avoid changes by osd overlays) + /// + /// osd detection mode (find x then y at detected x to avoid changes by osd overlays) template BlackBorder process_osd(const Image & image) { @@ -184,20 +189,21 @@ namespace hyperion int height = image.height(); int width33percent = width / 3; int height33percent = height / 3; -// int width66percent = width33percent * 2; int height66percent = height33percent * 2; -// int xCenter = width / 2; int yCenter = height / 2; int firstNonBlackXPixelIndex = -1; int firstNonBlackYPixelIndex = -1; + width--; // remove 1 pixel to get end pixel index + height--; + // find first X pixel of the image int x; for (x = 0; x < width33percent; ++x) { - const Pixel_T & color1 = image( (width - 1 - x), yCenter); // right side center line check + const Pixel_T & color1 = image( (width - x), yCenter); // right side center line check const Pixel_T & color2 = image(x, height33percent); const Pixel_T & color3 = image(x, height66percent); if (!isBlack(color1) || !isBlack(color2) || !isBlack(color3)) @@ -210,11 +216,13 @@ namespace hyperion // find first Y pixel of the image for (int y = 0; y < height33percent; ++y) { - const Pixel_T & color1 = image(x, (height - 1 - y)); // left side bottom check - const Pixel_T & color2 = image(x, y );// left side top check - const Pixel_T & color3 = image( (width - 1 - x), y); // right side top check - if (!isBlack(color1) || !isBlack(color2) || !isBlack(color3)) + const Pixel_T & color1 = image(x, y );// left side top check + const Pixel_T & color2 = image(x, (height - y)); // left side bottom check + const Pixel_T & color3 = image( (width - x), y); // right side top check + const Pixel_T & color4 = image( (width - x), (height - y)); // right side bottom check + if (!isBlack(color1) || !isBlack(color2) || !isBlack(color3) || !isBlack(color4)) { +// std::cout << "y " << y << " lt " << int(isBlack(color1)) << " lb " << int(isBlack(color2)) << " rt " << int(isBlack(color3)) << " rb " << int(isBlack(color4)) << std::endl; firstNonBlackYPixelIndex = y; break; } diff --git a/libsrc/blackborder/BlackBorderDetector.cpp b/libsrc/blackborder/BlackBorderDetector.cpp index 60a57c30..669f22f9 100644 --- a/libsrc/blackborder/BlackBorderDetector.cpp +++ b/libsrc/blackborder/BlackBorderDetector.cpp @@ -1,6 +1,7 @@ #include // BlackBorders includes #include +#include using namespace hyperion; diff --git a/libsrc/blackborder/BlackBorderProcessor.cpp b/libsrc/blackborder/BlackBorderProcessor.cpp index d6678d51..e7fbc205 100644 --- a/libsrc/blackborder/BlackBorderProcessor.cpp +++ b/libsrc/blackborder/BlackBorderProcessor.cpp @@ -1,12 +1,9 @@ -//* #include /* #include -using std::cout; -using std::endl; using std::setw; -using std::left; //*/ + // Blackborder includes #include diff --git a/libsrc/hyperion/ImageProcessorFactory.cpp b/libsrc/hyperion/ImageProcessorFactory.cpp index c85b35cd..e3e4f44c 100644 --- a/libsrc/hyperion/ImageProcessorFactory.cpp +++ b/libsrc/hyperion/ImageProcessorFactory.cpp @@ -1,7 +1,3 @@ - -// STL includes -#include - // Hyperion includes #include #include diff --git a/libsrc/leddevice/LedDeviceAPA102.cpp b/libsrc/leddevice/LedDeviceAPA102.cpp index 17bec4fc..26a21f72 100644 --- a/libsrc/leddevice/LedDeviceAPA102.cpp +++ b/libsrc/leddevice/LedDeviceAPA102.cpp @@ -1,7 +1,9 @@ + // STL includes #include #include #include +#include // Linux includes #include @@ -17,46 +19,27 @@ LedDeviceAPA102::LedDeviceAPA102(const std::string& outputDevice, const unsigned // empty } -#define MIN(a,b) ((a)<(b)?(a):(b)) -#define MAX(a,b) ((a)>(b)?(a):(b)) - -#define APA102_START_FRAME_BYTES 4 -#define APA102_LED_BYTES 4 -#define APA102_END_FRAME_BITS_MIN 32 -#define APA102_END_FRAME_BITS(leds) MAX((((leds-1)/2)+1),APA102_END_FRAME_BITS_MIN) -#define APA102_END_FRAME_BYTES(leds) (((APA102_END_FRAME_BITS(leds)-1)/8)+1) -#define APA102_LED_HEADER 0xe0 -#define APA102_LED_MAX_INTENSITY 0x1f - int LedDeviceAPA102::write(const std::vector &ledValues) { - const unsigned int startFrameSize = APA102_START_FRAME_BYTES; - const unsigned int ledsCount = ledValues.size() ; - const unsigned int ledsSize = ledsCount * APA102_LED_BYTES ; - const unsigned int endFrameBits = APA102_END_FRAME_BITS(ledsCount) ; - const unsigned int endFrameSize = APA102_END_FRAME_BYTES(ledsCount) ; - const unsigned int transferSize = startFrameSize + ledsSize + endFrameSize ; - - if(_ledBuffer.size() != transferSize){ - _ledBuffer.resize(transferSize, 0x00); + const unsigned int startFrameSize = 4; + const unsigned int endFrameSize = std::max(((ledValues.size() + 15) / 16), 4); + const unsigned int mLedCount = (ledValues.size() * 4) + startFrameSize + endFrameSize; + if(_ledBuffer.size() != mLedCount){ + _ledBuffer.resize(mLedCount, 0xFF); + _ledBuffer[0] = 0x00; + _ledBuffer[1] = 0x00; + _ledBuffer[2] = 0x00; + _ledBuffer[3] = 0x00; } - - unsigned idx = 0, i; - for (i=0; i