Verifying the rendering of video content at client devices using trusted platform modules

Systems and methods for verifying the rendering of video content on information resources are provided herein. A server can transmit a video content element having a first bit stream corresponding to a predesignated frame to a client device. The client device can identify the first bit stream as corresponding to the predesignated frame. The client device can decode the first bit stream corresponding to the predesignated frame of the video content element to generate a second bit stream. The client device can transmit, to the server, a tracking message including the second bit stream. The server can compare the second bit stream included in the tracking message from the client device with a third bit stream maintained at a database. The server can determine that the video content element is rendered at the client device responsive to the second bit stream matching the third bit stream.

BACKGROUND

In a computer networked environment, such as the Internet, information resources (e.g., webpages) and the content elements included in such information resources may be parsed and rendered by an application (e.g., a web browser) executing on a client device. It may be difficult to determine whether the content elements on information resources were in fact loaded onto and displayed on client devices.

SUMMARY

At least one aspect is directed to a method of generating a tracking message. The method may include receiving, at a client device, a coded first bit stream representing a content item. The method may include a trusted platform module of the client device decoding the first bit stream to recover frames of the content item. The method may include in a trusted platform module of the client device generating a second bit stream representative of frames of the content item. The method may include in a trusted platform module of the client device sending the second bit stream to an output interface. The method may include in a trusted platform module of the client device generating a tracking message. The tracking message may include an identification of the client device and information identifying at least a portion of a frame of the content item processed by the trusted platform module. The method may include transmitting the tracking message from the client device.

In some implementations, the tracking message may include information identifying a predesignated frame of the content item recovered by the trusted platform module of the client device from the first bit stream. In some implementations, the tracking message may include information identifying the last frame of the content item recovered by the trusted platform module of the client device from the first bit stream. In some implementations, the tracking message may include information identifying a predesignated frame of the content item included in the second bit stream sent by the trusted platform module of the client device to the output interface. In some implementations, the tracking message may include information identifying the last frame of the content item included in the second bit stream by the trusted platform module of the client device to the output interface.

In some implementations, the method may include encrypting or authenticating, by the trusted platform module, the tracking message before the tracking message is transmitted from the client device. In some implementations, sending the second bit stream to the output interface may include sending the second bit stream to the output interface over a secure output path. In some implementations, the method may include encrypting the second bit stream before sending the second bit stream to the output interface. In some implementations, the output interface may include a display.

At least one aspect is directed to a method of generating a tracking message. A server can generate a first bit stream representing a target content item. The server can send the first bit stream to a target client device. The server can receive a tracking message purporting to relate to delivery of the content item. The server can determine whether the tracking message contains an identifier of a sending device that sent the tracking message. The server can determine whether the sending device and the target client device are the same device. If the sending client device and the target client device are not the same device, the server can disregard the tracking message. If the sending client device and the target client device are the same device, the server can recover, from the tracking message, information about at least a portion of a frame of a content item processed by a trusted platform module of the client device. The server can compare the frame of the content item processed by a trusted platform module of the client device with the target content item.

In some implementations, the server can disregard the tracking message if the at least a portion of frame of the content item processed by a trusted platform module of the client device is not included in the target content item. In some implementations, the server can determine whether the tracking message is authenticated by the trusted platform module of the target client device. In some implementations, if the tracking message is not authenticated by the trusted platform module of the target client device, the server can disregard the tracking message. In some implementations, the target content item may include a predesignated frame. In some implementations, the server can determine whether the at least a portion of frame of the content item processed by the trusted platform module of the client device is included in the predesignated frame.

In some implementations, one or more computer storage media may be encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform the method. In some implementations, a system may include one or more computers. The system may be configured to cause the one or more computers to implement a system configured to perform the method.

At least one aspect is directed to a method of verifying the rendering of video content on information resources. A data processing system having one or more processors can transmit a video content element to a client device. The video content element can have a first bit stream corresponding to a predesignated frame. Receipt of the video content element can cause the client device to identify the first bit stream as corresponding to the predesignated frame of the video content element. Receipt of the video content element can cause the client device to decode the first bit stream corresponding to the predesignated frame of the video content element to generate a second bit stream. Receipt of the video content element can cause the client device to transmit, to the data processing system, a tracking message including the second bit stream. The data processing system can compare the second bit stream included in the tracking message from the client device with a third bit stream maintained at a database for the video content element. The data processing system can determine that the video content element is rendered at the client device responsive to the second bit stream from the client device matching the third bit stream maintained at the database.

In some implementations, the data processing system can generate the predesignated frame including the first bit stream. A render property of the predesignated frame may be set to null. In some implementations, the data processing system can insert the predesignated frame into the video content element.

In some implementations, the data processing system can select the predesignated frame from the video content element. Decoding of the predesignated frame may be dependent on a different frame of the video content element. In some implementations, the data processing system can identify a subset portion of the predesignated frame for decoding by the client device. In some implementations, receipt of the video content element can further cause the client device to decode the first bit stream corresponding to the subset portion of the predesignated frame to generate the second bit stream. The second bit stream may be for rendering of the subset portion of the predesignated frame onto a display of the client device.

In some implementations, the data processing system can select the predesignated frame from the video content element based on a computation complexity of decoding the predesignated frame. In some implementations, transmitting the video content element to the client device can further include transmitting the video content element including a single frame, the single frame including the predesignated frame.

In some implementations, receipt of the video content element can further cause the client device to encode, by a trusted platform module, the second bit stream using a first encryption key. In some implementations, receipt of the video content element can further cause the client device to transmit the tracking message including the second bit stream encrypted using the first encryption key. In some implementations, comparing the second bit stream with the third bit stream can further include comparing the second bit stream encrypted using the first encryption key with the third bit stream encrypted using a second encryption key. In some implementations, the data processing system can update a view counter for the video content element, responsive to the second bit stream from the client device matching the third bit stream maintained at the database.

At least one aspect is directed to a system for verifying the rendering of video content on information resources. The system can include a content deliverer, a bit stream comparator, and a render verifier executed on a data processing system having one or more processors. The content deliverer can transmit a video content element to a client device. The video content element can have a first bit stream corresponding to a predesignated frame. Receipt of the video content element can cause the client device to identify the first bit stream as corresponding to the predesignated frame of the video content element. Receipt of the video content element can cause the client device to decode the first bit stream corresponding to the predesignated frame of the video content element to generate a second bit stream. Receipt of the video content element can cause the client device to transmit, to the data processing system, a tracking message including the second bit stream. The bit stream comparator can compare the second bit stream included in the tracking message from the client device with a third bit stream maintained at a database for the video content element. The render verifier can determine that the video content element is rendered at the client device responsive to the second bit stream from the client device matching the third bit stream maintained at the database.

In some implementations, the system can further include a policy manager executed on the data processing system. In some implementations, the policy manager can generate the predesignated frame including the first bit stream. A render property of the predesignated frame may be set to null. In some implementations, the policy manager can insert the predesignated frame into the video content element.

In some implementations, the system can further include a policy manager executed on the data processing system. In some implementations, the policy manager can select the predesignated frame from the video content element. Decoding of the predesignated frame may be dependent on a different frame of the video content element. In some implementations, the policy manager can identify a subset portion of the predesignated frame for decoding by the client device. In some implementations, receipt of the video content element can further cause the client device to decode the first bit stream corresponding to the subset portion of the predesignated frame to generate the second bit stream. The second bit stream may be for rendering of the subset portion of the predesignated frame onto a display of the client device.

In some implementations, the system can further include a policy manager executed on the data processing system. In some implementations, the policy manager can select the predesignated frame from the video content element based on a computation complexity of decoding of the predesignated frame. In some implementations, the content deliverer can transmit the video content element including a single frame. The single frame can include the predesignated frame.

In some implementations, receipt of the video content element can further cause the client device to encode, by a trusted platform module, the second bit stream using a first encryption key. In some implementations, receipt of the video content element can further cause the client device to transmit the tracking message including the second bit stream encrypted using the first encryption key. In some implementations, the bit stream comparator can compare the second bit stream encrypted using the first encryption key with the third bit stream encrypted using a second encryption key. In some implementations, the render verifier can update a view counter for the video content element, responsive to the second bit stream from the client device matching the third bit stream maintained at the database.

At least one aspect is directed to a method of verifying the rendering of video content on information resources. A client device having one or more processors can receive a video content element. The video content element can have a first bit stream corresponding to a predesignated frame. The client device can identify, responsive to receiving the video content element, the first bit stream as corresponding to the predesignated frame of the video content element. The client device can decode the first bit stream corresponding to the predesignated frame of the video content element to generate a second bit stream. The client device can transmit, to the data processing system, a tracking message including the second bit stream. Receipt of the tracking message can cause the data processing system to compare the second bit stream included in the tracking message from the client device with a third bit stream maintained at a database for the video content element. Receipt of the tracking message can cause the data processing system to determine that the video content element is rendered at the client device responsive to the second bit stream from the client device matching the third bit stream maintained at the database.

In some implementations, identifying the first bit stream as corresponding to the predesignated frame can further include identifying a subset portion of the first bit stream corresponding to the predesignated frame. The subset portion can correspond to a predesignated area on the predesignated frame rendered on a display of the client device. In some implementations, decoding the first bit stream can further include decoding the subset portion of the first bit stream corresponding to the predesignated area on the predesignated frame.

In some implementations, identifying the first bit stream as corresponding to the predesignated frame can further include identifying the predesignated frame inserted into the video content element based on a marker at the predesignated frame. In some implementations, decoding the first bit stream can further include decoding the first bit stream without rendering the predesignated frame onto a display of the client device. In some implementations, identifying the first bit stream as corresponding to the predesignated frame can further include identifying the first bit stream corresponding to a last frame of the video content element. Rendering of the last frame may be dependent on a prior frame of the video content element.

In some implementations, a trusted platform module of the client device may encode the second bit stream using a first encryption key. In some implementations, transmitting the tracking message can further include transmitting the tracking message including the second bit stream encoded using the first encryption key. Receipt of the tracking message can cause the data processing system to decode, with a second encryption key the second bit stream encoded using the first encryption key.

In some implementations, transmitting the tracking message can further include transmitting the tracking message including a first device identifier. Receipt of the tracking message can cause the data processing system to compare the first device identifier to a second device identifier stored at a database.

DETAILED DESCRIPTION

Following below are more detailed descriptions of various concepts related to, and implementations of, methods, apparatuses, and systems of verifying the rendering of video content on information resources. The various concepts introduced above and discussed in greater detail below may be implemented in any of numerous ways, as the described concepts are not limited to any particular manner of implementation.

Under current systems, to maintain a count of impressions, a client device may send a tracking event to a server upon the initial loading of the content element on an information resource. Once the tracking event is received, the server may increment or update the view count for the content element to indicate the number of times the content element was displayed at a client device.

Such tracking events, however, may be inaccurate in validating whether the content element was in fact rendered and displayed on the client device. For one, the tracking event may be generated and sent by the client device as a result of a coding error on the information resource. For another, such tracking events may be susceptible to fraud, as malicious third-party devices may easily generate and send fake tracking events to the server, thereby resulting in an inaccurate count of how many times the content element was actually rendered and displayed on the client device. Compounding to these issues, it may be very difficult to determine whether the receipt of the tracking event is a result of coding error or due to a malicious third-party device.

To address these and other technical challenges, the present systems and methods may leverage the various functionalities of a cryptographic processor (e.g., a digital rights manager of a secure trusted platform module) for decoding media content. A server (e.g., a data processing system) may transmit a video content element to a client device. Within the video content element, one of the frames may be predesignated by the server for generating a tracking message. Under one verification policy (“mode A”), the predesignated frame may be selected from one of the frames of the original video content element, which (or a subset portion of which) is to be processed and rendered by the client device. Under another verification policy (“mode B”), the predesignated frame may be a frame inserted to the original video content that is to be processed but not rendered by the client device.

As the frames of the video content element are processed, the client device may identify the predesignated frame. Having identified the predesignated frame, the cryptographic processor of the client device may decode the bit stream corresponding to the predesignated frame. The decoded bit stream may include data corresponding to the graphic to be rendered on a secure output path (e.g., a display) of the client device. In mode A, the client device may decode the bit stream of the marked subset portion of the predesignated frame to be rendered on the display. In mode B, the client device may decode the bit stream of the predesignated frame but prevent the frame from rendering on the display.

With the predesignated frame decoded, the client device may encrypt the bit stream using various encryption algorithms (e.g., using a private key). The client device may generate a tracking message with the encrypted bit stream and transmit the tracking message to the server. Upon receipt of the tracking message, the server may determine whether the video content element was properly rendered on the client device. If the video content element is determined to have been properly rendered at the client device, the server may make a record of the determination. The server may further update a view counter for the video content element. The techniques used to decode a bit stream may be computationally expensive, especially the predesignated frame. If the last frame in the video content element is selected as the predesignated frame, the decoding operation of the last frame may be dependent to one or more or even all of the previous frames in the video content element, thereby making it computationally expensive to process and decode. As such, malicious third parties may have difficulty to repeatedly mimicking the tracking message, thereby preventing fraudulent tracking events.

FIG. 1is a block diagram depicting one implementation of an environment for verifying the rendering of video content on information resources. The environment100includes at least one data processing system110connected to at least one content provider device115, at least one content publisher device120, and at least one client device125via the network105.

In further detail, the data processing system110can include at least one processor and a memory, i.e., a processing circuit. The memory stores processor-executable instructions that, when executed by processor, cause the processor to perform one or more of the operations described herein. The processor may include a microprocessor, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), etc., or combinations thereof. The memory may include, but is not limited to, electronic, optical, magnetic, or any other storage or transmission device capable of providing the processor with program instructions. The memory may further include a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ASIC, FPGA, read-only memory (ROM), random-access memory (RAM), electrically erasable programmable ROM (EEPROM), erasable programmable ROM (EPROM), flash memory, optical media, or any other suitable memory from which the processor can read instructions. The instructions may include code from any suitable computer programming language. The data processing system can include one or more computing devices or servers that can perform various functions. In some implementations, the data processing system can include a content placement system configured to host auctions. In some implementations, the data processing system does not include the content placement system but is configured to communicate with the content placement system via the network105.

The network105can include computer networks such as the Internet local, wide, metro or other area networks, intranets, satellite networks, other computer networks such as voice or data mobile phone communication networks, and combinations thereof. The data processing system110of the system100can communicate via the network105, for instance with at least one content provider device115, at least one content publisher device120, or at least one client device125. The network105may be any form of computer network that relays information between the client device125, data processing system110, and one or more content sources, such as web servers, amongst others. In some implementations, the network105may include the Internet and/or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or other types of data networks. The network105may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) that are configured to receive and/or transmit data within the network105. The network105may further include any number of hardwired and/or wireless connections. The client device125may communicate wirelessly (e.g., via WiFi, cellular, radio, etc.) with a transceiver that is hardwired (e.g., via a fiber optic cable, a CAT5 cable, etc.) to other computing devices in the network105. The client device125may also communicate wirelessly with the computing devices of the network105via a proxy device (e.g., a router, network switch, or gateway).

The content provider devices115can include servers or other computing devices operated by a content provider entity to provide content elements to the content publisher devices120or the data processing system110. The content provided by the content provider device115can include third-party content elements for display on information resources, such as a website or webpage, that include primary content, e.g., content provided by the content publisher device120. The content elements can also be displayed on a search results webpage. The content elements associated with the content provider device115can be displayed on information resources other than webpages, such as content displayed as part of the execution of an application on a smartphone or other client device125. The content publisher devices120or the data processing system110in turn can select the content elements of the content provider devices115. The data processing system110can run a content placement process to select the content elements based on various performance metrics of the respective content elements. The content publisher devices120or the data processing system110can transmit the selected content elements of the content provider computing devices for display on information resources at the client devices125.

The content publisher devices120can include servers or other computing devices operated by a content publishing entity to provide primary content for display via the network105. For instance, the content publisher device120can be managed by a webpage operator who provides primary content for display on the webpage. The content publisher devices120can also provide third-party content received from the content provider devices115for display via the network105. The primary content can include content other than that provided by the content publisher device120, and the webpage can include content slots configured for the display of content elements received by the content publisher devices120from the content provider devices115. For instance, the content publisher device120can operate the website of a company and can provide content about that company for display on webpages of the website. The webpages can include content slots configured for the display of content elements such as images, text, videos, or any combination thereof received from the content provider device115. In some implementations, the content publisher device120includes a search engine computing device (e.g., a server) of a search engine operator that operates a search engine website. The primary content of search engine webpages (e.g., a results or landing webpage) can include results of a search as well as third-party content elements displayed in content slots, such as content elements from the content provider device115. In some implementations, the content publisher device120can include a server for serving video content.

The content publisher devices120can select one or more content elements (e.g., audio, video, image, etc.) received from the content provider devices115to include in an information resource with the primary content for display on client devices125via the network105. The content publisher devices120can transmit to client devices125content elements received from the content provider devices115along with the primary content, responsive to a request for content from the client devices125. In some implementations, subsequent to transmitting the primary content, the content publisher devices120can transmit content elements received from the content provider devices115to the client devices125, responsive to a request for additional content from the client devices125. In some implementations, the content publisher device120can receive an initial request for primary content from a client device125and in response transmit an information resource including primary content to the client device125.

The client devices125can include computing devices configured to communicate via the network105to display data such as the content provided by the content publisher device120(e.g., primary webpage content or other information resources) and the content provided by the content provider device115(e.g., content elements configured for display in an information resource). The client device125, the content provider device115, and the content publisher device120can include desktop computers, laptop computers, tablet computers, smartphones, personal digital assistants, mobile devices, consumer computing devices, servers, clients, digital video recorders, a set-top box for a television, a video game console, or any other computing device configured to communicate via the network105. The client device125can be a communication device through which an end user can submit requests to receive content. The requests can be requests to a search engine, and the requests can include search queries. In some implementations, the requests can include a request to access a webpage.

The content provider devices115, the content publisher device120, and the client device125can include a processor and a memory, i.e., a processing circuit. The memory stores machine instructions that, when executed by processor, cause processor to perform one or more of the operations described herein. The processor may include a microprocessor, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), etc., or combinations thereof. The memory may include, but is not limited to, electronic, optical, magnetic, or any other storage or transmission device capable of providing the processor with program instructions. The memory may further include a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ASIC, FPGA, read-only memory (ROM), random-access memory (RAM), electrically erasable programmable ROM (EEPROM), erasable programmable ROM (EPROM), flash memory, optical media, or any other suitable memory from which the processor can read instructions. The instructions may include code from any suitable computer programming language.

The content provider devices115, the content publisher devices120, and the client device125may also include one or more user interface devices. In general, a user interface device refers to any electronic device that conveys data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, etc.) and/or converts received sensory information from a user into electronic signals (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.). The one or more user interface devices may be internal to a housing of the content provider devices115, the content publisher device120, and the client device125(e.g., a built-in display, microphone, etc.) or external to the housing of content provider devices115, the content publisher device120, and the client device125(e.g., a monitor connected to the client device125, a speaker connected to the client device125, etc.), according to various implementations. For example, the content provider devices115, the content publisher device120, and the client device125may include an electronic display, which visually displays webpages using webpage data received from one or more content sources and/or from the data processing system110via the network105.

The data processing system110can include at least one server. For instance, the data processing system110can include a plurality of servers located in at least one data center or server farm. In some implementations, the data processing system110includes a content placement system. The data processing system110can include at least one content deliverer130, at least one policy manager135, at least one bitstream comparator140, at least one render verifier145, and at least one database150.

The content deliverer130, policy manager135, bitstream comparator140, render verifier145can include at least one processing unit, server, virtual server, circuit, engine, agent, appliance, or other logic device such as programmable logic arrays configured to communicate with the database150and with other computing devices (e.g., the content provider device115, the content publisher device120, or the client device125) via the network105. The content deliverer130, policy manager135, bitstream comparator140, render verifier145can include or execute at least one computer program or at least one script. The content deliverer130, policy manager135, bitstream comparator140, render verifier145can be separate components, a single component, or part of the data processing system110. The content deliverer130, policy manager135, bitstream comparator140, render verifier145can include combinations of software and hardware, such as one or more processors configured to execute one or more scripts. The data processing system110can also include one or more content repositories or databases150. The databases150can be local to the data processing system110. In some implementations, the databases150can be remote to the data processing system110but can communicate with the data processing system110via the network105. The databases150can include information resources and content elements to be included in information resources, among others, to serve to a client device125. Additional details of the data stored in the database150are detailed below.

The client devices125can include a processor155, a network interface160, an input/output (I/O) interface165, memory170, and a trusted platform module175. The processor155, the network interface160, the I/O interface165(e.g., an electronic display), and the memory170may be components described herein in conjunction withFIG. 6. The memory170can include instructions for an application180, a frame verifier190, and a message generator192to be executed by the processor155. The application180may include an Internet browser, a mobile application, or any other computer program capable of executing or otherwise invoking computer-executable instructions processed by the client device125, such as the computer-executable instructions included in an information resource182or the content elements included in the information resource182. The application180may also include a media player or any other computer program capable of processing audiovisual content (e.g., a video content element184) and rendering the audiovisual content onto the I/O interface165. In some implementations, the frame verifier190and/or the message generator192may be standalone components separate from the application180. In some implementations, the frame verifier190and/or the message generator192may be part of the application180. In some implementations, the frame verifier190and/or the message generator192may be part of the information resource182(e.g., as a script) provided by the content publisher device120or a video content element184provided by the content provider device115or the data processing system110. Additional functionalities of the application180, the frame verifier190, and the message generator192are detailed herein below.

The information resource182and the content elements included therein can correspond to a script, logic, markup, or instructions (e.g., HyperText Markup Language (HTML), Extensible HyperText Markup Language (XHTML), Extensible Markup Language (XML), Cascading Style Sheets (CSS), JavaScript, or any combination thereof). The application180can include any number of components, such as a document tree generator, rendering tree generator, and a display module, to process the information resource182and the content elements included therein. The document tree generator can parse the information resource182to generate a Document Object Model (DOM) tree including the content elements of the information resource182arranged in a hierarchical manner. Using the DOM tree, the rendering tree generator can generate a rendering tree specifying the visual properties or attributes of the content elements of the information resource182. The display module can render and display the information resource182onto the I/O interface165of the client device125based on the rendering tree.

The trusted platform module175(sometimes referred to as a cryptoprocessor) may include one or more dedicated microcontrollers for performing secure encryption and decryption functions. The trusted platform module175may include a cryptographic processor194, persistent storage196, and versatile storage198. The cryptographic processor194may include a pseudo-random number generator, an encryption key generator (e.g., RSA key, elliptic curve cryptography key, Advanced Encryption Standard (AES), etc.), a secure hash generator (e.g., SHA-1, SHA-256, etc.), and a signature engine (e.g., digital signature, etc.). The cryptographic processor194may execute various encryption algorithms, such as symmetric-key algorithms, asymmetric-key algorithms, and cryptographic hashing, among others. In some implementations, the persistent storage196and/or the versatile storage198may be part of the memory170. In some implementations, the persistent storage196and/or the versatile storage198may be part of an individual memory unit separate from the memory170. The persistent storage196may include an endorsement key, a storage root key, and a platform configuration register, among others. The versatile storage198may include attestation identity keys and a key storage, among others. The components of the trusted platform module175and the contents therein may be used to process each frame of the video content element184. The trusted platform module175may include a secure output path to the I/O interface165for rendering the processed frames of the video content element184. Additional functionalities of the trusted platform module175are detailed herein below.

In further detail starting with the data processing system110, the content deliverer130can receive a request for video content from the client device125. The request may be for inserting video content into an information resource182loaded by the application180of the client device125. In some embodiments, the request may be generated by the client device125in loading the information resource182. The request for video content can include a device identifier corresponding to the client device125. The request for video content can include an address for a specific video content element (e.g., using a Uniform Resource Locator (URL) such as “www.example.com/home/example.html”). The request for video content can include an identifier for the specific video content element.

Using the request received from the client device125, the content deliverer130can identify the video content element184from the database150. The database150may include one or more video content elements (e.g., a video content element184) arranged by the address or the identifier. The content deliverer130can access the database150using the address or identifier for the video content included in the request to retrieve or obtain the video content element184. The video content element184may include one or more frames186A-186N. In some implementations, the video content element184may include a single frame so that the video content element184appears as a static image on the I/O interface165of the client device125.

The video content element184may be a compressed video. Each of the one or more frames186A-186N may have an encoding type (e.g., intra-frame or inter-frame). Some of the one or more frames186A-186N of the video content element184may be intra-coded pictures (I-frames). Intra-coded picture frames186A-186N may include a full static image, independent of the other frames186A-N. Some of the one or more frames186A-186N of the video content element184may be predicted pictures (P-frames). Predicted picture frames186A-186N may be dependent on a previous frame186A-186N and may include changes in the image at the frame186A-186N from the previous frame186A-186N. Some of the one or more frames186A-186N of the video content element184may be bi-predictive pictures (B-frames). Bi-predictive picture frames186A-186N may be dependent on a previous frame and a subsequent frame186A-186N and may include changes in the image at the frame186A-186N from the previous and the subsequent frames186A-186N. The video content element184may correspond to a binary sequence (e.g., a byte array or a byte stream). Each of the frames186A-186N of the video content element184may correspond to a portion of the binary sequence (e.g., a bit stream).

With the video content element184retrieved from the database150, the policy manager135can select a verification policy to apply to verify rendering of the video content element184at the client device125. There may be two verification policies: a first verification policy and a second verification policy. The policy manager135can select the verification policy based on the retrieved video content element184. In some implementations, the policy manager135can identify one or more attributes of the video content element184(e.g., time duration, dimensions, file size, etc.) to select the verification policy. The policy manager135can select the verification policy based on the client device125. In some implementations, the policy manager135can identify one or more properties of the video content element184(e.g., device type, memory, network bandwidth, processing power, etc.) in selecting the verification policy. The policy manager135can select the verification policy randomly (e.g., by using a pseudo-number generator). Once selected, the policy manager135can modify the video content element184in setting or inserting a predesignated frame188(sometimes referred to as a check frame) used to verify rendering of the video content element184at the client device125in accordance with the verification policy. The policy manager135can also store the selected verification policy with the identifier for the video content element184and the device identifier for the client device125on the database150.

Under the first verification policy (mode A), the policy manager135can select at least one of the frames186A-186N of the video content element184as a predesignated frame188based on computational complexity in processing the frames186A-186N. In some implementations, the policy manager135can calculate or estimate a computational complexity metric for each frame186A-186N. The computational complexity metric may include process time, processor usage, memory usage, and power consumption, among other attributes, in processing the respective frame186A-186N at the client device125. The policy manager135can run a simulated processing of the video content element184to measure, among other attributes, an estimated process time, estimated processor usage, estimated memory usage, and estimated power consumption. In estimating the computational complexity metric, the policy manager135can identify the encoding type of each frame186A-186N. The policy manager135can then determine changes in the bit stream between each frame186A-186N based on the identified encoding type to estimate the computational complexity metric.

With the computational complexity metric for each frame186A-186N calculated, the policy manager135can identify the frame186A-186N corresponding to the highest computational complexity metric. The policy manager135can select the frame186A-186N corresponding to the highest computational complexity metric as the predesignated frame188. With the predesignated frame188corresponding to the frame186A-186N of the highest computational complexity metric, devices in the network105may consume computer resources in processing the predesignated frame188, thereby making it difficult to generate fraudulent tracking events. In some implementations, the policy manager135can identify frames186A-186N with computational complexity metrics greater than a predetermined threshold. From the identified frames186A-186N with computational complexity metrics greater than the predetermined threshold, the policy manager135can select one frame186A-186N (or more) as the predesignated frame188. The policy manager135can also identify a bit stream corresponding to the predesignated frame188. In some implementations, the policy manager135can identify the first frame having a computational complexity metric that meets a pre-set threshold as the predesignated threshold, or it may identify all frames186A-186N having a computational complexity metric that meets a pre-set threshold and select the predesignated frame188from these frames186A-186N. In some implementations, the policy manager135can determine the encrypted bit stream corresponding to the predesignated frame188. The policy manager135can store the bit stream corresponding to the predesignated frame188in the database150.

The policy manager135can also arbitrarily select at least one of the frames186A-186N as the predesignated frame188. In some implementations, the policy manager135can identify a last frame186N of the video content element184. In some implementations, the policy manager135can select, as the predesignated frame, a frame whose decoding operation refers to previous frames186A-M. As noted, a frame whose decoding operation refers to previous frames is likely to be computationally expensive to decode. The policy manager135can select the last frame186N of the video content element184as the predesignated frame188. In some implementations, the policy manager135can generate a frame number using a pseudo-random number generator. The frame number may range from one to a number of frames in the video content element184. The policy manager135can identify the frame186A-186N corresponding to the generated frame number. The policy manager135can select the identified frame186A-186N as the predesignated frame188. If the video content element184includes a single frame186A, the policy manager135can select the single frame186A as the predesignated frame188. The policy manager135can also identify a bit stream corresponding to the predesignated frame188. In some implementations, the policy manager135can determine the encrypted bit stream corresponding to the predesignated frame188. The policy manager135can store the bit stream corresponding to the predesignated frame188in the database150.

Still pursuant under the first verification policy, the policy manager135can identify a subset portion of one predesignated frame188. The subset portion may correspond to a rectangular region of the predesignated frame188when displayed on the I/O interface165of the client device125. By designating the rectangular region, the data processing system110may verify whether the subset portion of the predesignated frame188is in fact rendered and displayed at the client device125. The policy manager135can identify pixel dimensions of the rectangular region of the predesignated frame188. In some implementations, the pixel dimensions can include a top left corner of the rectangular region and a bottom right corner of the rectangular region. The policy manager135can select or designate the subset portion of the predesignated frame188. The policy manager135can also identify a bit stream corresponding to designated subset portion of the predesignated frame188. In some implementations, the policy manager135can calculate the bit stream corresponding to the subset portion of the predesignated frame188. The policy manager135can store the identified bit stream in the database150.

Under the second verification policy (mode B), the policy manager135can generate and insert a new frame into the video content element184as the predesignated frame188. In some implementations, multiple new frames may be inserted into the video content element184as predesignated frames188. The policy manager135can generate the new frame into the video content element184as the predesignated frame188using any encoding type. In some implementations, the policy manager135can generate the predesignated frame188as an intra-coded picture independent of any frame186A-186N in the video content element184. In some implementations, the policy manager135can generate the predesignated frame188as a bi-predictive picture by using a previous and a subsequent frame186A-186N. In some implementations, the policy manager135can generate the predesignated frame188as a predictive picture by using the previous frame186A-186N. To prevent corruption or degradation of the video content element184when the new frame is inserted, the policy manager135can generate the predesignated frame188as a dummy frame to preserve the encoding of the video content from the previous frame186A-186N to the subsequent frame186A-186N. In some implementations, the policy manager135can set a rendering-enabled property of the predesignated frame188to null in order to prevent rendering of the predesignated frame188at the client device125, thereby making the predesignated frame188the dummy frame. The policy manager135can then insert the predesignated frame188into the video content element184. If the encoding type is predicted or bi-predictive, the predesignated frame188may be inserted by the policy manager135at the corresponding sequence in the video content element184. In some implementations, the policy manager135can insert the predesignated frame188into the video content element184as the very last frame. The policy manager135can also identify a bit stream corresponding to the predesignated frame188. In some implementations, the policy manager135can determine the encrypted bit stream corresponding to the predesignated frame188. The policy manager135can store the bit stream corresponding to the predesignated frame188in the database150.

To indicate to the client device125to use the predesignated frame188to send a verification message, the policy manager135can include a designation indicator in the video content element184. In some implementations, the designation indicator may include a verification policy identifier corresponding to the selected verification policy. In some implementations, the designation indicator may include the pixel dimensions corresponding to the subset portion of the predesignated frame188. In some implementations, the policy manager135can insert the designation indicator at the predesignated frame188as a mark (e.g., a watermark or other invisible or imperceptible marker). In some implementations, the policy manager135can insert the designation indicator in a header of the predesignated frame188. In some implementations, the policy manager135can insert the designation indicator in the metadata of the video content element184. The designation indicator included in the metadata may include a frame number corresponding to the predesignated frame188. In some implementations, the policy manager135can transmit the designation indicator to the client device125separately from the video content element184.

With the predesignated frame188selected or inserted into the video content element184, the content deliverer130can transmit the video content element184via the network105. The transmission of the video content element184may include streaming of the frames186A-186N (e.g., as chunks). In some implementations, the content deliverer130can also transmit the frame verifier190. In some implementations, the content deliverer130can also transmit the message generator192. The frame verifier190and the message generator192may be used by the client device125to process the predesignated frame188to verify that the video content element184is rendered at the client device125. In some implementations, the frame verifier190and/or the message generator192may be previously loaded at the client device125.

Prior to transmission, the content deliverer130can encrypt the video content element184prior to transmission using various encryption algorithms (e.g., digital rights management schema such as Diffie-Hellman key exchange). The encryption and decryption of the video content element184may be computationally complex. As such, it may be computationally expensive for other devices in the network105attempting to decrypt the video content element184to send fake tracking events in the manner detailed herein to boost the view counts of the video content element184. By preventing fake tracking events, the system100may improve verification of the rendering the video content element184at the client devices125connected to the network105, thereby resulting in a more accurate view count for the video content element184as well as verifying the rendering of the content.

Subsequent to the request for video content, the client device125can then receive the video content element184from the content deliverer130. In some implementations, the client device125can receive the designation indicator with the video content element184. In some implementations, the client device125can receive the designation indicator separate from the video content element184from the policy manager135. In some implementations, the client device125can receive the frame verifier190from the content deliverer130. In some implementations, the client device125can receive the message generator192from the content deliverer130.

Having loaded the video content element184, the application180can start to play the one or more frames186A-186N of the video content element184. The playing of the video content element184may include streaming of the one or more frames186A-186N as the frames186A-186N as received from the content deliverer130. In processing the one or more frames186A-186N of the video content element184, the application180can invoke the trusted platform module175to identify the bit stream corresponding to the frame186A-186N and to decrypt the bit stream for rendering and display the frame186A-186N on the I/O interface165(as a secured output path).

As the video content element184is processed, the frame verifier190can determine whether the current frame186A-186N is the predesignated frame188. The frame verifier190can use the designation indicator to identify the predesignated frame188. In some implementations, the frame verifier190can use an image recognition algorithm to recognize the mark on the predesignated frame188to identify the current frame186A-186N as the predesignated frame188. In some implementations, the frame verifier190can read the header of the current frame186A-186N to identify the designation indicator to determine that the current frame186A-186N is the predesignated frame188. In some implementations, the frame verifier190can read the metadata of the video content element184to identify the predesignated frame188. The reading of the metadata may be prior to the playing of the video content element184.

If the current frame186A-186N is not the predesignated frame188, the application180may continue processing the video content element184. The application180can render the current frame186A-186N. The application can then identify the next frame186A-186N. The frame verifier190can then again determine whether the frame186A-186N is the predesignated frame188using the above listed techniques. This process may be repeated until the end of the video content element184.

If the current frame186A-186N is the predesignated frame188, the frame verifier190can identify which verification policy is to be applied for verifying the rendering of the video content element184. In some implementations, the frame verifier190can identify which verification policy is to be applied based on the designation indicator indicating the verification policy selected by the policy manager135. In some implementations, the frame verifier190can identify which verification policy is to be applied based on a rendering-enabled property of the predesignated frame188. If the rendering-enabled property of the predesignated frame188is set to true, the frame verifier190may identify that the first verification policy is to be applied. If the rendering-enabled property of the predesignated frame188is set to null, the frame verifier190may identify that the second verification policy is to be applied. Using the identified verification policy, the frame verifier190can invoke the trusted platform module175to encode the predesignated frame188for verifying the rendering of the video content element184at the client device125.

Under the first verification policy, the frame verifier190can allow the application180to render the predesignated frame188for display on the I/O interface165. In some implementations, the frame verifier190can identify the bit stream corresponding to predesignated frame188. The bit stream may have been encrypted by the content deliverer130. Using the identified bit stream, the frame verifier190can invoke the trusted platform module175to decrypt the bit stream corresponding to the predesignated frame188to generate another bit stream using various decryption techniques (e.g., Diffie-Hellman key exchange, RSA, etc.). In some implementations, the frame verifier190can identify the predesignated frame188(e.g., using a frame sequence number). The frame verifier190can then invoke the trusted platform module175to decrypt the bit stream corresponding to the predesignated frame188by identifying the predesignated frame188. The decoded bit stream may be part of the binary sequence used by the application180to render and display the video content element184on the I/O interface165. In this manner, the frame verifier190can verify the rendering of the video content element184including the predesignated frame188at the client device125.

In some implementations, the decoded bit stream may correspond to the designated subset portion of the predesignated frame188. The frame verifier190can identify the designated subset portion of the predesignated frame188from the designation identifier. In some implementations, the frame verifier190can identify the pixel dimensions of the subset portion of the predesignated frame188from the designation identifier. In some implementations, the frame verifier190can identify the bit stream corresponding to designated subset portion of the predesignated frame188or the pixel dimensions of the subset portion of the predesignated frame188. Using the identified bit stream, the frame verifier190can invoke the trusted platform module175to decrypt or otherwise recover the bit stream corresponding to the predesignated frame188to generate another bit stream using various decryption techniques (e.g., Diffie-Hellman key exchange, RSA, cryptographic hash, etc.). The framer verifier190can invoke the trusted platform module175to decrypt the bit stream corresponding to the predesignated frame188by identifying the subset portion of the predesignated frame188or the pixel dimensions of the subset portion of the predesignated frame188. The decoded bit stream may be part of the binary sequence used by the application180to render and display the subset portion of whatever is displayed within the pixel dimensions on the I/O interface165. In this manner, the frame verifier190can verify whether the rendering of the video content element184including the subset portion of the predesignated frame188at the client device125is free from any occlusions.

Now referring toFIG. 2A,FIG. 2Ais a block diagram depicting a flow process of verifying the rendering of the video content element184under the first verification policy (mode A200A). In the context of system100, the policy manager135may have selected one of the frames186A-186N of the video content element184as the predesignated frame188. The second frame186B may be a P-frame with a backward dependency205A on the previous frame186A. The predesignated frame188may be a B-frame with a backward dependency205B on one of the previous frames186A-186N and with a forward dependency205C the next frame186N. The frame verifier190may have identified the predesignated frame188using the designation identifier and may have identified a predesignated subset portion210. The predesignated frame188may be rendered on the I/O interface165, along with the other frames186A-186N. The frame verifier190can invoke the trusted platform module175to decrypt the encoded bit stream corresponding to the rendering of the predesignated subset portion210to generate the bit stream215A (e.g., “9B02”). The bit stream215A may be used to generate a tracking message as will be detailed herein.

Returning toFIG. 1, under the second verification policy, with the rendering enabled property of the predesignated frame188set to null, the application180may drop the rendering of the predesignated frame188. In some implementations, the frame verifier190can identify the bit stream corresponding to predesignated frame188. The bit stream may have been encrypted by the content deliverer130. Using the identified bit stream, the frame verifier190can invoke the trusted platform module175to decrypt or otherwise recover the bit stream corresponding to the predesignated frame188to generate another bit stream using various decryption techniques (e.g., Diffie-Hellman key exchange, RSA, cryptographic hash, etc.). In some implementations, the framer verifier190can identify the predesignated frame188(e.g., using a frame sequence number). The framer verifier190can then invoke the trusted platform module175to decrypt the bit stream corresponding to the predesignated frame188by identifying the predesignated frame188. The decoded bit stream may be part of the binary sequence used by the application180to process the video content element184for rendering onto the I/O interface165had the rendering property of the predesignated frame188been set to true. In this manner, the frame verifier190can verify the rendering of the video content element184without actually rendering the predesignated frame188at the client device125.

Now referring toFIG. 2B,FIG. 2Bis a block diagram depicting a flow process of verifying the rendering of the video content element184under the second verification policy (mode B200B). In the context of system100, the policy manager135may have inserted the predesignated frame188into one of the frames186A-186N of the video content element184. The second frame186B may be a P-frame with a backward dependency205A on the previous frame186A. The predesignated frame188may be a B-frame with a backward dependency205B on one of the previous frames186A-186N and with a forward dependency205C the next frame186N. The rendering-enabled property of the predesignated frame188may be set to null, thereby preventing rendering or display on the I/O interface165. The frame verifier190may have identified the predesignated frame188using the designation identifier. The frame verifier190can invoke the trusted platform module175to decrypt the encoded bit stream corresponding to the predesignated frame188to generate the bit stream215B (e.g., “8A34”). The bit stream215B may be used to generate a tracking message as will be detailed herein.

Returning again toFIG. 1, with the bit stream of the predesignated frame188decoded, the message generator192can generate a tracking message for transmission to the data processing system110. The tracking message may include information identifying the predesignated frame188. The information identifying the predesignated frame188may include a frame identifier (e.g., a frame sequence number). The tracking message may also include the device identifier corresponding to the client device125. The tracking message may also include the identifier or address corresponding to the video content element184. The tracking message may include a video content identifier corresponding to the video content element184. The tracking message may also include a time stamp corresponding to a time (e.g., year, day, hour, minute, second, etc.) that the video content element184was played at the client device or that the predesignated frame188was decoded by the frame verifier190. The tracking message may include the decoded bit stream corresponding to the predesignated frame188. In some implementations, the tracking message may include the decoded bit stream corresponding to the subset portion of the predesignated frame188. Once generated, the message generator192can transmit the tracking message to the data processing system110.

In some implementations, prior to transmission of the tracking message, the message generator192can invoke the trusted platform module175to encrypt the decoded bit stream corresponding to the predesignated frame188or the subset portion of the predesignated frame188. The trusted platform module175may encrypt, authenticate, or otherwise sign the decoded bit stream using an encryption key (e.g., a public key provided by the data processing system110). The encryption key may have been received with the video content element184or the designation indicator for the predesignated frame188. The message generator192can include or insert the encrypted decoded bit stream into the tracking message. In some implementations, the message generator192can insert or include the encryption key used to encrypt, authenticate, or otherwise sign the decoded bit stream into the tracking message.

The message generator192can then transmit the tracking message with the encrypted decoded bit stream to the data processing system110. The decoded bit stream for the predesignated frame188or the subset portion thereof may be hidden from devices connected to the network105that intend to create fraudulent tracking events to boost a view count for the video content element184, thus resulting in a more accurate count of the number of times the video content element184was in fact rendered and displayed at the client device125.

Upon receipt of the tracking message, the bitstream comparator140can compare the bit stream included in the tracking message with the bit stream identified at the data processing system110. Both the bit streams included in the tracking message and stored on the database150may correspond to the predesignated frame188or the subset portion of the predesignated frame188. In some implementations, bitstream comparator140can access the database150to identify the bit stream corresponding to the predesignated frame188or the subset portion of the predesignated frame188using the identifier for the video content element184included in the tracking message. In some implementations, responsive to receiving the tracking message for the video content element184, the bitstream comparator140can identify or otherwise calculate the bit stream corresponding to the predesignated frame188or the subset portion of the predesignated frame188. In some implementations, prior to the comparison, the bitstream comparator140can decrypt the bit stream in the tracking message using the encryption key included in the tracking message In some implementations, prior to the comparison, the bitstream comparator140can decrypt the bit stream in the tracking message using another encryption key (e.g., a private key in a public key cryptography scheme). In some implementations, the bit stream comparator140can decrypt the combination value included in the tracking message using the encryption key used to generate the combination value.

If the bit stream included in the tracking message matches the bit stream identified at the data processing system110, the render verifier145can determine or otherwise verify that the video content element184is rendered at the client device125. The render verifier145can identify the device identifier in the tracking message. The render verifier145can access the database150to search for the device identifier. The database150can include a list of device identifiers as having received the video content element184. The render verifier145can determine whether the device identifier in the tracking message is included in the database150. The render verifier145can identify the video content identifier in the tracking message. The render verifier145can identify access the database150to search for the video identifier. The render verifier145can find a match between the video content identifier with one included in the database150. The render verifier145can access the database150using the frame identifier and the video content identifier. The render verifier145can determine whether the frame identifier and the video content identifier match any of those stored at the database150. The render verifier145can identify the time stamp included in the message. The render verifier145can access the database150to search for time stamps of when the video content element184was transmitted via the network105. If the time stamp is within any of those in the database150within a predetermined margin, the render verifier145can identify the time stamp included in the tracking message as matching one in the database150. The render verifier145can identify the frame identifier included in the tracking message.

If any one or more the information included in the tracking message matches information stored in the database150in addition to the bit stream included in the tracking message matching the bit stream identified at the database processing system110, the render verifier145can make a record that the video content element184has been rendered at the client device125. The record may be stored at the database150to check at a later time whether and/or when a particular video content element184was rendered at a particular client device125. In some implementations, the render verifier145can update a view count for the video content element184. Responsive to determining that the video content element184is rendered at the client device125and finding the device identifier of the tracking message in the database150, the render verifier145can also update a view count for the video content element184. In some implementations, the render verifier145may maintain a counter at the database150to keep track of the view count for the video content element184. In some implementations, responsive to bit stream included in the tracking message matching the bit stream identified at the data processing system110, the render verifier145can increment the counter for the view count for the video content element184. On the other hand, if the bit stream included in the tracking message does not match the bit stream identified at the data processing system110, the render verifier145can determine that the video content element184was not properly rendered at the client device125and the render verifier145can maintain the view count for the video content element184at the previous value. In some implementations, the render verifier145can alert a network administrator of the data processing system110of a potential malicious third-party device attempting to fake tracking events to falsify the record of whether the video content element184was rendered at a client device125or to boost the view count of the video content element184.

Given that the video content element184including the predesignated frame188is encrypted described herein, other devices connected to the network105(e.g., malicious third parties) may have difficulty to repeatedly mimicking the tracking message, thereby preventing fraudulent tracking events. In this manner, the system100may increase the accuracy of the view count of the video content element184. Furthermore, rendering and display of the video content element184at the client device125may be verified.

Now referring toFIG. 3,FIG. 3is a flow diagram depicting a method300of verifying the rendering of video content on information resources, in accordance to an illustrative implementation. The functionality described herein with respect to method300can be performed or otherwise executed by the data processing system110as shown onFIG. 1or a computing device as shown inFIG. 6or any combination thereof. In brief overview, the data processing system can transmit a video content element to a client device (BLOCK305). The video content element may have a first bit stream corresponding to a predesignated frame. The data processing system can compare a second bit stream included in a tracking message from a client device with a third bit stream maintained at a database for the video content element (BLOCK310). The data processing system can determine that the video content element is rendered at the client device, responsive to the second bit stream from the client device matching the third bit stream maintained at the database (BLOCK320).

In further detail, the data processing system can transmit a video content element to a client device (BLOCK305). The data processing system can receive a request for video content from the client device. The request may be to insert video content into an information resource loaded by the application of the client device. In some embodiments, the request may be generated by the client device in loading the information resource. The request for video content can include a device identifier corresponding to the client device. The request for video content can include an address for a specific video content element (e.g., using a Uniform Resource Locator (URL) such as “www.example.com/home/example.html”). The request for video content can include an identifier for the specific video content element.

Using the request received from the client device, the data processing system can identify the video content element from the database. The database may include one or more video content elements (e.g., a video content element) arranged by the address or the identifier. The data processing system can access the database using the address or identifier for the video content included in the request to retrieve or obtain the video content element. The video content element may include one or more frames. In some implementations, the video content element may include a single frame so that the video content element appears as a static image on the I/O interface of the client device.

The video content element may be a compressed video. Each of the one or more frames may have an encoding type (e.g., intra-frame or inter-frame). Some of the one or more frames of the video content element may be intra-coded pictures (I-frames). Intra-coded picture frames may include a full static image, independent of the other frames. Some of the one or more frames of the video content element may be predicted pictures (P-frames). Predicted picture frames may be dependent on a previous frame and may include changes in the image at the frame from the previous frame. Some of the one or more frames of the video content element may be bi-predictive pictures (B-frames). Bi-predictive picture frames may be dependent on a previous frame and a subsequent frame and may include changes in the image at the frame from the previous and the subsequent frames. The video content element may correspond to a binary sequence (e.g., a byte array or a byte stream). Each of the frames of the video content element may correspond to a portion of the binary sequence (e.g., a bit stream).

With the video content element retrieved from the database, the data processing system can select a verification policy to apply to verify rendering of the video content element at the client device. There may be two verification policies: a first verification policy and a second verification policy. The data processing system can select the verification policy based on the retrieved video content element. In some implementations, the data processing system can identify one or more attributes of the video content element (e.g., time duration, dimensions, file size, etc.) to select the verification policy. The data processing system can select the verification policy based on the client device. In some implementations, the data processing system can identify one or more properties of the video content element (e.g., device type, memory, network bandwidth, processing power, etc.) in selecting the verification policy. The data processing system can select the verification policy randomly (e.g., by using a pseudo-number generator). Once selected, the data processing system can modify the video content element in setting or inserting a predesignated frame used to verify rendering of the video content element at the client device in accordance with the verification policy. The data processing system can also store the selected verification policy with the identifier for the video content element and the device identifier for the client device on the database.

Under the first verification policy (mode A), the data processing system can select one of the frames of the video content element as a predesignated frame based on computational complexity in processing the frames. In some implementations, the data processing system can calculate or estimate a computational complexity metric for each frame. The computational complexity metric may include process time, processor usage, memory usage, and power consumption, among other attributes, in processing the respective frame at the client device. The data processing system can run a simulated processing of the video content element to measure, among other attributes, an estimated process time, estimated processor usage, estimated memory usage, and estimated power consumption. In estimating the computational complexity metric, the data processing system can identify the encoding type of each frame. The data processing system can then determine changes in the bit stream between each frame based on the identified encoding type to estimate the computational complexity metric.

With the computational complexity metric for each frame calculated, the data processing system can identify the frame corresponding to the highest computational complexity metric. The data processing system can select the frame corresponding to the highest computational complexity metric as the predesignated frame. With the predesignated frame corresponding to the frame of the highest computational complexity metric, devices in the network may consume computer resources in processing the predesignated frame, thereby making it difficult to generate fraudulent tracking events. In some implementations, the data processing system can identify frames with computational complexity metrics greater than a predetermined threshold. From the identified frames with computational complexity metrics greater than the predetermined threshold, the data processing system can select one frame (or more) as the predesignated frame. The data processing system can also identify a bit stream corresponding to the predesignated frame. In some implementations, the data processing system can determine the encrypted bit stream corresponding to the predesignated frame. The data processing system can store the bit stream corresponding to the predesignated frame in the database.

The data processing system can also select one of the frames as the predesignated frame arbitrarily. In some implementations, the data processing system can identify a last frame of the video content element. The data processing system can select the last frame of the video content element as the predesignated frame. In some implementations, the data processing system can generate a frame number using a pseudo-random number generator. The frame number may range from one to a number of frames in the video content element. The data processing system can identify the frame corresponding to the generated frame number. The data processing system can select the identified frame as the predesignated frame. If the video content element includes a single frame, the data processing system can select the single frame as the predesignated frame. The data processing system can also identify a bit stream corresponding to the predesignated frame. In some implementations, the data processing system can determine the encrypted bit stream corresponding to the predesignated frame. The data processing system can store the bit stream corresponding to the predesignated frame in the database.

Still pursuant under the first verification policy, the data processing system can identify a subset portion of the predesignated frame. The subset portion may correspond to a rectangular region of the predesignated frame when displayed at the I/O interface of the client device. By designating the rectangular region, the data processing system may verify whether the subset portion of the predesignated frame is in fact rendered and displayed at the client device. The data processing system can identify pixel dimensions of the rectangular region of the predesignated frame. In some implementations, the pixel dimensions can include a top left corner of the rectangular region and a bottom right corner of the rectangular region. The data processing system can select or designate the subset portion of the predesignated frame. The data processing system can also identify a bit stream corresponding to designated subset portion of the predesignated frame. In some implementations, the data processing system can calculate the bit stream corresponding to the subset portion of the predesignated frame. The data processing system can store the identified bit stream in the database.

Under the second verification policy (mode B), the data processing system can generate and insert a new frame into the video content element as the predesignated frame. The data processing system can generate the new frame into the video content element as the predesignated frame using any encoding type. In some implementations, the data processing system can generate the predesignated frame as an intra-coded picture independent of any frame in the video content element. In some implementations, the data processing system can generate the predesignated frame as a bi-predictive picture by using a previous and a subsequent frame. In some implementations, the data processing system can generate the predesignated frame as a predictive picture by using the previous frame. To prevent corruption or degradation of the video content element when the new frame is inserted, the data processing system can generate the predesignated frame as a dummy frame to preserve the encoding of the video content from the previous frame to the subsequent frame. In some implementations, the data processing system can set a rendering-enabled property of the predesignated frame to null in order to prevent rendering of the predesignated frame at the client device, thereby making the predesignated frame the dummy frame. The data processing system can then insert the predesignated frame into the video content element. If the encoding type is predicted or bi-predictive, the predesignated frame may be inserted by the data processing system at the corresponding sequence in the video content element. In some implementations, the data processing system can insert the predesignated frame into the video content element as the very last frame. The data processing system can also identify a bit stream corresponding to the predesignated frame. In some implementations, the data processing system can determine the encrypted bit stream corresponding to the predesignated frame. The data processing system can store the bit stream corresponding to the predesignated frame in the database.

To indicate to the client device to use the predesignated frame to send a verification message, the data processing system can include a designation indicator in the video content element. In some implementations, the designation indicator may include a verification policy identifier corresponding to the selected verification policy. In some implementations, the designation indicator may include the pixel dimensions corresponding to the subset portion of the predesignated frame. In some implementations, the data processing system can insert the designation indicator at the predesignated frame as a mark (e.g., a watermark or other invisible or imperceptible marker). In some implementations, the data processing system can insert the designation indicator in a header of the predesignated frame. In some implementations, the data processing system can insert the designation indicator in the metadata of the video content element. The designation indicator included in the metadata may include a frame number corresponding to the predesignated frame. In some implementations, the data processing system can transmit the designation indicator to the client device separately from the video content element.

With the predesignated frame selected or inserted into the video content element, the data processing system can transmit the video content element via the network. The transmission of the video content element may include streaming of the frames (e.g., as chunks). In some implementations, the data processing system can also transmit the client device. The client device and the client device may be used by the client device to process the predesignated frame to verify that the video content element is rendered at the client device. In some implementations, the client device and/or the client device may be previously loaded at the client device.

Prior to transmission, the data processing system can encrypt the video content element prior to transmission using various encryption algorithms (e.g., digital rights management schema such as Diffie-Hellman key exchange). The encryption and decryption of the video content element may be computationally complex. As such, it may be computationally expensive for other devices in the network attempting to decrypt the video content element to send fake tracking events in the manner detailed herein to boost the view counts of the video content element. The receipt of the video content element by the client device may cause the client device to perform the functionalities as detailed inFIG. 4.

Now referring toFIG. 4,FIG. 4is a flow diagram depicting a method400of verifying the rendering of video content on information resources, in accordance to an illustrative implementation. The functionality described herein with respect to method400can be performed or otherwise executed by the client device125as shown inFIG. 1or a computing device as shown inFIG. 6, or any combination thereof. In brief overview, the client device can receive, from a data processing system, the video content element having the first bit stream corresponding to the predesignated frame (BLOCK405). The client device can identify the first bit stream corresponding to the predesignated frame of the video content element (BLOCK410). The client device can decode the first bit stream corresponding to the predesignated frame of the video content element to generate a second bit stream (BLOCK415). The client device can transmit a tracking message including the second bit stream to the data processing system (BLOCK420).

In further detail, the client device can receive, from a data processing system, the video content element having the first bit stream corresponding to the predesignated frame (BLOCK405). Subsequent to the request for video content, the client device can then receive the video content element from the data processing system. In some implementations, the client device can receive the designation indicator with the video content element. In some implementations, the client device can receive the designation indicator separate from the video content element from the data processing system.

Having loaded the video content element, the application can start to play the one or more frames of the video content element. The playing of the video content element may include streaming the one or more frames as the frames are received from the data processing system. In processing the one or more frames of the video content element, the application can invoke the trusted platform module to identify the bit stream corresponding to the frame and to decrypt the bit stream for rendering and display the frame on the I/O interface (as a secured output path).

As the video content element is processed, the client device can determine whether the current frame is the predesignated frame. The client device can use the designation indicator to identify the predesignated frame. In some implementations, the client device can use an image recognition algorithm to recognize the mark on the predesignated frame to identify the current frame as the predesignated frame. In some implementations, the client device can read the header of the current frame to identify the designation indicator to determine that the current frame is the predesignated frame. In some implementations, the client device can read the metadata of the video content element to identify the predesignated frame. The reading of the metadata may be prior to the playing of the video content element.

If the current frame is not the predesignated frame, the application may continue processing the video content element. The application can render the current frame. The application can then identify the next frame. The client device can then again determine whether the frame is the predesignated frame using the above listed techniques. This process may be repeated until the end of the video content element.

If the current frame is the predesignated frame, the client device can identify which verification policy is to be applied for verifying the rendering of the video content element. In some implementations, the client device can identify which verification policy is to be applied based on the designation indicator indicating the verification policy selected by the data processing system. In some implementations, the client device can identify which verification policy is to be applied based on a rendering-enabled property of the predesignated frame. If the rendering-enabled property of the predesignated frame is set to true, the client device may identify that the first verification policy is to be applied. If the rendering-enabled property of the predesignated frame is set to null, the client device may identify that the second verification policy is to be applied. Using the identified verification policy, the client device can invoke the trusted platform module to encode the predesignated frame for verifying the rendering of the video content element at the client device.

The client device can identify the first bit stream corresponding to the predesignated frame of the video content element (BLOCK410). The client device can decode the first bit stream corresponding to the predesignated frame of the video content element to generate a second bit stream (BLOCK415). Under the first verification policy, the client device can allow the application to render the predesignated frame for display on the I/O interface. In some implementations, the client device can identify the bit stream corresponding to predesignated frame. The bit stream may have been encrypted by the data processing system. Using the identified bit stream, the client device can invoke the trusted platform module to decrypt the bit stream corresponding to the predesignated frame to generate another bit stream using various decryption techniques (e.g., Diffie-Hellman key exchange, RSA, etc.). In some implementations, the client device can identify the predesignated frame (e.g., by using a frame sequence number). The client device can then invoke the trusted platform module to decrypt the bit stream corresponding to the predesignated frame by identifying the predesignated frame. The decoded bit stream may be part of the binary sequence used by the application to render and display the video content element on the I/O interface. In this manner, the client device can verify the rendering of the video content element including the predesignated frame at the client device.

The client device can transmit a tracking message including the second bit stream to the data processing system (BLOCK420). In some implementations, the decoded bit stream may correspond to the designated subset portion of the predesignated frame. The client device can identify the designated subset portion of the predesignated frame from the designation identifier. In some implementations, the client device can identify the pixel dimensions of the subset portion of the predesignated frame from the designation identifier. In some implementations, the client device can identify the bit stream corresponding to designated subset portion of the predesignated frame or the pixel dimensions of the subset portion of the predesignated frame. Using the identified bit stream, the client device can invoke the trusted platform module to decrypt or otherwise recover the bit stream corresponding to the predesignated frame to generate another bit stream using various decryption techniques (e.g., Diffie-Hellman key exchange, RSA, cryptographic hash, etc.). The client device can invoke the trusted platform module to decrypt the bit stream corresponding to the predesignated frame by identifying the subset portion of the predesignated frame or the pixel dimensions of the subset portion of the predesignated frame. The decoded bit stream may be part of the binary sequence used by the application to render and display the subset portion of whatever is displayed within the pixel dimensions onto the I/O interface. In this manner, the client device can verify whether the rendering of the video content element including the subset portion of the predesignated frame at the client device is free from any occlusions.

Under the second verification policy, with the rendering-enabled property of the predesignated frame set to null, the application may drop the rendering of the predesignated frame. In some implementations, the client device can identify the bit stream corresponding to predesignated frame. The bit stream may have been encrypted by the data processing system. Using the identified bit stream, the client device can invoke the trusted platform module to decrypt or otherwise recover the bit stream corresponding to the predesignated frame to generate another bit stream using various decryption techniques (e.g., Diffie-Hellman key exchange, RSA, cryptographic hash, etc.). In some implementations, the client device can identify the predesignated frame (e.g., using a frame sequence number). The client device can then invoke the trusted platform module to decrypt the bit stream corresponding to the predesignated frame by identifying the predesignated frame. The decoded bit stream may be part of the binary sequence used by the application to process the video content element for rendering on the I/O interface had the rendering property of the predesignated frame been set to true. In this manner, the client device can verify the rendering of the video content element without actually rendering the predesignated frame at the client device.

With the bit stream of the predesignated frame decoded, the client device can generate a tracking message for transmission to the data processing system. The tracking message may include information identifying the predesignated frame. The tracking message may also include the device identifier corresponding to the client device. The tracking message may also include the identifier or address corresponding to the video content element. The tracking message may include the decoded bit stream corresponding to the predesignated frame. In some implementations, the tracking message may include the decoded bit stream corresponding to the subset portion of the predesignated frame. Once generated, the client device can transmit the tracking message to the data processing system.

In some implementations, prior to transmission of the tracking message, the client device can invoke the trusted platform module to encrypt the decoded bit stream corresponding to the predesignated frame or the subset portion of the predesignated frame. The trusted platform module may encrypt, authenticate, or otherwise sign the decoded bit stream using an encryption key (e.g., a public key provided by the data processing system). The encryption key may have been received with the video content element or the designation indicator for the predesignated frame. The client device can include or insert the encrypted decoded bit stream into the tracking message. In some implementations, the client device can insert or include the encryption key used to encrypt, authenticate, or otherwise sign the decoded bit stream into the tracking message.

The client device can invoke the trusted platform module to generate a combination value using the information included in the tracking message (e.g., the frame identifier, the video content identifier, device identifier, time stamp, and/or decoded bit stream corresponding to the predesignated frame, etc.). In some implementations, the combination value may be a keyed-hash message authentication code (HMAC) generated based on the information included in the tracking message and an encryption key (e.g., a secret hash key). In some implementations, the client device can include or insert the encryption key used to generate the combination value (e.g., HMAC) into the tracking message. In some implementations, the encryption key included in the tracking message may differ from the one used to generate the combination value (e.g., with extra padded zeroes).

The client device can then transmit the tracking message with the encrypted decoded bit stream to the data processing system. The decoded bit stream for the predesignated frame or the subset portion thereof may be hidden from devices connected to the network that intend to create fraudulent tracking events to boost a view count for the video content element, thus resulting in a more accurate count of the number of times the video content element was in fact rendered and displayed at the client device.

Upon receipt of the tracking message, the data processing system can compare the bit stream included in the tracking message with the bit stream identified at the data processing system. Both the bit streams included in the tracking message and stored on the database may correspond to the predesignated frame or the subset portion of the predesignated frame. In some implementations, data processing system can access the database to identify the bit stream corresponding to the predesignated frame or the subset portion of the predesignated frame using the identifier for the video content element included in the tracking message. In some implementations, responsive to receiving the tracking message for the video content element, the data processing system can identify or otherwise calculate the bit stream corresponding to the predesignated frame or the subset portion of the predesignated frame. In some implementations, prior to the comparison, the data processing system can decrypt the bit stream in the tracking message using the encryption key included in the tracking message. In some implementations, prior to the comparison, the data processing system can decrypt the bit stream in the tracking message using another encryption key (e.g., a private key in a public key cryptography scheme). In some implementations, the data processing system can decrypt the combination value included in the tracking message using the encryption key used to generate the combination value. Receipt of the tracking message by the data processing system may cause the data processing system to perform the remaining functionalities of method300ofFIG. 3.

Returning toFIG. 3, the video content element may have a first bit stream corresponding to a predesignated frame. The data processing system can compare a second bit stream included in a tracking message from a client device with a third bit stream maintained at a database for the video content element (BLOCK310). Upon receipt of the tracking message, the data processing system can compare the bit stream included in the tracking message with the bit stream identified at the data processing system. Both the bit streams included in the tracking message and stored on the database may correspond to the predesignated frame or the subset portion of the predesignated frame. In some implementations, the data processing system can access the database to identify the bit stream corresponding to the predesignated frame or the subset portion of the predesignated frame using the identifier for the video content element included in the tracking message. In some implementations, responsive to receiving the tracking message for the video content element, the data processing system can identify or otherwise calculate the bit stream corresponding to the predesignated frame or the subset portion of the predesignated frame. In some implementations, prior to the comparison, the data processing system can decrypt the bit stream in the tracking message using another encryption key (e.g., a private key in a public key cryptography scheme).

The data processing system can determine that the video content element is rendered at the client device, responsive to the second bit stream from the client device matching the third bit stream maintained at the database (BLOCK320). If the bit stream included in the tracking message matches the bit stream identified at the data processing system, the data processing system can determine or otherwise verify that the video content element is rendered at the client device. The data processing system can identify the device identifier in the tracking message. The data processing system can access the database to search for the device identifier. The database can include a list of device identifiers as having received the video content element. The data processing system can determine whether the device identifier in the tracking message is included in the database. The data processing system can identify the video content identifier in the tracking message. The data processing system can identify access the database to search for the video identifier. The data processing system can find a match between the video content identifier with one included in the database. The data processing system can access the database using the frame identifier and the video content identifier. The data processing system can determine whether the frame identifier and the video content identifier match any of those stored at the database. The data processing system can identify the time stamp included in the message. The data processing system can access the database to search for time stamps of when the video content element was transmitted via the network. If the time stamp is within any of those in the database within a predetermined margin, the data processing system can identify the time stamp included in the tracking message as matching one in the database. The data processing system can identify the frame identifier included in the tracking message.

If any one or more the information included in the tracking message matches information stored in the database in addition to the bit stream included in the tracking message matching the bit stream identified at the database processing system, the data processing system can make a record that the video content element has been rendered at the client device. The record may be stored at the database to check at a later time whether and/or when a particular video content element was rendered at a particular client device. In some implementations, the data processing system can update a view count for the video content element. Responsive to determining that the video content element is rendered at the client device and finding the device identifier of the tracking message in the database, the data processing system can also update a view count for the video content element. In some implementations, the data processing system may maintain a counter at the database to keep track of the view count for the video content element. In some implementations, responsive to bit stream included in the tracking message matching the bit stream identified at the data processing system, the data processing system can increment the counter for the view count for the video content element. On the other hand, if the bit stream included in the tracking message does not match the bit stream identified at the data processing system, the data processing system can determine that the video content element was not properly rendered at the client device and the data processing system can maintain the view count for the video content element at the previous value. In some implementations, the data processing system can alert a network administrator of a potential malicious third-party device attempting to fake tracking events to falsify the record of whether the video content element was rendered at a client device to boost the view count of the video content element.

Given that the video content element including the predesignated frame is encrypted described herein, other devices connected to the database (e.g., malicious third parties) may have difficulty repeatedly mimicking the tracking message, thereby preventing fraudulent tracking events. In this manner, the data processing system may increase the accuracy of the view count of the video content element. Furthermore, rendering and display of the video content element at the client device may be verified.

FIGS. 5A and 5Bare a flow diagram depicting a method500of verifying the rendering of video content on information resources, according to an illustrative implementation. The functionality described herein with respect to method500can be performed or otherwise executed by the data processing system110and the client device125as shown inFIG. 1, or a computing device as shown inFIG. 6, or any combination thereof. In overview, starting fromFIG. 5A, the client device can transmit a request for a video content element. (BLOCK502). The data processing system can receive the request for the video content element (BLOCK504). The data processing system can retrieve the requested video content element (BLOCK506). The data processing system can select a policy for verifying the rendering of the video content element (BLOCK508).

If mode A, the data processing system can identify a computational complexity of each frame in the video content element (BLOCK510). The data processing system can select a frame from the video content element corresponding to the highest computational complexity as the predesignated frame (BLOCK512). The data processing system can identify a portion of the predesignated frame (BLOCK514). The data processing system can calculate a bit stream for the identified portion of the predesignated (BLOCK516). If mode B, the data processing system can generate a predesignated frame (BLOCK518). The data processing system can insert the predesignated frame into the video content element (BLOCK520). The data processing system can calculate the bit stream for the predesignated frame inserted into the video content element (BLOCK522). Subsequently, the data processing system can store the calculated bit stream for the predesignated frame or the portion of the predesignated frame of the video content element (BLOCK524). The data processing system can transmit the video content element with the predesignated frame to the client device (BLOCK526). The client device can receive the video content element (BLOCK528).

Moving toFIG. 5B, the client device can process a frame of the video content element (BLOCK530). The client device can determine whether the current frame is the predesignated frame (BLOCK532). If the current frame is not the predesignated frame, the client device can render the current frame for display (BLOCK534). If the current frame is the predesignated frame, the client device can identify a policy for verifying the rendering of the video content element (BLOCK536). If mode1, the client device can render the predesignated frame for display (BLOCK538). The client device can identify the portion of the predesignated frame (BLOCK540). The client device can identify and encode the bit stream of the portion of the predesignated frame with an encryption key (BLOCK542). If mode B, the client device can identify the encoded bit stream of the predesignated frame with the encryption key (BLOCK544). The client device can generate a tracking message with the encoded bit stream (BLOCK546). The client device can transmit the tracking message to the data processing system (BLOCK548). The client device can proceed to determine whether there are more frames in the video content element (BLOCK550). If there is another video content element, the client device can identify the next frame (BLOCK552) and can repeat the functionality of BLOCK530. If there are no more frames, the client device can terminate method500.

Continuing on, the data processing system can receive the tracking message (BLOCK554). The data processing system can decode the bit stream in the tracking message with another encryption key (BLOCK556). The data processing system can determine whether the bit stream from the tracking message matches the bit stream stored in the database (BLOCK558). If the bit streams match, the data processing system can identify the video content element as rendered at the client device (BLOCK560). The data processing system can increment the view count for the video content element (BLOCK562). In either case, the data processing system can subsequently terminate method500.

FIG. 6shows the general architecture of an illustrative computer system600that may be employed to implement any of the computer systems discussed herein (including the data processing system110and its components, such as the content deliverer130, the policy manager135, the bitstream comparator140, and the render verifier145, and the client device125and its components, such as the application180, the frame verifier190, and the message192) in accordance with some implementations. The computer system600can be used to provide information via the network105for display. The computer system600ofFIG. 6comprises one or more processors620communicatively coupled to memory625, one or more communications interfaces605, and one or more output devices610(e.g., one or more display units) and one or more input devices615. The processors620can be included in the data processing system110or the other components of the data processing system110such as the content deliverer130, the policy manager135, the bitstream comparator140, and the render verifier145. The processors can be included in the client device125, such as the application180, the frame verifier190, and the message generator192.

In the computer system600ofFIG. 6, the memory625may comprise any computer-readable storage media, and may store computer instructions such as processor-executable instructions for implementing the various functionalities described herein for respective systems, as well as any data relating thereto, generated thereby, or received via the communications interface(s) or input device(s) (if present). Referring again to the system100ofFIG. 1, the data processing system110can include the memory625to store information related to the availability of inventory of one or more content units, reservations of one or more content units, among others. The memory625can include the database150. The processor(s)620shown inFIG. 6may be used to execute instructions stored in the memory625and, in so doing, also may read from or write to the memory various information processed and or generated pursuant to execution of the instructions.

The processor620of the computer system600shown inFIG. 6also may be communicatively coupled to or made to control the communications interface(s)605to transmit or receive various information pursuant to execution of instructions. For example, the communications interface(s)605may be coupled to a wired or wireless network, bus, or other communication means and may therefore allow the computer system600to transmit information to or receive information from other devices (e.g., other computer systems). While not shown explicitly in the system ofFIG. 1orFIG. 6, one or more communications interfaces facilitate information flow between the components of the system600. In some implementations, the communications interface(s) may be configured (e.g., via various hardware components or software components) to provide a website as an access portal to at least some aspects of the computer system600. Examples of communications interfaces605include user interfaces (e.g., webpages), through which the user can communicate with the data processing system110.

The output devices610of the computer system600shown inFIG. 6may be provided, for example, to allow various information to be viewed or otherwise perceived in connection with execution of the instructions. The input device(s)515may be provided, for example, to allow a user to make manual adjustments, make selections, enter data, or interact in any of a variety of manners with the processor during execution of the instructions. Additional information relating to a general computer system architecture that may be employed for various systems discussed herein is provided further herein.

The features disclosed herein may be implemented on a smart television module (or connected television module, hybrid television module, etc.), which may include a processing module configured to integrate internet connectivity with more traditional television programming sources (e.g., received via cable, satellite, over-the-air, or other signals). The smart television module may be physically incorporated into a television set or may include a separate device such as a set-top box, Blu-ray or other digital media player, game console, hotel television system, or other companion device. A smart television module may be configured to allow viewers to search and find videos, movies, photos and other content on the web, on a local cable TV channel, on a satellite TV channel, or stored on a local hard drive. A set-top box (STB) or set-top unit (STU) may include an information appliance device that may contain a tuner and connect to a television set and an external source of signal, turning the signal into content which is then displayed on the television screen or other display device. A smart television module may be configured to provide a home screen or top level screen including icons for a plurality of different applications, such as a web browser and a plurality of streaming media services, a connected cable or satellite media source, other web “channels”, etc. The smart television module may further be configured to provide an electronic programming guide to the user. A companion application to the smart television module may be operable on a mobile computing device to provide additional information about available programs to a user, to allow the user to control the smart television module, etc. In some implementations, the features may be implemented on a laptop computer or other personal computer, a smartphone, other mobile phone, handheld computer, a tablet PC, or other computing device. In some implementations, the features disclosed herein may be implemented on a wearable device or component (e.g., smart watch) which may include a processing module configured to integrate internet connectivity (e.g., with another computing device or the network105).

The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or on data received from other sources.

Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results.

In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products. The content deliverer130, policy manager135, bitstream comparator140, and the render verifier145can be part of the data processing system110, a single module, a logic device having one or more processing modules, one or more servers, or part of a search engine. In addition, the application180, frame verifier190, and the message generator192can include or can be part of the client device125, a single module, or a logic device having one or more processing module. The content deliverer130, the policy manager135, the bitstream comparator140, and the render verifier145can include or share one or more data processing apparatuses, computing devices, or processors, and be part of the data processing system110, a single module, or a logic device having one or more processing module.