Intel Retail Client Manager Audience Analytics



Similar documents
Intel Retail Client Manager

Intel HTML5 Development Environment. Article - Native Application Facebook* Integration

iscsi Quick-Connect Guide for Red Hat Linux

Intel Retail Client Manager

Intel Internet of Things (IoT) Developer Kit

2013 Intel Corporation

Intel Technical Advisory

The Case for Rack Scale Architecture

Intel HTML5 Development Environment. Tutorial Test & Submit a Microsoft Windows Phone 8* App (BETA)

Intel HTML5 Development Environment. Tutorial Building an Apple ios* Application Binary

Intel Ethernet and Configuring Single Root I/O Virtualization (SR-IOV) on Microsoft* Windows* Server 2012 Hyper-V. Technical Brief v1.

Intel Data Migration Software

Software Solutions for Multi-Display Setups

Intel vpro Technology. How To Purchase and Install Symantec* Certificates for Intel AMT Remote Setup and Configuration

Intel Media SDK Library Distribution and Dispatching Process

Intel Data Direct I/O Technology (Intel DDIO): A Primer >

Creating Overlay Networks Using Intel Ethernet Converged Network Adapters

Intel vpro Technology. How To Purchase and Install Go Daddy* Certificates for Intel AMT Remote Setup and Configuration

User Experience Reference Design

Hetero Streams Library 1.0

Specification Update. January 2014

Intel SSD 520 Series Specification Update

Partition Alignment of Intel SSDs for Achieving Maximum Performance and Endurance Technical Brief February 2014

Intel Solid-State Drive Pro 2500 Series Opal* Compatibility Guide

Intel Small Business Advantage (Intel SBA) Release Notes for OEMs

Power Benefits Using Intel Quick Sync Video H.264 Codec With Sorenson Squeeze

This guide explains how to install an Intel Solid-State Drive (Intel SSD) in a SATA-based desktop or notebook computer.

Intel HTML5 Development Environment Article Using the App Dev Center

with PKI Use Case Guide

Intel Service Assurance Administrator. Product Overview

Intel Desktop Board DP55WB

Intel Matrix Storage Console

Creating Full Screen Applications Across Multiple Displays in Extended Mode

Intel Core i5 processor 520E CPU Embedded Application Power Guideline Addendum January 2011

USB 3.0* Radio Frequency Interference Impact on 2.4 GHz Wireless Devices

COSBench: A benchmark Tool for Cloud Object Storage Services. Jiangang.Duan@intel.com

System Event Log (SEL) Viewer User Guide

Intel IoT Gateways: Publishing Data to an MQTT Broker Using Python

Intel Unite. User Guide

Intel Modular Server System MFSYS25

* * * Intel RealSense SDK Architecture

How to Configure Intel Ethernet Converged Network Adapter-Enabled Virtual Functions on VMware* ESXi* 5.1

Resetting USB drive using Windows Diskpart command

BSP for Windows* Embedded Compact* 7 and Windows* Embedded Compact 2013 for Mobile Intel 4th Generation Core TM Processors and Intel 8 Series Chipset

Intel Media Server Studio - Metrics Monitor (v1.1.0) Reference Manual

Customizing Boot Media for Linux* Direct Boot

How to Configure Intel X520 Ethernet Server Adapter Based Virtual Functions on Citrix* XenServer 6.0*

Intel Remote Configuration Certificate Utility Frequently Asked Questions

Intel Management Engine BIOS Extension (Intel MEBX) User s Guide

Intel Desktop Board D945GCPE Specification Update

Intel Solid-State Drive Data Center Tool User Guide Version 1.1

VNF & Performance: A practical approach

Intel Core TM i3 Processor Series Embedded Application Power Guideline Addendum

Intel Identity Protection Technology with PKI (Intel IPT with PKI)

Dialogic System Release 6.0 PCI for Windows

Software Evaluation Guide for Autodesk 3ds Max 2009* and Enemy Territory: Quake Wars* Render a 3D character while playing a game

Version Rev. 1.0

Intel Desktop Board D945GCPE

Intel Integrated Native Developer Experience (INDE): IDE Integration for Android*

Intel Simple Network Management Protocol (SNMP) Subagent v6.0

Revision History. Revision Revision History Date

Dell Spotlight on Active Directory Server Health Wizard Configuration Guide

Intel Desktop Board DG41BI

Intel Desktop Board DG43RK

Intel System Event Log (SEL) Viewer Utility

Intel Atom Processor E3800 Product Family

Cloud based Holdfast Electronic Sports Game Platform

Douglas Fisher Vice President General Manager, Software and Services Group Intel Corporation

Intel Desktop Board DQ965GF

Intel RAID Volume Recovery Procedures

Intel Desktop Board DG41TY

Intel Desktop Board DG31PR

SyAM Software* Server Monitor Local/Central* on a Microsoft* Windows* Operating System

System Image Recovery* Training Foils

Intel Management and Security Status Application

Intel Desktop Board DQ35JO

Intel Media SDK Features in Microsoft Windows 7* Multi- Monitor Configurations on 2 nd Generation Intel Core Processor-Based Platforms

Intel Server System S7000FC4UR

Intel Desktop Board DQ43AP

Cisco TelePresence VCR Converter 1.0(1.8)

Intel System Event Log (SEL) Viewer Utility. User Guide SELViewer Version 10.0 /11.0 December 2012 Document number: G

How High Temperature Data Centers & Intel Technologies save Energy, Money, Water and Greenhouse Gas Emissions

Software License Monitoring

Intel Desktop Board DG965RY

Intel System Event Log (SEL) Viewer Utility

Intel Desktop Board DG41WV

z/os V1R11 Communications Server System management and monitoring Network management interface enhancements

Device Management API for Windows* and Linux* Operating Systems

Enabling Innovation in Mobile User Experience. Bruce Fleming Sr. Principal Engineer Mobile and Communications Group

Intel NetStructure Host Media Processing Release 2.0 for Windows

Intel X38 Express Chipset Memory Technology and Configuration Guide

Intel Desktop Board D945GCZ

Displaying Stereoscopic 3D (S3D) with Intel HD Graphics Processors for Software Developers August 2011

Intel Extreme Memory Profile (Intel XMP) DDR3 Technology

Intel System Event Log (SEL) Viewer Utility

Intel Desktop Board D945GCL

Intel Cloud Builder Guide: Cloud Design and Deployment on Intel Platforms

Intel Desktop Board DG33TL

Device Management API for Windows* and Linux* Operating Systems

Transcription:

Intel Retail Client Manager Audience Analytics

By using this document, in addition to any agreements you have with Intel, you accept the terms set forth below. You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to grant Intel a non-exclusive, royalty-free license to any patent claim thereafter drafted which includes subject matter disclosed herein. INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. A "Mission Critical Application" is any application in which failure of the Intel Product could result, directly or indirectly, in personal injury or death. SHOULD YOU PURCHASE OR USE INTEL'S PRODUCTS FOR ANY SUCH MISSION CRITICAL APPLICATION, YOU SHALL INDEMNIFY AND HOLD INTEL AND ITS SUBSIDIARIES, SUBCONTRACTORS AND AFFILIATES, AND THE DIRECTORS, OFFICERS, AND EMPLOYEES OF EACH, HARMLESS AGAINST ALL CLAIMS COSTS, DAMAGES, AND EXPENSES AND REASONABLE ATTORNEYS' FEES ARISING OUT OF, DIRECTLY OR INDIRECTLY, ANY CLAIM OF PRODUCT LIABILITY, PERSONAL INJURY, OR DEATH ARISING IN ANY WAY OUT OF SUCH MISSION CRITICAL APPLICATION, WHETHER OR NOT INTEL OR ITS SUBCONTRACTOR WAS NEGLIGENT IN THE DESIGN, MANUFACTURE, OR WARNING OF THE INTEL PRODUCT OR ANY OF ITS PARTS. Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined". Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information. The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request. Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order. Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm Intel, the Intel logo, Intel Retail Client Manager, Intel RCM, Intel RCM Player, Intel RCM Remote Control, Intel RCM Audience Analytics, and Intel Active Management Technology are trademarks of Intel Corporation or in the US and other countries. * Other brands and names may be claimed as the property of others. Copyright 2014 Intel Corporation. All rights reserved. 2 Document Number: 330463-001

Contents 1 Introduction... 7 1.1 Configuring the API server... 7 2 Audience Counter API... 8 2.1 Message commands... 9 2.1.1 2.1.2 apigetaudiencestatus... 9 apigetaudiencedetails... 9 2.1.3 apigetmajoritygender *DEPRECATED*... 9 2.1.4 apigetviewerevents... 9 2.2 Message events... 10 2.2.1 2.2.2 EVENT_ACK... 10 EVENT_NACK... 10 2.2.3 EVENT_AUDIENCE_STATUS... 10 2.2.4 EVENT_AUDIENCE_DETAILS... 10 2.2.5 EVENT_MAJORITY_GENDER... 10 2.2.6 EVENT_VIEWER... 10 3 4 Data Structures... 11 Additional Development Notes... 12 4.1 Combining commands and events... 12 4.2 Analytics applications... 12 4.3 API integration best practices... 12 A Sample Java Code... 13 Document Number: 330463-001 3

Tables Table 2-1 MessageHeader structure... 8 Table 3-1 ViewerDetail structure...11 Table 3-2 ViewerEvent structure...11 4 Document Number: 330463-001

Revision History Rev. Date -001 Initial release. June 2014-002 Added Prerequisite section. Document Number: 330463-001 5

Prerequisites Prior to using the Intel RCM Audience Analytics Socket API, an Audience Analytics License must be allocated to the Intel RCM Player and the Intel RCM Player must be started. 6 Document Number: 330463-001

Introduction 1 Introduction The (Intel RCM Audience Analytics) Socket API allows developers to connect to Intel RCM Audience Analytics using TCP/IP. This allows for a platformindependent interface, with support for both local and remote communication between Intel RCM Audience Analytics and third-party applications. The API allows an application to communicate with Intel RCM Audience Analytics in one of two ways: An application can request status information from Intel RCM Audience Analytics (for example, the number of people viewing a display). An application can set up events or triggers based on certain audience attributes so that Intel RCM Audience Analytics will issue event messages only when the desired conditions are met. The target audience for this document is software developers that are familiar with programming TCP/IP sockets, and that require real-time access to the Intel RCM Audience Analytics application. 1.1 Configuring the API server To configure the API in Intel RCM Audience Analytics software, follow these steps: 1. From within the Intel RCM Audience Analytics Configurator, select Main > Configure. 2. In the dialog box, look for the section labeled API Server Settings. 3. Verify that the Enable API Server checkbox is checked. 4. Select the desired port number for the API server (default 12500). 5. Click OK to confirm the changes. An application can then connect to Intel RCM Audience Analytics based on the IP address or name of the Intel RCM Audience Analytics platform and the configured port number. The port settings will be saved so that the servers can be restarted at the last ports automatically on startup. Document Number: 330463-001 7

Audience Counter API 2 Audience Counter API Applications communicate with the Intel RCM Audience Analytics Audience Counter API using a standard five-byte header, as shown in Table 2-1. Table 2-1 MessageHeader structure Field Size Value MagicWord 2 bytes 0xFACE A simple code that can be used to validate that the message was received successfully. Version 1 byte 0x01 The version of the API that is currently active. Type 1 byte Variable The type of data (either a message command or message event described in Sections 2.1 and 2.2). PayloadSize 1 byte Variable The size of the data that follows this header. NOTE: All multibyte parameters are in network (big-endian) order. Additional parameters can be specified by sending them immediately following the header (depending on the type of message being sent) and then adjusting the PayloadSize variable in the header appropriately. Note that the PayloadSize does not include the header size. When the appropriate command has been successfully issued, the Intel RCM Audience Analytics Audience Counter will send a response as a stream of bytes. The return value will be contained in the standard 5-byte message header along with any additional payload. Two types of messages can be encapsulated into the standard message header: Message commands. These are issued by client applications to the API server. Message events. These are sent by the API server in response to Message Commands. See Appendix A Sample Java Code on how to interface to the API. 8 Document Number: 330463-001

Audience Counter API 2.1 Message commands The following subsections present the current set of available Message Commands that a client application can issue to the Intel RCM Audience Analytics Audience Counter. The appropriate command value is what will be set in the Type field of the ViewerEvent structure. 2.1.1 apigetaudiencestatus Command 0 Requests immediate status information from the Intel RCM Audience Analytics Audience Counter regarding number of viewers currently in front of the display. Payload None. The payload size should be 0. Response On success, an EVENT_AUDIENCE_STATUS message will be sent. On failure, an EVENT_NACK message will be sent. 2.1.2 apigetaudiencedetails Command 1 Requests immediate status information from the Intel RCM Audience Analytics Audience Counter regarding details of all viewers currently in front of the display. Payload None. The payload size should be 0. Response On success, an EVENT_AUDIENCE_DETAILS message will be sent. On failure, an EVENT_NACK message will be sent. 2.1.3 apigetmajoritygender *DEPRECATED* Command 2 Requests the majority gender of audience members from the Intel RCM Audience Analytics Audience Counter over the past 15 seconds. Payload None. The payload size should be 0. Response On success, an EVENT_MAJORITY_GENDER message will be sent. On failure, an EVENT_NACK message will be sent. Caution: This command has been deprecated. Do not use this command to determine instantaneous majority gender. Instead, use the apigetaudiencedetails message. 2.1.4 apigetviewerevents Command 5 Payload Response Requests continuous information from the Intel RCM Audience Analytics Audience Counter regarding number of viewers currently in front of the display. Events are sent each time a viewer starts or stops looking at the display, or when another significant visual change occurs (such as a viewer changing directions). One byte representing either to start sending events (value 1) or to stop sending events (value 0). On success, an EVENT_ACK will be sent. On failure, an EVENT_NACK will be sent. Document Number: 330463-001 9

Audience Counter API 2.2 Message events The following list summarizes the various types of Message Events that can be sent by the API server in response to commands. The appropriate message value is what will be set in the Type field of the ViewerEvent structure. 2.2.1 EVENT_ACK Message 128 Payload Specifies a success code for a previously issued command. 0 bytes 2.2.2 EVENT_NACK Message 129 Payload Specifies a failure or error code for a previously issued command. 0 bytes 2.2.3 EVENT_AUDIENCE_STATUS Message 130 Payload Specifies the number of viewers currently in front of the display. One byte representing the size of the audience. 2.2.4 EVENT_AUDIENCE_DETAILS Message 131 Payload Returns a detailed list of all viewers (up to a maximum of 12 viewers) currently in front of the display. One byte representing the number of viewers N, followed by N * 20 bytes containing N ViewerDetail data structures (see below). 2.2.5 EVENT_MAJORITY_GENDER Message 132 Payload Returns the majority gender of the audience over the past 15 seconds. One byte representing the majority gender, where a value of 0 is unknown, 1 is male, and 2 is female. 2.2.6 EVENT_VIEWER Message 135 Payload Returns information for a viewer either when the viewer starts or stops viewing the display. 21 bytes consisting of a ViewerEvent data structure (see below). 10 Document Number: 330463-001

Data Structures 3 Data Structures This section describes the data structures used by the Intel RCM Audience Analytics Socket API. Table 3-1 ViewerDetail structure Field Size Value ID 4 bytes Variable A unique unsigned integer that defines an individual (the ID values will reset to zero when the 32-bit limit is reached). Gender 1 byte Variable Defines the gender of the individual. See Note 1. Age 1 byte Variable Defines the age of an individual. See Note 2. Reserved 1 byte Variable Reserved for future use. Reserved 2 1 byte Variable Reserved for future use. ViewingTime 4 bytes Variable Defines the number of milliseconds that an individual has been facing towards the camera. Top-left X 2 bytes Variable The top-left X position of the rectangle around the individual, in unsigned 16-bit (0 to 65535) normalized coordinates. See Note 3. Top-left Y 2 bytes Variable The top-left Y position of the rectangle around the individual, in unsigned 16-bit (0 to 65535) normalized coordinates. See Note 3. Face Width 2 bytes Variable The width of the rectangle around the individual, in unsigned 16-bit normalized coordinates. See Note 3. Face Height 2 bytes Variable The height of the rectangle around the individual, in unsigned 16-bit normalized coordinates. See Note 3. NOTE: 1. For gender, a value of 0 represents an unknown gender, 1 represents a male, and 2 represents a female. 2. For age, a value of 0 represents an unknown age, 1 represents a child (under 16), 3 represents a young adult (16 to 34), 4 represents an older adult (35 to 64), and 5 represents a senior (65+). A value of 2 represents a teenager (13 to 19), but the software does not currently output this age class. 3. Normalization allows coordinates and dimensions of faces to be represented in a form that is independent of the resolution of the camera that a face was detected in. For example, an x coordinate of 32768 always represents the center horizontal location irrespective of the camera capture width. This could be converted into a pixel location in an image with dimensions image_width image_height using the following formula: pixel_x = normalized_x * image_width / 65535. Table 3-2 ViewerEvent structure Field Size Value Type 1 byte Variable Represents the event type as an unsigned byte. See Note 1. ViewerDetail 20 bytes Variable The ViewerDetail data structure NOTE: For the event type, a value of 0 represents a viewer start event, and a value of 2 represents a viewer end event. Document Number: 330463-001 11

Additional Development Notes 4 Additional Development Notes 4.1 Combining commands and events If you combine viewer update events with polling commands, the order of the command response and event messages may vary. For example, if you send an apigetaudiencedetails command while also receiving viewer events, it is possible to receive a subsequent viewer start event for a viewer that was already in the response message to the apigetaudiencedetails command. Therefore, it is always important to track and verify the ID values of all ViewerDetail structures that your application may receive using the API. 4.2 Analytics applications This API is best suited for interactive applications that need to make real-time decisions based on the audience, such as gender-based content-triggering. However, we do not recommend using it to gather viewership data for analytics purposes since it does not filter for false positives. 4.3 API integration best practices The following list of integration best practices will instruct and guide users for optimal configuration and usage of the Intel RCM Audience Analytics Socket API and the integration application. A feature should be provided to allow a user to easily verify that the integration software can successfully connect to Intel RCM Audience Analytics. It should be possible to verify this connection when the software is first set up and any time after the software has fully been configured. The client should issue no more than four commands per second to the Intel RCM Audience Analytics Socket API. It should be possible to specify content triggering rules that use only gender information, only age information, or both gender and age information. We do not recommend performing content triggering specifically for children, as this may violate federal, state, and municipal laws in some jurisdictions. It should be possible to specify content triggering rules that use audience information that is no more than two seconds old. This implies that a polling command, such as apigetaudiencedetails, would be issued no more than two seconds prior to making a corresponding content-triggering decision. Use the apigetaudiencedetails command to determine instantaneous majority gender or majority age. (Note that it is often a mistake to use the apigetmajoritygender command for content triggering because this command does not provide the instantaneous majority gender, but rather an aggregated majority gender over the past 15 seconds.) Avoid using EVENT_VIEWER events (such as when a viewer starts looking) to make contenttriggering decisions based on gender or age. It is better to rely on polling commands such as apigetaudiencedetails because EVENT_VIEWER events for when a viewer starts looking will contain slightly less accurate gender and age information on average. 12 Document Number: 330463-001

Sample Java Code A Sample Java Code The following Java* source code demonstrates how to send a command message to the Intel RCM Audience Analytics Socket API and retrieve a response. The primary purpose of this code is to show how a packet can be assembled correctly, and how to extract data from the response packet. import java.io.*; import java.net.*; public class ConnectTest public static final int MESSAGE_GET_AUDIENCE_STATUS = 0; public static final int EVENT_ACK = 128; public static final int EVENT_NACK = 129; public static final int EVENT_AUDIENCE_STATUS = 130; public static void main(string[] args) try System.out.println("Start RCM Audience Analytics Connect Test"); // Open a socket on the local host, port 12500 (default for RCM Audience Analytics) Socket myclient; myclient = new Socket("localhost", 12500); System.out.println("myClient = " + myclient); DataInputStream input; DataOutputStream output; input = new DataInputStream(myClient.getInputStream()); System.out.println("input = " + input); output = new DataOutputStream(myClient.getOutputStream()); System.out.println("output = " + output); // First we will set up the request message as a byte stream byte request[] = new byte[5]; request[0] = (byte)0xfa; // Magic word (first byte) request[1] = (byte)0xce; // Magic word (second byte) request[2] = (byte)0x01; // Version request[3] = (byte)message_get_audience_status; // Command request[4] = (byte)0x00; // Payload size (0 for apigetaudiencestatus) output.write(request, 0, 5); // Send the request boolean reading = true; int bytesread = 0; // For apigetaudiencestatus, we will read back // the 5 byte header + 1 byte for the payload. // Other response messages could have different // types of payload sizes, but this one is really simple. byte response[] = new byte[6]; // Loop until we have read the desired number of bytes (or an error occurs) while(reading && bytesread < 6) Document Number: 330463-001 13

Sample Java Code try response[bytesread] = input.readbyte(); bytesread++; catch(ioexception e) reading = false; // Verify that the returned byte stream has the magic word if(response[0] == (byte)0xfa && response[1] == (byte)0xce) System.out.println("Magic word detected"); // Verify that the version is correct if(response[2] == (byte)0x01) System.out.println("Version is correct"); // Verify that we got the desired response (EVENT_AUDIENCE_STATUS) if(response[3] == (byte)aimviewconnecttest.event_audience_status) System.out.println("Received EVENT_AUDIENCE_STATUS message"); // Verify that the payload size is correct if(response[4] == (byte)1) // The audience size will be in the payload of the // returned message (located at element 5 in the array) System.out.println("Audience Size: " + response[5]); else System.out.println("Incorrect payload size: " + response[4]); else System.out.println("Incorrect response message: " + response[3]); else System.out.println("Incorrect version: " + response[2]); else System.out.println("Incorrect magic word: 0x" + response[0] + response[1]); input.close(); output.close(); catch(exception exp) exp.printstacktrace(); 14 Document Number: 330463-001

Sample Java Code Document Number: 330463-001 15