1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

hyperion.ng amlogic grabber on ODROID-C2

Discussion in 'Development' started by danielfmo, 20 July 2017.

  1. danielfmo

    danielfmo New Member

    Messages:
    25
    Hardware:
    RPi2, 32/64bit, +Arduino, +nodeMCU/ESP8266
    Hello everyone,

    I'm an Hyperion user for ages so thank you all for the great work and community.
    I'm giving a go with hyperion.ng on my ODROID-C2, the goal is to make it work with an NodeMCU (ESP8266) and APA102 LEDs

    I've followed the CompileHowTo and I get the following error:
    [hyperiond AMLOGICGRABBER] <ERROR> Failed to retrieve video state from device: 22 - Invalid argument

    I'm on Ubuntu 16.04 with kernel 3.14.
    Bellow the full hyperion log and config file.

    Code:
    [hyperiond ChannelAdjust_BLACK] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ChannelAdjust_WHITE] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 255,255,255
    [hyperiond ChannelAdjust_RED] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 255,0,0
    [hyperiond ChannelAdjust_GREEN] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,255,0
    [hyperiond ChannelAdjust_BLUE] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,255
    [hyperiond ChannelAdjust_CYAN] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,255,255
    [hyperiond ChannelAdjust_MAGENTA] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 255,0,255
    [hyperiond ChannelAdjust_YELLOW] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 255,255,0
    [hyperiond ] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond Core] <INFO> ColorAdjustment 'default' => [0; 25]
    [hyperiond Core] <DEBUG> <Hyperion.cpp:317:getLedLayoutGridSize()> led layout grid: 10x7
    [hyperiond ComponentRegister] <INFO> Json/Proto forwarder: off
    [hyperiond LedDevice] <WARNING> latchTime(0) is bigger/equal rewriteTime(10)
    [hyperiond LedDevice] <INFO> LedDevice 'file' configured.
    [hyperiond Core] <INFO> Creating linear smoothing
    [hyperiond Smoothing] <INFO> Created linear-smoothing with interval: 40 ms, settlingTime: 200 ms, updateDelay: 0 frames
    [hyperiond ComponentRegister] <INFO> Smoothing: activated
    [hyperiond ComponentRegister] <INFO> LED device: activated
    [hyperiond EFFECTENGINE] <INFO> effect 'Rainbow swirl' not loaded, because it is disabled in hyperion config
    [hyperiond EFFECTENGINE] <INFO> effect 'X-Mas' not loaded, because it is disabled in hyperion config
    [hyperiond EFFECTENGINE] <INFO> 29 effects loaded from directory :/effects/
    [hyperiond EFFECTENGINE] <INFO> 18 effect schemas loaded from directory :/effects/schema/
    [hyperiond EFFECTENGINE] <INFO> 0 effects loaded from directory /storage/hyperion/effects
    [hyperiond EFFECTENGINE] <INFO> 0 effects loaded from directory /usr/share/hyperion/effects
    [hyperiond EFFECTENGINE] <DEBUG> <EffectEngine.cpp:43:EffectEngine()> Initializing Python interpreter
    [hyperiond Core] <DEBUG> <Hyperion.cpp:445:Hyperion()> configured leds: 26 hw leds: 26
    [hyperiond ChannelAdjust_BLACK] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,0
    [hyperiond ChannelAdjust_RED] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 255,0,0
    [hyperiond ChannelAdjust_GREEN] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,255,0
    [hyperiond ChannelAdjust_BLUE] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,0,255
    [hyperiond ChannelAdjust_CYAN] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 0,255,255
    [hyperiond ChannelAdjust_MAGENTA] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 255,0,255
    [hyperiond ChannelAdjust_YELLOW] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 255,255,0
    [hyperiond ChannelAdjust_WHITE] <DEBUG> <RgbChannelAdjustment.cpp:30:resetInitialized()> initialize mapping with 255,255,255
    [hyperiond MAIN] <INFO> Hyperion initialized
    [hyperiond EFFECTENGINE] <INFO> run effect Rainbow swirl fast on channel 0
    [hyperiond BLACKBORDER] <DEBUG> <BlackBorderDetector.cpp:26:calculateThreshold()> threshold set to 0.050000 (13)
    [hyperiond BLACKBORDER] <DEBUG> <ImageProcessor.cpp:62:setLedMappingType()> set led mapping to type 0
    [hyperiond Core] <INFO> Register new input source named 'Rainbow swirl fast' for priority channel '0'
    [hyperiond MAIN] <INFO> Inital foreground effect 'Rainbow swirl fast' started
    [hyperiond EFFECTENGINE] <INFO> run effect Warm mood blobs on channel 254
    [hyperiond BLACKBORDER] <DEBUG> <BlackBorderDetector.cpp:26:calculateThreshold()> threshold set to 0.050000 (13)
    [hyperiond BLACKBORDER] <DEBUG> <ImageProcessor.cpp:62:setLedMappingType()> set led mapping to type 0
    [hyperiond Core] <INFO> Register new input source named 'Warm mood blobs' for priority channel '254'
    [hyperiond MAIN] <INFO> Inital background effect 'Warm mood blobs' started
    [hyperiond MAIN] <DEBUG> <hyperiond.cpp:294:createKODIVideoChecker()> KODI checker created
    [hyperiond ComponentRegister] <INFO> KodiVideoChecker: off
    [hyperiond MAIN] <INFO> Json server created and started on port 19444
    [hyperiond MAIN] <INFO> Proto server created and started on port 19445
    [hyperiond MAIN] <DEBUG> <hyperiond.cpp:347:startNetworkServices()> Boblight server created
    [hyperiond ComponentRegister] <INFO> Boblight server: off
    [hyperiond Core] <INFO> Register new input source named 'UDPLISTENER' for priority channel '200'
    [hyperiond MAIN] <DEBUG> <hyperiond.cpp:366:startNetworkServices()> UDP listener created
    [hyperiond ComponentRegister] <INFO> UDP listener: off
    [hyperiond MAIN] <DEBUG> <hyperiond.cpp:389:startNetworkServices()> UDP LIstener mDNS responder started
    [hyperiond MAIN] <DEBUG> <hyperiond.cpp:396:startNetworkServices()> Json mDNS responder started
    [hyperiond MAIN] <DEBUG> <hyperiond.cpp:402:startNetworkServices()> Proto mDNS responder started
    [hyperiond ComponentRegister] <INFO> V4L capture device: off
    [hyperiond BLACKBORDER] <DEBUG> <BlackBorderDetector.cpp:26:calculateThreshold()> threshold set to 0.050000 (13)
    [hyperiond BLACKBORDER] <DEBUG> <ImageProcessor.cpp:62:setLedMappingType()> set led mapping to type 0
    [hyperiond ComponentRegister] <INFO> Blackborder detector: off
    [hyperiond AMLOGICGRABBER] <DEBUG> <AmlogicGrabber.cpp:39:AmlogicGrabber()> constructed(160 x 160)
    [hyperiond Core] <INFO> Register new input source named 'AmLogic' for priority channel '249'
    [hyperiond MAIN] <INFO> AMLOGIC grabber created and started
    [hyperiond BLACKBORDER] <DEBUG> <BlackBorderDetector.cpp:26:calculateThreshold()> threshold set to 0.050000 (13)
    [hyperiond BLACKBORDER] <DEBUG> <ImageProcessor.cpp:62:setLedMappingType()> set led mapping to type 0
    [hyperiond ComponentRegister] <INFO> Blackborder detector: off
    [hyperiond FRAMEBUFFERGRABBER] <ERROR> Display opened with resolution: [email protected]
    [hyperiond Core] <INFO> Register new input source named 'FrameBuffer' for priority channel '250'
    [hyperiond MAIN] <INFO> Framebuffer grabber created and started
    [hyperiond ComponentRegister] <INFO> Framegrabber: activated
    [hyperiond ComponentRegister] <INFO> Framegrabber: activated
    [hyperiond MAIN] <INFO> Hyperion started
    [hyperiond WEBSERVER] <ERROR> document_root '/path/to/files' is invalid, set to default ':/webconfig'
    [hyperiond WEBSERVER] <DEBUG> <WebConfig.cpp:38:WebConfig()> WebUI initialized, document root: :/webconfig
    [hyperiond WEBSERVER] <INFO> started on port 8099 name 'Hyperion WebConfig'
    [hyperiond WEBSERVER] <DEBUG> <StaticFileServing.cpp:62:onServerStarted()> Web Config mDNS responder started
    [hyperiond BLACKBORDER] <DEBUG> <BlackBorderDetector.cpp:26:calculateThreshold()> threshold set to 0.050000 (13)
    [hyperiond BLACKBORDER] <DEBUG> <ImageProcessor.cpp:62:setLedMappingType()> set led mapping to type 0
    [hyperiond AMLOGICGRABBER] <ERROR> Failed to retrieve video state from device: 22 - Invalid argument
    
    Code:
    {
        "general" :
        {
            "name"       : "MyHyperionConfig",
            "showOptHelp" : true,
            "configVersion" : 2
        },
      
        "logger" :
        {
            "level" : "debug"
        },
    
        /// Device configuration contains the following fields:
        /// * 'name'       : The user friendly name of the device (only used for display purposes)
        /// * 'type'       : The type of the device or leds (known types for now are
        ///  APA102, WS2801, P9813, LPD6803, LPD8806,
        ///---------PWM---------,
        ///WS2812b (just RPi1), WS281X (RPi1, RPi2, RPi3),
        ///--------OTHER--------,
        ///PhilipsHUE, AtmoOrb, PiBlaster, Tinkerforge, FadeCandy, RawHID (USB), UDP, SEDU, TPM2, USBASP-WS2801, USBASP-WS2812,
        ///------3rd PARTY------,
        ///Adalight, AdalightAPA102, Atmo, Lightpack, Multi-Lightpack, Paintpack, Test (file), None)
        /// * [device type specific configuration]
        /// * 'colorOrder' : The order of the color bytes ('rgb', 'rbg', 'bgr', etc.).
        /// * 'rewriteTime': in ms. Data is resend to leds, if no new data is available in thistime. 0 means no refresh
        /// * 'latchTime' : minimum time between led writes. 0 means no limit. default 10 means a rate of max 100Hz write time
        "device" :
        {
            "type"       : "file",
            "output"     : "/dev/null",
            "rate"     : 1000000,
            "colorOrder" : "rgb",
            "rewriteTime": 0,
            "latchTime" : 10
        },
    
        /// Color manipulation configuration used to tune the output colors to specific surroundings.
        /// The configuration contains a list of color-transforms. Each transform contains the
        /// following fields:
        ///  * 'imageToLedMappingType'      : multicolor_mean - every led has it's own calculatedmean color
        ///                                   unicolor_mean   - every led has same color, color is the mean of whole image
        ///  * 'channelAdjustment'
        ///      * 'id'     : The unique identifier of the channel adjustments (eg 'device_1')
        ///      * 'leds'   : The indices (or index ranges) of the leds to which this channel adjustment applies
        ///            (eg '0-5, 9, 11, 12-17'). The indices are zero based.
        ///      * 'black'/'white'/'red'/'green'/'blue'/'cyan'/'magenta'/'yellow' : Array of RGB to adjust the output color
        ///      * 'gammaRed'/'gammaGreen'/'gammaBlue'  : Gamma value for each channel
        ///      * 'id'     : The unique identifier of the channel adjustments (eg 'device_1')
        ///      * 'id'     : The unique identifier of the channel adjustments (eg 'device_1')
        ///      * 'backlightThreshold' : Minimum brightness (backlight)
        ///      * 'backlightColored'   : backlight with color, instead of white
        ///      * 'brightness' : overall brightness
        ///      * 'brightnessCompensation' : 100 means brightness differences are compensated (white is as bright as red, is as bright as yellow.
        ///                                   0 means white is 3x brighter than red, yellow is 2x brighter than red
        "color" :
        {
            "imageToLedMappingType" : "multicolor_mean",
            "channelAdjustment" :
            [
                {
                    "id"   : "default",
                    "leds" : "*",
                    "black"   : [0,0,0],
                    "white"   : [255,255,255],
                    "red"     : [255,0,0],
                    "green"   : [0,255,0],
                    "blue"    : [0,0,255],
                    "cyan"    : [0,255,255],
                    "magenta" : [255,0,255],
                    "yellow"  : [255,255,0],
                    "gammaRed"   : 1.5,
                    "gammaGreen" : 1.5,
                    "gammaBlue"  : 1.5,
                    "backlightThreshold"  : 0,
                    "backlightColored"  : false,
                    "brightness" : 100,
                    "brightnessCompensation" : 80
                }
            ]
        },
    
        /// smoothing
        ///  * 'smoothing' : Smoothing of the colors in the time-domain with the following tuning
        ///                  parameters:
        ///            - 'enable'          Enable or disable the smoothing (true/false)
        ///            - 'type'             The type of smoothing algorithm ('linear' or 'none')
        ///            - 'time_ms'          The time constant for smoothing algorithm in milliseconds
        ///            - 'updateFrequency'  The update frequency of the leds in Hz
        ///            - 'updateDelay'      The delay of the output to leds (in periods of smoothing)
        ///            - 'continuousOutput' Flag for enabling continuous output to Leds regardless of new input or not
        "smoothing" :
        {
            "enable"           : true,
            "type"             : "linear",
            "time_ms"          : 200,
            "updateFrequency"  : 25.0000,
            "updateDelay"      : 0,
            "continuousOutput" : true
        },
    
        ///  The configuration for the frame-grabber, contains the following items:
        ///   * enable       : true if the framegrabber (platform grabber) should be activated
        ///   * type         : type of grabber. (auto|osx|dispmanx|amlogic|x11|framebuffer) [auto]
        ///   * width        : The width of the grabbed frames [pixels]
        ///   * height       : The height of the grabbed frames [pixels]
        ///   * frequency_Hz : The frequency of the frame grab [Hz]
        ///   * priority     : The priority of the frame-gabber (Default=250) HINT: lower value result in HIGHER priority!
        ///   * ATTENTION    : Power-of-Two resolution is not supported and leads to unexpected behaviour!
        "framegrabber" :
        {
            // for all type of grabbers
            "enable"       : true,
            "type"         : "amlogic",
            "frequency_Hz" : 10,
            "priority"     : 250,
    
            // valid for grabber: osx|dispmanx|amlogic|framebuffer
            "width"        : 96,
            "height"       : 96,
          
            // valid for x11
            "useXGetImage"              : false,
            "horizontalPixelDecimation" : 8,
            "verticalPixelDecimation"   : 8,
          
            // valid for dispmanx and x11
            "cropLeft"   : 0,
            "cropRight"  : 0,
            "cropTop"    : 0,
            "cropBottom" : 0,
    
            // valid for framebuffer
            "device"     : "/dev/fb0"
        },
    
        /// The black border configuration, contains the following items:
        ///  * enable             : true if the detector should be activated
        ///  * threshold          : Value below which a pixel is regarded as black (value between 0 and 100 [%])
        ///  * unknownFrameCnt    : Number of frames without any detection before the border is set to 0 (default 600)
        ///  * borderFrameCnt     : Number of frames before a consistent detected border gets set (default 50)
        ///  * maxInconsistentCnt : Number of inconsistent frames that are ignored before a new border gets a chance to proof consistency
        ///  * blurRemoveCnt      : Number of pixels that get removed from the detected border to cut away blur (default 1)
        ///  * mode               : Border detection mode (values=default,classic,osd)
        "blackborderdetector" :
        {
            "enable"             : false,
            "threshold"          : 5,
            "unknownFrameCnt"    : 600,
            "borderFrameCnt"     : 50,
            "maxInconsistentCnt" : 10,
            "blurRemoveCnt"      : 1,
            "mode"               : "default"
        },
    
        /// The configuration of the Kodi connection used to enable and disable the frame-grabber. Contains the following fields:
        ///  * enable            : enable/disable Kodi-Checker
        ///  * kodiAddress       : The IP address of the Kodi-host
        ///  * kodiTcpPort       : The TCP-port of the Kodi-server
        ///  * grabVideo         : Flag indicating that the frame-grabber is on(true) during video playback
        ///  * grabPictures      : Flag indicating that the frame-grabber is on(true) during picture show
        ///  * grabAudio         : Flag indicating that the frame-grabber is on(true) during audio playback
        ///  * grabMenu          : Flag indicating that the frame-grabber is on(true) at the Kodi menu
        ///  * grabPause         : Flag indicating that the frame-grabber is on(true) at player state "pause"
        ///  * grabScreensaver   : Flag indicating that the frame-grabber is on(true) when Kodi is on screensaver
        ///  * enable3DDetection : Flag indicating that the frame-grabber should switch to a 3D compatible modus if a 3D video is playing
        "kodiVideoChecker" :
        {
            "enable"            : false,
            "kodiAddress"       : "127.0.0.1",
            "kodiTcpPort"       : 9090,
            "grabVideo"         : true,
            "grabPictures"      : true,
            "grabAudio"         : true,
            "grabMenu"          : false,
            "grabPause"         : false,
            "grabScreensaver"   : false,
            "enable3DDetection" : false
        },
    
        /// foregroundEffect sets a "booteffect" or "bootcolor" during startup for a given period in ms (duration_ms)
        ///  * enable      : if true, foreground effect is enabled
        ///  * type        : choose between "color" or "effect"
        ///  * color       : if type is color, a color is used (RGB) (example: [0,0,255])
        ///  * effect      : if type is effect a effect is used (example: "Rainbow swirl fast")
        ///  * duration_ms : The duration of the selected effect or color (0=endless)
        ///            HINT: "foregroundEffect" starts always with priority 0, so it blocks all remotes and grabbers if the duration_ms is endless (0)
        "foregroundEffect" :
        {
            "enable"      : true,
            "type"        : "effect",
            "color"       : [0,0,255],
            "effect"      : "Rainbow swirl fast",
            "duration_ms" : 3000
        },
      
        /// backgroundEffect sets a background effect or color. It is used when all capture devices are stopped (with the help of the kodiVideChecker or manual via remote). Could be also selected via priorities selection.
        ///  * enable : if true, background effect is enabled
        ///  * type   : choose between "color" or "effect"
        ///  * color  : if type is color, a color is used (RGB) (example: [255,134,0])
        ///  * effect : if type is effect a effect is used (example: "Rainbow swirl fast")
        "backgroundEffect" :
        {
            "enable" : true,
            "type"   : "effect",
            "color"  : [255,138,0],
            "effect" : "Warm mood blobs"
        },
    
        /// The configuration of the Json/Proto forwarder. Forward messages to multiple instances of Hyperion on same and/or other hosts
        /// 'proto' is mostly used for video streams and 'json' for effects
        ///  * enable : Enable or disable the forwarder (true/false)
        ///  * proto  : Proto server adress and port of your target. Syntax:[IP:PORT] -> ["127.0.0.1:19447"] or more instances to forward ["127.0.0.1:19447","192.168.0.24:19449"]
        ///  * json   : Json server adress and port of your target. Syntax:[IP:PORT] -> ["127.0.0.1:19446"] or more instances to forward ["127.0.0.1:19446","192.168.0.24:19448"]
        ///  HINT:If you redirect to "127.0.0.1" (localhost) you could start a second hyperion with another device/led config!
        ///       Be sure your client(s) is/are listening on the configured ports. The second Hyperion (if used) also needs to be configured! (HyperCon -> External -> Json Server/Proto Server)
        "forwarder" :
        {
            "enable" : false,
            "proto"  : ["127.0.0.1:19447"],
            "json"   : ["127.0.0.1:19446"]
        },
    
        /// The configuration of the Json server which enables the json remote interface
        ///  * port : Port at which the json server is started
        "jsonServer" :
        {
            "port" : 19444
        },
    
        /// The configuration of the Proto server which enables the protobuffer remote interface
        ///  * port : Port at which the protobuffer server is started
        "protoServer" :
        {
            "port" : 19445
        },
    
        /// The configuration of the boblight server which enables the boblight remote interface
        ///  * enable   : Enable or disable the boblight server (true/false)
        ///  * port     : Port at which the boblight server is started
        ///  * priority : Priority of the boblight server (Default=201) HINT: lower value result in HIGHER priority!
         "boblightServer" :
         {
             "enable"   : false,
             "port"     : 19333,
             "priority" : 201
         },
    
        /// The configuration of the udp listener
        ///  * enable   : Enable or disable the udp listener (true/false)
        ///  * address  : The listener address, pre configured is multicast which listen also to unicast ip addresses at the same time. If emtpy, multicast is disabled and it also accepts unicast from all IPs
        ///  * port     : Port at which the udp listener starts
        ///  * priority : Priority of the udp listener server (Default=200)
        ///  * timeout  : The timeout sets the timelimit for a "soft" off of the udp listener, if no packages are received (for example to switch to a gabber or InitialEffect - background-effect)
        ///  * shared   : If true, the udp listener is shared across all hyperion instances (if using more than one (forwarder))
        "udpListener" :
        {
            "enable"   : false,
            "address"  : "239.255.28.01",
            "port"     : 2801,
            "priority" : 200,
            "timeout"  : 10000,
            "shared"   : false
        },
    
        /// Configuration of the Hyperion webserver
        ///  * enable        : enable or disable the webserver (true/false)
        ///  * document_root : path to hyperion webapp files (webconfig developer only)
        ///  * port          : the port where hyperion webapp is accasible
        "webConfig" :
        {
            "enable"        : true,
            "document_root" : "/path/to/files",
            "port"          : 8099
        },
    
        /// The configuration of the effect engine, contains the following items:
        ///  * paths : An array with absolute/relative location(s) of directories with effects
        ///  * disable : An array with effect names that shouldn't be loaded
        "effects" :
        {
            "paths" :
            [
                "/storage/hyperion/effects",
                "/usr/share/hyperion/effects"
            ],
            "disable" :
            [
                "Rainbow swirl",
                "X-Mas"
            ]
        },
      
        /// Recreate and save led layouts made with web config. These values are just helpers for ui, not for Hyperion.
        "ledConfig" :
        {
            "top"         : 8,
            "bottom"    : 8,
            "left"        : 5,
            "right"        : 5,
            "glength"    : 0,
            "gpos"        : 0,
            "position"    : 0,
            "reverse"    : false,
            "hdepth"    : 8,
            "vdepth"    : 5,
            "overlap"    : 0,
            "edgegap"    : 0
        },
      
        ///  The configuration for each individual led. This contains the specification of the area
        ///  averaged of an input image for each led to determine its color. Each item in the list
        ///  contains the following fields:
        ///  * index: The index of the led. This determines its location in the string of leds; zero
        ///           being the first led.
        ///  * hscan: The fractional part of the image along the horizontal used for the averaging
        ///           (minimum and maximum inclusive)
        ///  * vscan: The fractional part of the image along the vertical used for the averaging
        ///           (minimum and maximum inclusive)
      
        "leds":
        [
            {
                "hscan": {
                    "maximum": 0.125,
                    "minimum": 0
                },
                "index": 0,
                "vscan": {
                    "maximum": 0.08,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.25,
                    "minimum": 0.125
                },
                "index": 1,
                "vscan": {
                    "maximum": 0.08,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.375,
                    "minimum": 0.25
                },
                "index": 2,
                "vscan": {
                    "maximum": 0.08,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.5,
                    "minimum": 0.375
                },
                "index": 3,
                "vscan": {
                    "maximum": 0.08,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.625,
                    "minimum": 0.5
                },
                "index": 4,
                "vscan": {
                    "maximum": 0.08,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.75,
                    "minimum": 0.625
                },
                "index": 5,
                "vscan": {
                    "maximum": 0.08,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.875,
                    "minimum": 0.75
                },
                "index": 6,
                "vscan": {
                    "maximum": 0.08,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.875
                },
                "index": 7,
                "vscan": {
                    "maximum": 0.08,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.95
                },
                "index": 8,
                "vscan": {
                    "maximum": 0.2,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.95
                },
                "index": 9,
                "vscan": {
                    "maximum": 0.4,
                    "minimum": 0.2
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.95
                },
                "index": 10,
                "vscan": {
                    "maximum": 0.6,
                    "minimum": 0.4
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.95
                },
                "index": 11,
                "vscan": {
                    "maximum": 0.8,
                    "minimum": 0.6
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.95
                },
                "index": 12,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.8
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.875
                },
                "index": 13,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.92
                }
            },
            {
                "hscan": {
                    "maximum": 0.875,
                    "minimum": 0.75
                },
                "index": 14,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.92
                }
            },
            {
                "hscan": {
                    "maximum": 0.75,
                    "minimum": 0.625
                },
                "index": 15,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.92
                }
            },
            {
                "hscan": {
                    "maximum": 0.625,
                    "minimum": 0.5
                },
                "index": 16,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.92
                }
            },
            {
                "hscan": {
                    "maximum": 0.5,
                    "minimum": 0.375
                },
                "index": 17,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.92
                }
            },
            {
                "hscan": {
                    "maximum": 0.375,
                    "minimum": 0.25
                },
                "index": 18,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.92
                }
            },
            {
                "hscan": {
                    "maximum": 0.25,
                    "minimum": 0.125
                },
                "index": 19,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.92
                }
            },
            {
                "hscan": {
                    "maximum": 0.125,
                    "minimum": 0
                },
                "index": 20,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.92
                }
            },
            {
                "hscan": {
                    "maximum": 0.05,
                    "minimum": 0
                },
                "index": 21,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.8
                }
            },
            {
                "hscan": {
                    "maximum": 0.05,
                    "minimum": 0
                },
                "index": 22,
                "vscan": {
                    "maximum": 0.8,
                    "minimum": 0.6
                }
            },
            {
                "hscan": {
                    "maximum": 0.05,
                    "minimum": 0
                },
                "index": 23,
                "vscan": {
                    "maximum": 0.6,
                    "minimum": 0.4
                }
            },
            {
                "hscan": {
                    "maximum": 0.05,
                    "minimum": 0
                },
                "index": 24,
                "vscan": {
                    "maximum": 0.4,
                    "minimum": 0.2
                }
            },
            {
                "hscan": {
                    "maximum": 0.05,
                    "minimum": 0
                },
                "index": 25,
                "vscan": {
                    "maximum": 0.2,
                    "minimum": 0
                }
            }
        ]
    }
    
    [EDIT]
    also the syslog

    Code:
    Jul 20 17:26:52 odroid64 hyperiond[3728]: latchTime(0) is bigger/equal rewriteTime(10)
    Jul 20 17:26:52 odroid64 hyperiond[3728]: Display opened with resolution: [email protected]
    Jul 20 17:26:52 odroid64 hyperiond[3728]: document_root '/path/to/files' is invalid, set to default ':/webconfig'
    Jul 20 17:26:52 odroid64 hyperiond[3728]: Failed to retrieve video state from device: 22 - Invalid argument
    Jul 20 17:26:52 odroid64 kernel: [ 1538.462629] hyperiond[3728]: unhandled input address range fault (11) at 0x306050306050b, esr 0x92000004
    Jul 20 17:26:52 odroid64 kernel: [ 1538.462643] pgd = ffffffc04cf98000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.462666] [306050306050b] *pgd=0000000000000000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465071]
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465080] CPU: 1 PID: 3728 Comm: hyperiond Not tainted 3.14.79-115 #1
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465085] task: ffffffc057bcac80 ti: ffffffc054604000 task.ti: ffffffc054604000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465099] PC is at 0x7f9b449f00
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465103] LR is at 0x7f9b44a058
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465107] pc : [<0000007f9b449f00>] lr : [<0000007f9b44a058>] pstate: 80000000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465111] sp : 0000007fc576dcf0
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465114] x29: 0000007fc576dcf0 x28: 0000000000000000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465119] x27: 0000007fc576de90 x26: 0000000000000001
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465124] x25: 0000000000935a88 x24: 0000000000000000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465129] x23: 0000007fc576de90 x22: 0000007f9b69c000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465134] x21: 00000000008276a0 x20: 0000007fc576de90
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465139] x19: 0000000000935a88 x18: 0000000000000014
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465144] x17: 0000007f9b0c3880 x16: 0000007f9b69d018
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465149] x15: 00000000000001db x14: 0000000000000000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465154] x13: 0000000000000008 x12: a3d70a3d70a3d70b
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465159] x11: 0000007fc576d000 x10: 0000000000000032
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465163] x9 : 0000000000000226 x8 : 00000000008f5fd0
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465168] x7 : 00000000009352f0 x6 : 00000000008f6580
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465173] x5 : 0000000000000000 x4 : 0000000000000000
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465178] x3 : 0000000000000000 x2 : 0503060503060503
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465182] x1 : 0000000000000000 x0 : 000000000093d8a0
    Jul 20 17:26:52 odroid64 kernel: [ 1538.465187]
    
    Thank you
     
  2. redPanther

    redPanther Moderator Developer

    Messages:
    211
    Hardware:
    RPi1/Zero, RPi2, 32/64bit, +Arduino
    Please try with latest version. Make sure you made all the kernel stuff to activate amvideocap device. I use latest kernel from official hardkernel repo.

    On my c2 it runs now smoothly.
     
  3. Marciano

    Marciano New Member

    Messages:
    26
    Hardware:
    32/64bit, +Arduino
    Would you mind to share your config?
    And what Leds are you using?

    I tried to get it work on my ODROID 2 running LibreELEC 9 but i can't get the color calibration working and the response of my leds are very slow. (APA102)
    And i have a lot of flickering what i don't have with hyperion 1
     
  4. redPanther

    redPanther Moderator Developer

    Messages:
    211
    Hardware:
    RPi1/Zero, RPi2, 32/64bit, +Arduino
    I use ubuntu for c2, because I have to compile an do lot's of developer stuff. Libreelec is not made for that. I also have no spare sd card to test with libreelec. I downloaded the latest c2 kernel from hardkernel's github repo and changed some stuff:
    amvideo capture: module
    cma memory: 16
    zone order: 13
    + this patch:
    (+ patches regarding ge2d: https://forum.odroid.com/viewtopic.php?f=136&t=20901#p199945 (it's optional)

    I had no leds attached. At first I only watched the live view in webui, then forwarded to my desktop hyperion installation with attached arduino mega with some ws2812 + 4 pwm/analog stripes.

    The config on my c2 was the default config. (+forwarder set).

    I noticed, that usage of amvideocap/ge2d capture interface is extremly expensive. The cpu usage in fb mode is around 5-7% and it rises up to 18-20% when accelerated stuff should be captured (ge2d direct usage performs a bit better).
     
  5. danielfmo

    danielfmo New Member

    Messages:
    25
    Hardware:
    RPi2, 32/64bit, +Arduino, +nodeMCU/ESP8266
    Hi @redPanther,

    It passed some time but finally I got some time to try it out. Though still need your help.

    My goal is to be able to use Hyperion.NG with Kodi and Monnlight so I started from scratch using Hardkernel's Ubunto v2.4 image.
    I proceeded as following:
    1. Get kernel source from https://github.com/hardkernel/linux;
    2. Set CONFIG_AM_VIDEOCAPTURE=y
    3. Set CONFIG_CMA_SIZE_MBYTES=32 (16 not enough for moonlight)
    4. Kept FORCE_MAX_ZONEORDER to 11 (apparently not a good idea do change it)
    5. Apply your patch
    6. Apply THIS and THIS change list regarding ge2d as you mentioned (HERE)

    The results are that Hyperion.ng works flawlessly with moonlight never getting higher than 10% CPU usage, but (there is always one) kodi is no more hardware accelerated, it takes all CPU when playing files from HERE and the video lags a lot, also hyperion does not capture anything.

    Here is my hyperion.ng config:
    Code:
    {
        "backgroundEffect": {
            "color": [
                255,
                138,
                0
            ],
            "effect": "Warm mood blobs",
            "enable": true,
            "type": "effect"
        },
        "blackborderdetector": {
            "blurRemoveCnt": 1,
            "borderFrameCnt": 50,
            "enable": true,
            "maxInconsistentCnt": 10,
            "mode": "default",
            "threshold": 5,
            "unknownFrameCnt": 600
        },
        "boblightServer": {
            "enable": false,
            "port": 19333,
            "priority": 201
        },
        "color": {
            "channelAdjustment": [
                {
                    "backlightColored": false,
                    "backlightThreshold": 0,
                    "black": [
                        0,
                        0,
                        0
                    ],
                    "blue": [
                        0,
                        0,
                        255
                    ],
                    "brightness": 80,
                    "brightnessCompensation": 100,
                    "cyan": [
                        0,
                        200,
                        255
                    ],
                    "gammaBlue": 1.5,
                    "gammaGreen": 1.5,
                    "gammaRed": 1.6000000000000001,
                    "green": [
                        0,
                        200,
                        0
                    ],
                    "id": "default",
                    "leds": "*",
                    "magenta": [
                        225,
                        0,
                        255
                    ],
                    "red": [
                        225,
                        0,
                        0
                    ],
                    "white": [
                        225,
                        200,
                        255
                    ],
                    "yellow": [
                        225,
                        200,
                        0
                    ]
                }
            ],
            "imageToLedMappingType": "multicolor_mean"
        },
        "device": {
            "colorOrder": "rgb",
            "delayAfterConnect": 1500,
            "latchTime": 15,
            "lightberry_apa102_mode": false,
            "output": "/dev/ttyACM0",
            "rate": 2000000,
            "rewriteTime": 5000,
            "type": "adalight"
        },
        "effects": {
            "disable": [
                ""
            ],
            "paths": [
                "$ROOT/custom-effects"
            ]
        },
        "foregroundEffect": {
            "color": [
                0,
                0,
                255
            ],
            "duration_ms": 3000,
            "effect": "Knight rider",
            "enable": true,
            "type": "effect"
        },
        "forwarder": {
            "enable": false,
            "json": [
                "127.0.0.1:19446"
            ],
            "proto": [
                "127.0.0.1:19447"
            ]
        },
        "framegrabber": {
            "cropBottom": 0,
            "cropLeft": 0,
            "cropRight": 0,
            "cropTop": 0,
            "device": "/dev/fb0",
            "enable": true,
            "frequency_Hz": 30,
            "height": 45,
            "horizontalPixelDecimation": 8,
            "priority": 250,
            "type": "auto",
            "useXGetImage": false,
            "verticalPixelDecimation": 8,
            "width": 80
        },
        "general": {
            "name": "Odroid",
            "showOptHelp": true
        },
        "grabberV4L2": [
            {
                "blueSignalThreshold": 5,
                "cropBottom": 0,
                "cropLeft": 0,
                "cropRight": 0,
                "cropTop": 0,
                "device": "auto",
                "enable": false,
                "frameDecimation": 2,
                "greenSignalThreshold": 5,
                "height": 0,
                "input": 0,
                "priority": 240,
                "redSignalThreshold": 5,
                "sDHOffsetMax": 0.75,
                "sDHOffsetMin": 0.25,
                "sDVOffsetMax": 0.75,
                "sDVOffsetMin": 0.25,
                "signalDetection": false,
                "sizeDecimation": 8,
                "standard": "PAL",
                "useKodiChecker": false,
                "width": 0
            }
        ],
        "jsonServer": {
            "port": 19444
        },
        "kodiVideoChecker": {
            "enable": false,
            "enable3DDetection": false,
            "grabAudio": true,
            "grabMenu": false,
            "grabPause": false,
            "grabPictures": true,
            "grabScreensaver": false,
            "grabVideo": true,
            "kodiAddress": "localhost",
            "kodiTcpPort": 9090
        },
        "ledConfig": {
            "bottom": 64,
            "edgegap": 0,
            "glength": 0,
            "gpos": 0,
            "hdepth": 5,
            "left": 36,
            "overlap": 0,
            "position": 164,
            "reverse": true,
            "right": 36,
            "top": 64,
            "vdepth": 3
        },
        "leds": [
            {
                "hscan": {
                    "maximum": 0.015599999999999999,
                    "minimum": 0
                },
                "index": 0,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.031300000000000001,
                    "minimum": 0.015599999999999999
                },
                "index": 1,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.046899999999999997,
                    "minimum": 0.031300000000000001
                },
                "index": 2,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.0625,
                    "minimum": 0.046899999999999997
                },
                "index": 3,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.078100000000000003,
                    "minimum": 0.0625
                },
                "index": 4,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.093799999999999994,
                    "minimum": 0.078100000000000003
                },
                "index": 5,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.1094,
                    "minimum": 0.093799999999999994
                },
                "index": 6,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.125,
                    "minimum": 0.1094
                },
                "index": 7,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.1406,
                    "minimum": 0.125
                },
                "index": 8,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.15629999999999999,
                    "minimum": 0.1406
                },
                "index": 9,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.1719,
                    "minimum": 0.15629999999999999
                },
                "index": 10,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.1875,
                    "minimum": 0.1719
                },
                "index": 11,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.2031,
                    "minimum": 0.1875
                },
                "index": 12,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.21879999999999999,
                    "minimum": 0.2031
                },
                "index": 13,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.2344,
                    "minimum": 0.21879999999999999
                },
                "index": 14,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.25,
                    "minimum": 0.2344
                },
                "index": 15,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.2656,
                    "minimum": 0.25
                },
                "index": 16,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.28129999999999999,
                    "minimum": 0.2656
                },
                "index": 17,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.2969,
                    "minimum": 0.28129999999999999
                },
                "index": 18,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.3125,
                    "minimum": 0.2969
                },
                "index": 19,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.3281,
                    "minimum": 0.3125
                },
                "index": 20,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.34379999999999999,
                    "minimum": 0.3281
                },
                "index": 21,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.3594,
                    "minimum": 0.34379999999999999
                },
                "index": 22,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.375,
                    "minimum": 0.3594
                },
                "index": 23,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.3906,
                    "minimum": 0.375
                },
                "index": 24,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.40629999999999999,
                    "minimum": 0.3906
                },
                "index": 25,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.4219,
                    "minimum": 0.40629999999999999
                },
                "index": 26,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.4375,
                    "minimum": 0.4219
                },
                "index": 27,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.4531,
                    "minimum": 0.4375
                },
                "index": 28,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.46879999999999999,
                    "minimum": 0.4531
                },
                "index": 29,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.4844,
                    "minimum": 0.46879999999999999
                },
                "index": 30,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.5,
                    "minimum": 0.4844
                },
                "index": 31,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.51559999999999995,
                    "minimum": 0.5
                },
                "index": 32,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.53129999999999999,
                    "minimum": 0.51559999999999995
                },
                "index": 33,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.54690000000000005,
                    "minimum": 0.53129999999999999
                },
                "index": 34,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.5625,
                    "minimum": 0.54690000000000005
                },
                "index": 35,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.57809999999999995,
                    "minimum": 0.5625
                },
                "index": 36,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.59379999999999999,
                    "minimum": 0.57809999999999995
                },
                "index": 37,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.60940000000000005,
                    "minimum": 0.59379999999999999
                },
                "index": 38,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.625,
                    "minimum": 0.60940000000000005
                },
                "index": 39,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.64059999999999995,
                    "minimum": 0.625
                },
                "index": 40,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.65629999999999999,
                    "minimum": 0.64059999999999995
                },
                "index": 41,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.67190000000000005,
                    "minimum": 0.65629999999999999
                },
                "index": 42,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.6875,
                    "minimum": 0.67190000000000005
                },
                "index": 43,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.70309999999999995,
                    "minimum": 0.6875
                },
                "index": 44,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.71879999999999999,
                    "minimum": 0.70309999999999995
                },
                "index": 45,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.73440000000000005,
                    "minimum": 0.71879999999999999
                },
                "index": 46,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.75,
                    "minimum": 0.73440000000000005
                },
                "index": 47,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.76559999999999995,
                    "minimum": 0.75
                },
                "index": 48,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.78129999999999999,
                    "minimum": 0.76559999999999995
                },
                "index": 49,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.79690000000000005,
                    "minimum": 0.78129999999999999
                },
                "index": 50,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.8125,
                    "minimum": 0.79690000000000005
                },
                "index": 51,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.82809999999999995,
                    "minimum": 0.8125
                },
                "index": 52,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.84379999999999999,
                    "minimum": 0.82809999999999995
                },
                "index": 53,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.85940000000000005,
                    "minimum": 0.84379999999999999
                },
                "index": 54,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.875,
                    "minimum": 0.85940000000000005
                },
                "index": 55,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.89059999999999995,
                    "minimum": 0.875
                },
                "index": 56,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.90629999999999999,
                    "minimum": 0.89059999999999995
                },
                "index": 57,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.92190000000000005,
                    "minimum": 0.90629999999999999
                },
                "index": 58,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.9375,
                    "minimum": 0.92190000000000005
                },
                "index": 59,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.95309999999999995,
                    "minimum": 0.9375
                },
                "index": 60,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.96879999999999999,
                    "minimum": 0.95309999999999995
                },
                "index": 61,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.98440000000000005,
                    "minimum": 0.96879999999999999
                },
                "index": 62,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.98440000000000005
                },
                "index": 63,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.94999999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 64,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.97219999999999995
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 65,
                "vscan": {
                    "maximum": 0.97219999999999995,
                    "minimum": 0.94440000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 66,
                "vscan": {
                    "maximum": 0.94440000000000002,
                    "minimum": 0.91669999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 67,
                "vscan": {
                    "maximum": 0.91669999999999996,
                    "minimum": 0.88890000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 68,
                "vscan": {
                    "maximum": 0.88890000000000002,
                    "minimum": 0.86109999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 69,
                "vscan": {
                    "maximum": 0.86109999999999998,
                    "minimum": 0.83330000000000004
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 70,
                "vscan": {
                    "maximum": 0.83330000000000004,
                    "minimum": 0.80559999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 71,
                "vscan": {
                    "maximum": 0.80559999999999998,
                    "minimum": 0.77780000000000005
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 72,
                "vscan": {
                    "maximum": 0.77780000000000005,
                    "minimum": 0.75
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 73,
                "vscan": {
                    "maximum": 0.75,
                    "minimum": 0.72219999999999995
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 74,
                "vscan": {
                    "maximum": 0.72219999999999995,
                    "minimum": 0.69440000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 75,
                "vscan": {
                    "maximum": 0.69440000000000002,
                    "minimum": 0.66669999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 76,
                "vscan": {
                    "maximum": 0.66669999999999996,
                    "minimum": 0.63890000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 77,
                "vscan": {
                    "maximum": 0.63890000000000002,
                    "minimum": 0.61109999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 78,
                "vscan": {
                    "maximum": 0.61109999999999998,
                    "minimum": 0.58330000000000004
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 79,
                "vscan": {
                    "maximum": 0.58330000000000004,
                    "minimum": 0.55559999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 80,
                "vscan": {
                    "maximum": 0.55559999999999998,
                    "minimum": 0.52780000000000005
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 81,
                "vscan": {
                    "maximum": 0.52780000000000005,
                    "minimum": 0.5
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 82,
                "vscan": {
                    "maximum": 0.5,
                    "minimum": 0.47220000000000001
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 83,
                "vscan": {
                    "maximum": 0.47220000000000001,
                    "minimum": 0.44440000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 84,
                "vscan": {
                    "maximum": 0.44440000000000002,
                    "minimum": 0.41670000000000001
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 85,
                "vscan": {
                    "maximum": 0.41670000000000001,
                    "minimum": 0.38890000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 86,
                "vscan": {
                    "maximum": 0.38890000000000002,
                    "minimum": 0.36109999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 87,
                "vscan": {
                    "maximum": 0.36109999999999998,
                    "minimum": 0.33329999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 88,
                "vscan": {
                    "maximum": 0.33329999999999999,
                    "minimum": 0.30559999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 89,
                "vscan": {
                    "maximum": 0.30559999999999998,
                    "minimum": 0.27779999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 90,
                "vscan": {
                    "maximum": 0.27779999999999999,
                    "minimum": 0.25
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 91,
                "vscan": {
                    "maximum": 0.25,
                    "minimum": 0.22220000000000001
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 92,
                "vscan": {
                    "maximum": 0.22220000000000001,
                    "minimum": 0.19439999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 93,
                "vscan": {
                    "maximum": 0.19439999999999999,
                    "minimum": 0.16669999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 94,
                "vscan": {
                    "maximum": 0.16669999999999999,
                    "minimum": 0.1389
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 95,
                "vscan": {
                    "maximum": 0.1389,
                    "minimum": 0.1111
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 96,
                "vscan": {
                    "maximum": 0.1111,
                    "minimum": 0.083299999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 97,
                "vscan": {
                    "maximum": 0.083299999999999999,
                    "minimum": 0.055599999999999997
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 98,
                "vscan": {
                    "maximum": 0.055599999999999997,
                    "minimum": 0.027799999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.96999999999999997
                },
                "index": 99,
                "vscan": {
                    "maximum": 0.027799999999999998,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 1,
                    "minimum": 0.98440000000000005
                },
                "index": 100,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.98440000000000005,
                    "minimum": 0.96879999999999999
                },
                "index": 101,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.96879999999999999,
                    "minimum": 0.95309999999999995
                },
                "index": 102,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.95309999999999995,
                    "minimum": 0.9375
                },
                "index": 103,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.9375,
                    "minimum": 0.92190000000000005
                },
                "index": 104,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.92190000000000005,
                    "minimum": 0.90629999999999999
                },
                "index": 105,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.90629999999999999,
                    "minimum": 0.89059999999999995
                },
                "index": 106,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.89059999999999995,
                    "minimum": 0.875
                },
                "index": 107,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.875,
                    "minimum": 0.85940000000000005
                },
                "index": 108,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.85940000000000005,
                    "minimum": 0.84379999999999999
                },
                "index": 109,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.84379999999999999,
                    "minimum": 0.82809999999999995
                },
                "index": 110,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.82809999999999995,
                    "minimum": 0.8125
                },
                "index": 111,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.8125,
                    "minimum": 0.79690000000000005
                },
                "index": 112,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.79690000000000005,
                    "minimum": 0.78129999999999999
                },
                "index": 113,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.78129999999999999,
                    "minimum": 0.76559999999999995
                },
                "index": 114,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.76559999999999995,
                    "minimum": 0.75
                },
                "index": 115,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.75,
                    "minimum": 0.73440000000000005
                },
                "index": 116,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.73440000000000005,
                    "minimum": 0.71879999999999999
                },
                "index": 117,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.71879999999999999,
                    "minimum": 0.70309999999999995
                },
                "index": 118,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.70309999999999995,
                    "minimum": 0.6875
                },
                "index": 119,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.6875,
                    "minimum": 0.67190000000000005
                },
                "index": 120,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.67190000000000005,
                    "minimum": 0.65629999999999999
                },
                "index": 121,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.65629999999999999,
                    "minimum": 0.64059999999999995
                },
                "index": 122,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.64059999999999995,
                    "minimum": 0.625
                },
                "index": 123,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.625,
                    "minimum": 0.60940000000000005
                },
                "index": 124,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.60940000000000005,
                    "minimum": 0.59379999999999999
                },
                "index": 125,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.59379999999999999,
                    "minimum": 0.57809999999999995
                },
                "index": 126,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.57809999999999995,
                    "minimum": 0.5625
                },
                "index": 127,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.5625,
                    "minimum": 0.54690000000000005
                },
                "index": 128,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.54690000000000005,
                    "minimum": 0.53129999999999999
                },
                "index": 129,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.53129999999999999,
                    "minimum": 0.51559999999999995
                },
                "index": 130,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.51559999999999995,
                    "minimum": 0.5
                },
                "index": 131,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.5,
                    "minimum": 0.4844
                },
                "index": 132,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.4844,
                    "minimum": 0.46879999999999999
                },
                "index": 133,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.46879999999999999,
                    "minimum": 0.4531
                },
                "index": 134,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.4531,
                    "minimum": 0.4375
                },
                "index": 135,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.4375,
                    "minimum": 0.4219
                },
                "index": 136,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.4219,
                    "minimum": 0.40629999999999999
                },
                "index": 137,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.40629999999999999,
                    "minimum": 0.3906
                },
                "index": 138,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.3906,
                    "minimum": 0.375
                },
                "index": 139,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.375,
                    "minimum": 0.3594
                },
                "index": 140,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.3594,
                    "minimum": 0.34379999999999999
                },
                "index": 141,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.34379999999999999,
                    "minimum": 0.3281
                },
                "index": 142,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.3281,
                    "minimum": 0.3125
                },
                "index": 143,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.3125,
                    "minimum": 0.2969
                },
                "index": 144,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.2969,
                    "minimum": 0.28129999999999999
                },
                "index": 145,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.28129999999999999,
                    "minimum": 0.2656
                },
                "index": 146,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.2656,
                    "minimum": 0.25
                },
                "index": 147,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.25,
                    "minimum": 0.2344
                },
                "index": 148,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.2344,
                    "minimum": 0.21879999999999999
                },
                "index": 149,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.21879999999999999,
                    "minimum": 0.2031
                },
                "index": 150,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.2031,
                    "minimum": 0.1875
                },
                "index": 151,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.1875,
                    "minimum": 0.1719
                },
                "index": 152,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.1719,
                    "minimum": 0.15629999999999999
                },
                "index": 153,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.15629999999999999,
                    "minimum": 0.1406
                },
                "index": 154,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.1406,
                    "minimum": 0.125
                },
                "index": 155,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.125,
                    "minimum": 0.1094
                },
                "index": 156,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.1094,
                    "minimum": 0.093799999999999994
                },
                "index": 157,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.093799999999999994,
                    "minimum": 0.078100000000000003
                },
                "index": 158,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.078100000000000003,
                    "minimum": 0.0625
                },
                "index": 159,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.0625,
                    "minimum": 0.046899999999999997
                },
                "index": 160,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.046899999999999997,
                    "minimum": 0.031300000000000001
                },
                "index": 161,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.031300000000000001,
                    "minimum": 0.015599999999999999
                },
                "index": 162,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.015599999999999999,
                    "minimum": 0
                },
                "index": 163,
                "vscan": {
                    "maximum": 0.050000000000000003,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 164,
                "vscan": {
                    "maximum": 0.027799999999999998,
                    "minimum": 0
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 165,
                "vscan": {
                    "maximum": 0.055599999999999997,
                    "minimum": 0.027799999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 166,
                "vscan": {
                    "maximum": 0.083299999999999999,
                    "minimum": 0.055599999999999997
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 167,
                "vscan": {
                    "maximum": 0.1111,
                    "minimum": 0.083299999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 168,
                "vscan": {
                    "maximum": 0.1389,
                    "minimum": 0.1111
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 169,
                "vscan": {
                    "maximum": 0.16669999999999999,
                    "minimum": 0.1389
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 170,
                "vscan": {
                    "maximum": 0.19439999999999999,
                    "minimum": 0.16669999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 171,
                "vscan": {
                    "maximum": 0.22220000000000001,
                    "minimum": 0.19439999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 172,
                "vscan": {
                    "maximum": 0.25,
                    "minimum": 0.22220000000000001
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 173,
                "vscan": {
                    "maximum": 0.27779999999999999,
                    "minimum": 0.25
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 174,
                "vscan": {
                    "maximum": 0.30559999999999998,
                    "minimum": 0.27779999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 175,
                "vscan": {
                    "maximum": 0.33329999999999999,
                    "minimum": 0.30559999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 176,
                "vscan": {
                    "maximum": 0.36109999999999998,
                    "minimum": 0.33329999999999999
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 177,
                "vscan": {
                    "maximum": 0.38890000000000002,
                    "minimum": 0.36109999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 178,
                "vscan": {
                    "maximum": 0.41670000000000001,
                    "minimum": 0.38890000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 179,
                "vscan": {
                    "maximum": 0.44440000000000002,
                    "minimum": 0.41670000000000001
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 180,
                "vscan": {
                    "maximum": 0.47220000000000001,
                    "minimum": 0.44440000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 181,
                "vscan": {
                    "maximum": 0.5,
                    "minimum": 0.47220000000000001
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 182,
                "vscan": {
                    "maximum": 0.52780000000000005,
                    "minimum": 0.5
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 183,
                "vscan": {
                    "maximum": 0.55559999999999998,
                    "minimum": 0.52780000000000005
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 184,
                "vscan": {
                    "maximum": 0.58330000000000004,
                    "minimum": 0.55559999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 185,
                "vscan": {
                    "maximum": 0.61109999999999998,
                    "minimum": 0.58330000000000004
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 186,
                "vscan": {
                    "maximum": 0.63890000000000002,
                    "minimum": 0.61109999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 187,
                "vscan": {
                    "maximum": 0.66669999999999996,
                    "minimum": 0.63890000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 188,
                "vscan": {
                    "maximum": 0.69440000000000002,
                    "minimum": 0.66669999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 189,
                "vscan": {
                    "maximum": 0.72219999999999995,
                    "minimum": 0.69440000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 190,
                "vscan": {
                    "maximum": 0.75,
                    "minimum": 0.72219999999999995
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 191,
                "vscan": {
                    "maximum": 0.77780000000000005,
                    "minimum": 0.75
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 192,
                "vscan": {
                    "maximum": 0.80559999999999998,
                    "minimum": 0.77780000000000005
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 193,
                "vscan": {
                    "maximum": 0.83330000000000004,
                    "minimum": 0.80559999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 194,
                "vscan": {
                    "maximum": 0.86109999999999998,
                    "minimum": 0.83330000000000004
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 195,
                "vscan": {
                    "maximum": 0.88890000000000002,
                    "minimum": 0.86109999999999998
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 196,
                "vscan": {
                    "maximum": 0.91669999999999996,
                    "minimum": 0.88890000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 197,
                "vscan": {
                    "maximum": 0.94440000000000002,
                    "minimum": 0.91669999999999996
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 198,
                "vscan": {
                    "maximum": 0.97219999999999995,
                    "minimum": 0.94440000000000002
                }
            },
            {
                "hscan": {
                    "maximum": 0.029999999999999999,
                    "minimum": 0
                },
                "index": 199,
                "vscan": {
                    "maximum": 1,
                    "minimum": 0.97219999999999995
                }
            }
        ],
        "logger": {
            "level": "debug"
        },
        "protoServer": {
            "port": 19445
        },
        "smoothing": {
            "continuousOutput": true,
            "enable": true,
            "time_ms": 30,
            "type": "linear",
            "updateDelay": 0,
            "updateFrequency": 30
        },
        "udpListener": {
            "address": "239.255.28.01",
            "enable": false,
            "port": 2801,
            "priority": 200,
            "shared": false,
            "timeout": 10000
        },
        "webConfig": {
            "document_root": "",
            "enable": true,
            "port": 8099
        }
    }
    
    Aparently ge2d capture is not working:
    Code:
    [hyperiond AMLOGICGRABBER] <INFO> VPU mode
    [hyperiond AMLOGICGRABBER] <ERROR> cannot open devices
    [hyperiond AMLOGICGRABBER] <WARNING> GE2D capture interface not available! try Amvideocap instead
    [hyperiond AMLOGICGRABBER] <ERROR> Read of device failed: 11 - Resource temporarily unavailable
    
    The above highlighted error message is only visible when running kodi, when running moonlight it is not present and hyperion works.

    Any hints?

    Thank you in advance
     
  6. danielfmo

    danielfmo New Member

    Messages:
    25
    Hardware:
    RPi2, 32/64bit, +Arduino, +nodeMCU/ESP8266
    Found why kodi was so slow, I did not apply your patch properly, the #define BUF_SIZE_MAX was missing;

    So I decided to do a fork and merged the above mentioned branches your patch, and everything else that I'll need to do to make this work :D

    But I still get the GE2D interface not available warning message, any clues on that?

    [EDIT]
    My fork: https://github.com/danielfmo/linux-odroid-c2
     
  7. danielfmo

    danielfmo New Member

    Messages:
    25
    Hardware:
    RPi2, 32/64bit, +Arduino, +nodeMCU/ESP8266
    Hi @redPanther ,

    Regarding the GE2D capture I make it work but I found the following:
    1. GE2D capture only works if I start hyperion.ng as root and when there is some video currently being displayed;
    2. I get really high CPU usage with GE2D capture, more than 50% compared to 10-15% of amvideocap;
    Best regards
     
  8. AmbiMod

    AmbiMod Member

    Messages:
    49
    Hardware:
    RPi1/Zero, RPi2, RPi3, 32/64bit, +Arduino, +PhilipsHue, +AtmoOrb, +nodeMCU/ESP8266
    Hi,

    Do you know that it's possible to use USB Video Grabber on the Odroid with the amazing work of @Cédric Laubacher ;)

    I found his blog few days ago https://blog.laubacher.io/blog/hyperion-on-odroid-c2 and i saw that my UTV0007 work.

    Now i can have Multi-Source with my Odroid and do something else with my Raspberry.

    You can have a look on this 2 pictures
     

    Attached Files:

  9. AmbiMod

    AmbiMod Member

    Messages:
    49
    Hardware:
    RPi1/Zero, RPi2, RPi3, 32/64bit, +Arduino, +PhilipsHue, +AtmoOrb, +nodeMCU/ESP8266
    Last edited: 26 February 2018
    • Like Like x 1