The present invention relates generally to data analytics, and in particular, to selecting digital media assets based on category transitions.
The proliferation of digital content such as video, photographical, audio, textual, etc., made available to online consumers has exploded. Digital content providers have attempted to predict how users will consume digital content and, further, which digital content will be consumed by a particular user. Correlations between user interests and user consumption have been used to attempt to predict what digital content the user will be interested in consuming. Other correlations between similar users or groups of users have also been used to attempt to make such predictions. Most approaches have been focused on the user’s interests and have not shown much success.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are not described in exhaustive detail, in order to avoid unnecessarily occluding, obscuring, or obfuscating the present invention.
Example embodiments are described herein according to the following outline:
This overview presents a basic description of some aspects of a possible embodiment of the present invention. It should be noted that this overview is not an extensive or exhaustive summary of aspects of the possible embodiment. Moreover, it should be noted that this overview is not intended to be understood as identifying any particularly significant aspects or elements of the possible embodiment, nor as delineating any scope of the possible embodiment in particular, nor the invention in general. This overview merely presents some concepts that relate to the example possible embodiment in a condensed and simplified format and should be understood as merely a conceptual prelude to a more detailed description of example possible embodiments that follows below.
In an embodiment, assets in an asset portfolio are organized in a hierarchical taxonomy having category groups and sub groups. The hierarchical taxonomy of categories may be translated to a directed graph of nodes, or a tree, in which directed arcs are weighted based on the directionality of traversal. Similarity between two disparate categories is measured by the accumulated distance, or traversal path in the graph, from the starting category node to the terminal category node. In an embodiment, traversal down one level in the tree is weighted less than traversal up one level in the tree. The computed similarity metrics between pairs of nodes using taxonomy tree traversal are used by a recommendation engine in determining a set of recommended assets to present to a viewing user. The set of recommended assets is presented to users for consumption which is further monitored for accuracy.
In addition to the computed similarity metrics based on taxonomy tree traversal, a recommendation engine may analyze observed data from data consumption history of users in determining a recommended set of assets. For example, an aggregate data analysis of historical consumption may indicate a high success of completed views in transitions from a “sports” category to a “news” category of assets. This observed data metric of category transition history between pairs of nodes in the taxonomy tree may be used in conjunction with the similarity metric in a weighted linear combination to determine recommendation scores for the pairs of nodes in the taxonomy tree.
Thirdly, a randomized data value may be added to the weighted linear combination of the similarity metric and the observed historical data metric, in an embodiment, to encourage serendipity. Various stochastic methods may be used to generate the randomized data value, and the randomized data value may be weighted by administrators of the asset portfolio.
Other embodiments include, without limitation, a non-transitory computer-readable medium that includes processor-executable instructions that enable a processing unit to implement one or more aspects of the disclosed methods as well as a system configured to implement one or more aspects of the disclosed methods. Various modifications to the preferred embodiments and the generic principles and features described herein will be readily apparent to those skilled in the art. Thus, the disclosure is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features described herein.
System 100 may include one or more consumption devices 116, an asset portfolio manager 120, an asset store 102, and a content provider 104. An asset portfolio manager 120 may be implemented by a computing system. Consumption device 116 may be operated by one or more users (not illustrated), such as a person viewing (e.g., consuming) digital media assets in a playlist on a mobile device. Consumption data 118 is provided from the consumption device 116 to an asset portfolio manager 120, in an embodiment. A recommendation engine 106 operating within the asset portfolio manager 120 may use a weighted linear combination of aggregated transition data 108, category taxonomy data 122, and a randomized data value 128 to score each pair of nodes, or categories, in a category taxonomy tree. Based on the scores, the recommendation engine 106 determines recommended asset set information 114 to send to the content provider 104 that may include the actual assets for each set or pointers to the assets stored in the asset store 102. As a result, one or more recommended sets of ordered digital media assets 112 are presented to the consumption device 116. The techniques described above may repeat, in an embodiment, such that consumption data 118 is provided from the consumption device 116 from the presentation of the sets of ordered assets 112 to an asset portfolio manager 120, in an embodiment. Consumption includes views, completed views, bounces, thumbs up or down action, and other user-generated feedback and/or content.
Consumption device 116 may include an interface, such as a physical interface, a graphical interface (e.g., a graphical user interface), or a combination thereof. A graphical interface may be generated by consumption device 116, received from an asset portfolio manager 120, a content provider 104, or a combination thereof. For example, the consumption device 116 may include an operating system and a web browser application on the operating system connected to the Internet. The web browser includes functionality to consume digital media assets provided by the content provider 104, such as a video streaming website or a music subscription service, for example. Additionally, an asset portfolio manager 104 may be integrated into a content provider 104 such that a playlist of recommended digital media assets 112 is presented in the graphical interface. The graphical interface may be updated or modified by consumption device 116, content provider 104, or asset portfolio manager 120 in response to interaction with the interface.
An asset portfolio manager 120 may include a transition data store 110, a category taxonomy data store 124, and a randomized data generator 126, in an embodiment. A transition data store 110 may include aggregated consumption data 118 between transitions of categories from a first viewed asset to a last viewed asset. A category taxonomy data store 124 includes a normalized similarity metric for all pairs of nodes in a given category taxonomy tree, or hierarchical directed graph, in an embodiment. A randomized data generator 126 uses various stochastic methods and / or models to generate a randomized data value for each pair of nodes in the category taxonomy data store 124.
In the category taxonomy tree 130 of “home ideas,” the “branded content campaign” asset group node 134 may include a branded content node such as a “ritzcarlton” node 136 to represent branded content assets associated with a RITZ-CARLTON brand. Further, a “constraints” asset group node 140 may be a placeholder node for sub-groups that are constrained in some way. For example, “constraints” may allow traversal into the sub-groupings under the “constraints” asset group node 140, such as a “1-3 min” node 142, a “4-6 min” node 144, and a “7-10 min” node 146, which corresponds to the length of the digital media clip. However, the directed graph may not allow traversal outside of the “constraints” sub-group. The directionality and traversal cost may be managed by administrators of the category taxonomy tree, in an embodiment. To prohibit traversal in a certain direction, weights in that direction may be artificially added to cause the traversal cost to become infinite, as an example.
Categories of assets are structured in a taxonomy tree as depicted in
Over time, consumption data may be aggregated to track how successful a category transition was based on views completed over number of views. For example, over the past seven days, thirty-one views happened when a category transition between two nodes occurred, meaning that the viewing user selected to view the recommended digital asset. This category history transition data is stored in the transition data store 110. Data stored in the transition data store 110 may be weighted by a decay function that assigns less weight to data received after a certain time period, such as seven days. This time period may be adjusted manually by administrators of the asset portfolio manager 120, in an embodiment. The transition data may comprise another portion of the composite score used by the recommendation engine to rank candidate assets for presentation to a viewing user.
A third component of the composite score may include an element of randomness to ensure that potential new connections between categories may be explored. For example, through experimentation using randomness data values, a close connection between the RITZ-CARLTON brand and gardening may be discovered. This may be due to viewers looking at gardening digital media assets having a different disposition than viewers looking at another category in the taxonomy, such as bathroom. By including a randomness value to the composite score, the asset portfolio manager 120 may learn new category transitions that have a high success rate of view completion.
Accordingly, embodiments are capable of recommending sets of digital media assets based on a weighted linear combination of category taxonomy similarity, historical category transitions, and randomness. Weights may be further determined by a recommendation engine 106 using machine learning techniques, administrator-determined weights, an aggregate of observed data between a pair of nodes in the category transition tree, and/or a combination thereof. Thus, embodiments provide a deeper understanding of connections between categories of assets, or nodes and the directed arc weights between them, and combined with historical category transition data and a randomized data value, the asset portfolio manager 120 generates a set of recommended assets that are likely going to be viewed by the consumption device 116. This is different from user-based interest recommendation engines because the data being tracked here is category transitions. Accordingly, the deeper understanding of connections between nodes illustrating category transitions provides, in aggregate and anonymized data, information that may better predict consumption of digital media assets. As such, embodiments provide better recommendations of digital media assets, greater user engagement, and deeper understanding of viewing user behavior based on category transitions.
Content sources 208 may exist separately from an asset store 102, in an embodiment. For example, content sources 208 may include a paid subscription service streaming video content made accessible to the user through the application 206 on the consumption device 116. The asset store 102 may include links or pointers to the streaming video content, a type of digital media asset, stored at a content source 208. As another example, content sources 208 may include a freemium audio streaming service that provides music and/or other audio content through a website. Content sources 208 may include any repositories and/or content providers 104 that distribute digital media assets through one or more networks 210, such as the Internet.
Consumption device 116 and asset portfolio manager 120 may be communicatively connected via one or more communication networks 210. Examples of communication networks include, without restriction, the Internet, a wide area network (WAN), a local area network (LAN), an Ethernet network, a public or private network, a wired network, a wireless network, and the like, and combinations thereof. Different communication protocols may be used to facilitate the communications including both wired and wireless protocols, such as IEEE 802.XX suite of protocols, TCP/IP, IPX, SAN, AppleTalk, Bluetooth®, and other protocols.
Asset portfolio manager 120 may be implemented using a computer system, which may comprise one or more computers and/or servers which may be general purpose computers, specialized server computers (including, by way of example, PC servers, UNIX servers, mid-range servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, distributed servers, or any other appropriate arrangement and/or combination thereof. The computing system that makes up asset portfolio manager 120 may run any of a number of operating systems or a variety of additional server applications and/or mid-tier applications, such as HTTP servers, FTP servers, CGI servers, Java servers, database servers, and the like. Exemplary database servers include without limitation those commercially available from MONGODB, CASSANDRA, and the like. In one example, asset portfolio manager 120 may include a Iris.tv™ product or service, such as Asset IQ™ which provides automated data structuring of assets, Adaptive Stream™ which provides video personalization to surface relevant assets that continue engagement with viewing users, IRIS Vision™ which includes business intelligence and programming management functionality, and Campaign Manager™ which provides management of branded content and other prioritized or sponsored content. In various embodiments, asset portfolio manager 120 may be configured to run one or more services or software applications described in the foregoing disclosure. For example, asset portfolio manager 120 may correspond to a computing system for performing processing as described herein according to an embodiment of the present disclosure.
In some embodiments, asset portfolio manager 120 may be implemented as an enterprise computing system or a cloud computing system comprising one or more computers and/or servers that may include those described above. Asset portfolio manager 120 may include several subsystems and/or modules, including some, which may not be shown. For example, asset portfolio manager 120 may include a communications interface 212, an action logger 214, a recommendation engine 106, a transition data analyzer 224, a taxonomy traversal analyzer 216, a transition data store 110, a randomized data generator 126, a weighted score generator 218, and a category taxonomy data store 124. Asset portfolio manager 120 may have more or fewer subsystems and/or modules than shown in the figure, may combine two or more subsystems and/or modules, or may have a different configuration or arrangement of subsystems and/or modules. Subsystems and modules of asset portfolio manager 120 may be implemented in software (e.g., program code, instructions executable by a processor), firmware, hardware, or combinations thereof. In some embodiments, the software may be stored in a memory (e.g., a non-transitory computer-readable medium), on a memory device, or some other physical memory and may be executed by one or more processing units (e.g., one or more processors, one or more processor cores, one or more GPUs, etc.).
In certain embodiments, asset portfolio manager 120 may also provide other services or software applications that can include non-virtual and virtual environments. In some embodiments, these services may be offered as web-based or cloud services or under a Software as a Service (SaaS) model to the users of consumption device 116. The services offered by asset portfolio manager 120 may include application services. Application services may be provided by asset portfolio manager 120 via a SaaS platform. The SaaS platform may be configured to provide services that fall under the SaaS category. The SaaS platform may manage and control the underlying software and infrastructure for providing the SaaS services. By utilizing the services provided by the SaaS platform, customers can utilize applications executing in asset portfolio manager 120, which may be implemented as a cloud infrastructure system. Users can acquire the application services without the need for customers to purchase separate licenses and support. Various different SaaS services may be provided. Users operating consumption device 116 may in turn utilize one or more applications to interact with asset portfolio manager 120 to utilize the services provided by subsystems and/or modules of asset portfolio manager 120.
Asset portfolio manager 120 may include at least one memory, one or more processing units (or processor(s)), and storage. The processing unit(s) may be implemented as appropriate in hardware, computer-executable instructions, firmware, or combinations thereof. Computer-executable instructions or firmware implementations of the processing unit(s) may include computer-executable or machine-executable instructions written in any suitable programming language to perform the various operations, functions, methods, and/or processes described herein. The memory in asset portfolio manager 120 may store program instructions that are loadable and executable on the processing unit(s), as well as data generated during the execution of these programs. The memory may be volatile (such as random access memory (RAM)) and/or non-volatile (such as read-only memory (ROM), flash memory, etc.). The memory may be implemented using any type of persistent storage device, such as computer readable storage media. In some embodiments, computer-readable storage media may be configured to protect a computer from an electronic communication containing malicious code. The computer-readable storage media may include instructions stored thereon, that when executed on a processor, perform the operations described herein.
System 200 may also include or be coupled to one or more data sources, which may be implemented using any type of persistent storage device, such as a memory storage device or other non-transitory computer readable storage medium. In some embodiments, local storage may include or implement one or more databases (e.g., a document database, a relational database, or other type of database), one or more file stores, one or more file systems, or combinations thereof. For example, system 200 may be coupled to or may include one or more content sources 208 or data repositories such as an asset store 102. The asset store 102 may be accessed through a third party, in an embodiment. Examples of repository systems include, without limitation, GitHub® and Apache Subversion® (SVN). The memory and the additional storage are all examples of computer-readable storage media. For example, computer-readable storage media may include volatile or non-volatile, removable or non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. The data sources may be accessible by asset portfolio manager 120 using network 210.
System 200 may also include or be coupled to additional storage, which may be implemented using any type of persistent storage device, such as a memory storage device or other non-transitory computer readable storage medium. In some embodiments, local storage may include or implement one or more databases (e.g., a content database, a relational database, an unstructured database, or other type of database), one or more file stores, one or more file systems, or combinations thereof. For example, system 200 may be coupled to or may include one or more data stores. Data stores may be included in or accessible by an asset portfolio manager 120. The memory and the additional storage are all examples of computer-readable storage media. For example, computer-readable storage media may include volatile or non-volatile, removable or non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. The asset store 102 may be a network-accessible store accessible by asset portfolio manager 120 using network 210.
The asset portfolio manager 120 may include other functionality described in related applications, including “Presentation of Digital Media Assets Based on Assessed Value,” U.S. Published Patent Application No. 2019/0043114, filed on Aug. 4, 2018 and “Digital Content Curation and Distribution System and Method,” U.S. Pat. 8,635,220, filed on Apr. 20, 2012, both hereby incorporated by reference.
A communications interface 212 enables data to be exchanged with the asset portfolio manager 120 via the network 210, in an embodiment. For example, the asset portfolio manager 120 may communicate data with a content provider 104 through an application programming interface (API) 222 and the communications interface 212. As another example, information including a set of recommended assets may be shared with the content provider 104 through another API. Further, consumption data 118, as illustrated in
A taxonomy traversal analyzer 216 determines a traversal cost score between two nodes of a category taxonomy tree. As described above, once a category taxonomy tree is generated for an asset portfolio, the taxonomy traversal analyzer 216 generates a traversal cost for every pair of nodes in the category taxonomy tree. The traversal costs for the pairs of nodes in the category tree may be normalized using the longest path between two nodes, in one embodiment, to generate a similarity metric based on the category taxonomy tree. The similarity metric between two nodes in the category taxonomy tree is a real number between zero and one, and the similarity metric is one if the first viewed category node is the same as the last viewed category node. In one embodiment, a drift radius may be implemented to limit recommendations to pairs having a distance of less than a pre-determined threshold. The term “drift” refers to the movement from the initial category to a different category. This type of data pruning enables better recommendations that allow for less drift away from the initial category. The traversal cost may be stored in a category taxonomy data store 124, in one embodiment.
A category taxonomy data store 124 stores a known hierarchical taxonomy that describes an asset portfolio as a category tree of nodes. The list of nodes may be stored in the category taxonomy data store 124 and may include an associated asset group identifier, a customer identifier, a node name, a node type, and a computed depth characteristic, in one embodiment.
A recommendation engine 106 generates a set of recommended assets for presentation to a viewing user operating a consumption device 116. The set of recommended assets is generated using a weighted linear combination of metrics, including the similarity metric based on the category taxonomy tree described above, as well as a category transition history metric generated by the transition data analyzer 224 and a randomized data value generated by the randomized generator 126. In one embodiment, the weights in the linear combination are determined by a weighted score generator 218. In another embodiment, the weights are determined by administrators of the asset portfolio manager 120.
An action logger 214 stores actions taken by a consumption device 116 after presentation of the set of recommended assets, in an embodiment. The consumption device 116 operated by a viewing user may select one of the set of recommended assets to view, causing the asset to play on the consumption device 116. Upon completion of viewing the asset, such as a video, audio, or other digital media file, the consumption device 116 can indicate that a view has been completed (e.g., view complete). Other actions that may be logged include a selection of a thumbs up or a thumbs down, indicating user feedback on the viewed asset. Additionally, further actions may include a bounce (e.g., the user leaving the web site or closing the session), a skip (e.g., the user skipping to the next digital media asset in the playlist), or a hop (e.g., the user selects a different digital media asset in the ordered set or playlist). The action logger 214 stores the action taken associated with a category transition in the transition data store 110.
A transition data analyzer 224 receives data associated with category transitions based on the consumption of assets recommended to consumption devices 116 in the system 200. The transition data is aggregated for each pair of nodes in the category taxonomy tree for each customer of the asset portfolio manager 120, in one embodiment. The aggregated transition data is stored in the transition data store 110, in an embodiment. Other information may be determined based on the aggregated transition data, such as a success rate for completed views of a pair of category nodes. For example, suppose that there were 31 views of assets associated with a category transition from “gardening” to “plumbing” in the example category transition tree described above with respect to
A randomized data generator 126 uses known techniques to generate randomized data values for the pairs of category nodes in the transition data store 110 and/or category taxonomy data store 124. The randomized data value generated by the randomized data generator 126 may be used as part of a composite score to rank the pairs of category nodes by the recommendation engine 106.
A weighted score generator 218 determines a weighted composite score to rank the pairs of category nodes in the category transition tree associated with an asset portfolio, in an embodiment. Weights are associated with the components that form the composite score in a linear combination. The optimal value of the weight can be determined in different ways. In one embodiment, machine learning may be used to determine the optimal value of a weight that places a higher value on observed data from category transitions, as aggregated by the transition data analyzer 224, versus the taxonomy traversal data analyzed by the taxonomy traversal analyzer 216. Machine learning may be used to determine the weight using the success rate of category transitions. In another embodiment, weights may be explicitly set by administrators of the asset portfolio manager 120 for each customer. In a further embodiment, the weight may be based on data at the transition level, meaning that as more data is gathered for transitions, the more weight is assigned to that component of the composite score. The weighted score generator 218 uses the weight to compute a composite score for the transitions between the pairs of nodes in the category taxonomy tree in response to a query, in one embodiment. In this way, the weighted score generator 218 relies on the most recent category transition data in the transition store 110 because, in one embodiment, twenty-one days of history are used and weighted based on their age in days using a degrade function when using category transition data in the transition data store 110. For example, upon request for a recommended asset, the weighted score generator 218 may execute a query to compute composite scores of pairs of category nodes. The composite scores may then be used by the recommendation engine 106 to determine a set of recommended assets for consumption by the consumption device 116.
Business criteria may be inputted by administrators of the asset portfolio manager 120, through a user interface in an application 206 operating on a consumption device 116, through an application program interface 222 on a content provider 104, or through an application connected to the asset portfolio manager 120 through the communications interface 212, in various embodiments. Such business criteria may include explicit setting of a weight for a particular customer and creation of a drift radius to set a lower bound on allowable data-driven drift to be included in the composite score. The drift radius may be set at a customer level or an asset group level, in an embodiment.
Additional business criteria may include “constraints” asset groups in which administrators may specify where no path exists from a constrained category to a non-constrained category, a path does exist among the constrained categories such that it is possible to move from one constrained category to another, and a path exists from every non-constrained category to a constrained category. As described above with respect to
In block 304, the asset portfolio manager 120 (e.g., 120 of
In block 306, a traversal cost for each pair of nodes in the hierarchy of nodes in the directed graph is determined by the taxonomy traversal analyzer 216 (e.g., 216 of
In block 308, each traversal cost is normalized to generate a traversal data value for each pair of nodes. For example, to generate a traversal data value between zero and one, each traversal cost between each pair of nodes may be divided by the longest traversal cost in the category taxonomy by the taxonomy traversal analyzer 216.
In block 310, the traversal data value for each pair of nodes is stored in a database by the taxonomy traversal analyzer 216. The database may be a category taxonomy data store 124, in one embodiment, that is indexed by the pairs of nodes, or each category transition between the two categories represented by each pair of nodes.
In block 404, a category of the first viewed asset is determined by the asset portfolio manager 120. The category of the first viewed asset may be determined from the asset store 102, in an embodiment. In another embodiment, the category of the first viewed asset is determined from the received request.
In block 406, a set of recommended assets ranked by a composite score based on category taxonomy, observed transition history, and a randomness factor is generated by the recommendation engine 106 of the asset portfolio manager 120. A composite score may be weighted such that one or more of a taxonomy traversal data value, a historical category transition data value, or a randomized data value is used in linear combination. The composite scores may be computed, in part, by executing a query of the category taxonomy data store 124 and/or the transition data store 110. Additionally, the randomness factor may be computed and/or generated by the randomized data generator 126. The weighted score generator 218 may generate the composite scores, in an embodiment, that are used to generate the set of recommended assets by the recommendation engine 106. In an embodiment, the set of recommended assets are assembled as a list of pointers to the actual files (e.g., .MOV, .MP4, .GIF, etc.) stored on a content delivery network (CDN) file server. For video files, a computer file format for a multimedia playlist, such as Moving Picture Experts Group Audio Layer 3 (M3U) Uniform Resource Locator, may be used.
In block 408, responsive to the request, at least one of the set of recommended assets is caused to be presented at a user device, such as consumption device 116, by the asset portfolio manager 120. The presentation of at least one of the set of recommended assets may be in the form of a graphical image, presentation of the digital media asset, and/or a text response on a graphical interface provided by the communications interface 212, or an application event executing on an application 206 operating on a consumption device 116 communicated through an application programming interface (API) as provided by the communications interface 212, causing the recommended asset to be played via the content provider 104 or other content sources 208 via the network(s) 210, in various embodiments. Assets are retrieved when the user device gathers a list of metadata associated with each asset from the CDN file server. Metadata fields include, for example, file_id (image), file_id (asset) title, image file address (thumbnail), and/or asset file address. The user device requests files that are delivered by the CDN file server, based on the metadata file addresses, back to the user device. For some file types, the file is partitioned, or chopped up, into smaller packets by the CDN file server and reassembled at the user device for consumption.
In some embodiments, process flows involving operations, methods, etc., as described herein can be performed through one or more computing devices or units.
In an embodiment, an apparatus comprises a processor and is configured to perform any of these operations, methods, process flows, etc.
In an embodiment, a non-transitory computer readable storage medium, storing software instructions, which when executed by one or more processors cause performance of any of these operations, methods, process flows, etc.
In an embodiment, a computing device comprising one or more processors and one or more storage media storing a set of instructions which, when executed by the one or more processors, cause performance of any of these operations, methods, process flows, etc. Note that, although separate embodiments are discussed herein, any combination of embodiments and/or partial embodiments discussed herein may be combined to form further embodiments.
According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.
For example,
Computer system 500 also includes a main memory 506, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 502 for storing information and instructions to be executed by processor 504. Main memory 506 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 504. Such instructions, when stored in non-transitory storage media accessible to processor 504, render computer system 500 into a special-purpose machine that is device-specific to perform the operations specified in the instructions.
Computer system 500 further includes a read only memory (ROM) 508 or other static storage device coupled to bus 502 for storing static information and instructions for processor 504. A storage device 510, such as a magnetic disk or optical disk, is provided and coupled to bus 502 for storing information and instructions.
Computer system 500 may be coupled via bus 502 to a display 512, such as a liquid crystal display (LCD), for displaying information to a computer user. An input device 514, including alphanumeric and other keys, is coupled to bus 502 for communicating information and command selections to processor 504. Another type of user input device is cursor control 516, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 504 and for controlling cursor movement on display 512. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
Computer system 500 may implement the techniques described herein using device-specific hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 500 to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system 500 in response to processor 504 executing one or more sequences of one or more instructions contained in main memory 506. Such instructions may be read into main memory 506 from another storage medium, such as storage device 510. Execution of the sequences of instructions contained in main memory 506 causes processor 504 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.
The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operation in a specific fashion. Such storage media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 510. Volatile media includes dynamic memory, such as main memory 506. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.
Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 502. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 504 for execution. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 500 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 502. Bus 502 carries the data to main memory 506, from which processor 504 retrieves and executes the instructions. The instructions received by main memory 506 may optionally be stored on storage device 510 either before or after execution by processor 504.
Computer system 500 also includes a communication interface 518 coupled to bus 502. Communication interface 518 provides a two-way data communication coupling to a network link 520 that is connected to a local network 522. For example, communication interface 518 may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 518 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 518 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 520 typically provides data communication through one or more networks to other data devices. For example, network link 520 may provide a connection through local network 522 to a host computer 524 or to data equipment operated by an Internet Service Provider (ISP) 526. ISP 526 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 528. Local network 522 and Internet 528 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 520 and through communication interface 518, which carry the digital data to and from computer system 500, are example forms of transmission media.
Computer system 500 can send messages and receive data, including program code, through the network(s), network link 520 and communication interface 518. In the Internet example, a server 530 might transmit a requested code for an application program through Internet 528, ISP 526, local network 522 and communication interface 518.
The received code may be executed by processor 504 as it is received, and/or stored in storage device 510, or other non-volatile storage for later execution.
In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
This application is a Continuation of U.S. Pat. Application No. 16/809,430 filed on Mar. 4, 2020, which claims benefit under 35 U.S.C. § 119(e) of Provisional Application Number 62/813,607, filed Mar. 4, 2019, the entire contents of all of which are hereby incorporated by reference as if fully set forth herein. The applicant(s) hereby rescind any disclaimer of claim scope in the parent application(s) or the prosecution history thereof and advise the USPTO that the claims in this application may be broader than any claim in the parent application(s).
Number | Date | Country | |
---|---|---|---|
62813607 | Mar 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16809430 | Mar 2020 | US |
Child | 18100286 | US |