# US 8,572,178 B1 · Executing applications in remotely emulated computing devices

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,572,178 B1
- Document ID: US8572178B1
- Status: Granted
- Kind: B1
- Application number: 13/174,995
- Filed: 2011-07-01
- Granted: 2013-10-29
- Earliest claimed: 2011-07-01
- Assignees: Amazon Technologies, Inc.
- Applicants: Michael Anthony Frazzini; Ameesh Paleja; Gerard J. Heinz, II
- Inventors: Michael Anthony Frazzini; Ameesh Paleja; Gerard J. Heinz, II
- Web page: https://patentgrep.com/patent/US8572178B1

## CPC

- G06F 9/54: Interprogram communication
- H04L 65/60: Network streaming of media packets
- H04L 65/61: for supporting one-way streaming services, e.g. Internet radio
- G06F 2209/549: Remote execution
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Disclosed are various embodiments that facilitate execution of applications through remotely emulated computing devices. An application is executed in a hosted environment. A video signal of the application is encoded into a media stream, which is sent to a client computing device. In various embodiments, access to data that is locally available to the client computing device is facilitated. In various embodiments, data related to the operation of the application is recorded.

## Claims

### Claim 1

A non-transitory computer-readable medium embodying a program executable in a computing device, the program comprising:
code that obtains an application from a developer of the application;
code that executes a plurality of instances of the application in a hosted environment;
code that encodes a video signal captured from a first instance of the application into a first media stream;
code that sends the first media stream to a corresponding one of a plurality of client computing devices, each of the client computing devices being associated with a different application user;
code that provides a first input command to the first instance of the application, the first input command being obtained from the corresponding one of the client computing devices;
code that records operational data related to the first instance of the application;
code that facilitates access to data that is locally available to the corresponding one of the client computing devices by the first instance of the application; and
wherein the code that facilitates access is further configured to facilitate access by the first instance of the application to default data in place of the data that is locally available to the corresponding one of the client computing devices in response to determining that the data that is locally available to the corresponding one of the client computing devices is unavailable.

### Claim 2

A system, comprising:
at least one computing device; and
a server application executable in the at least one computing device, the server application comprising:
logic that executes a plurality of instances of an application in a hosted environment;
logic that encodes a video signal of a first instance of the application into a first media stream;
logic that sends the first media stream to a client computing device;
logic that facilitates access to data that is locally available to the client computing device by the first instance of the application; and
wherein the logic that facilitates access is further configured to facilitate access by the first instance of the application to default data in place of the data that is locally available to the client computing device in response to determining that the data that is locally available to the client computing device is unavailable.

### Claim 3 (depends on 2)

The system of claim 2, wherein the server application further comprises:
logic that obtains at least one input command from the client computing device; and
logic that provides the at least one input command to the first instance of the application through at least one virtualized input device.

### Claim 4 (depends on 2)

The system of claim 2, wherein the server application further comprises logic that encodes a user interface for rendering in the client computing device, the user interface including a graphical representation of a model of a computing device, wherein a screen of the graphical representation of the model of the computing device is configured to render at least a portion of the video signal from the first media stream.

### Claim 5 (depends on 4)

The system of claim 4, wherein the server application further comprises:
logic that sends the user interface to the client computing device;
logic that obtains an input command from the client computing device, wherein the user interface is further configured to generate the input command in response to a user interaction with a graphical representation of an input device; and
logic that provides the input command to the first instance of the application through a virtualized input device.

### Claim 6 (depends on 2)

The system of claim 2, wherein the hosted environment corresponds to a virtualized environment that emulates a computing device, and the first instance of the application is configured to be executed in the computing device that is emulated.

### Claim 7 (depends on 2)

The system of claim 2, wherein the server application further comprises logic that maintains a copy of the data that is locally available to the client computing device in the at least one computing device.

### Claim 8 (depends on 7)

The system of claim 7, wherein the logic that maintains the copy of the data that is locally available to the client computing device further comprises logic that obtains the data that is locally available to the client computing device from the client computing device.

### Claim 9 (depends on 7)

The system of claim 7, wherein the data that is locally available to the client computing device is obtained in response to the data being requested by the first instance of the application.

### Claim 10 (depends on 7)

The system of claim 7, wherein the data that is locally available to the client computing device is obtained before the data is requested by the first instance of the application.

### Claim 11 (depends on 2)

The system of claim 2, wherein the data that is locally available to the client computing device corresponds to at least one file that is stored in a local data store of the client computing device.

### Claim 12 (depends on 2)

The system of claim 2, wherein the data that is locally available to the client computing device corresponds to data generated in a component of the client computing device.

### Claim 13 (depends on 12)

The system of claim 12, wherein the component is a global positioning system (GPS) receiver.

### Claim 14 (depends on 2)

The system of claim 2, wherein the data that is locally available to the client computing device corresponds to data that is stored in a networked storage system in association with a user account, and the logic that facilitates access is configured to access the data that is stored in the networked storage system in association with the user account based at least in part on data relating to the user account that is obtained from the client computing device.

### Claim 15 (depends on 2)

The system of claim 2, wherein the logic that facilitates access includes a data access layer that is configured to virtualize at least one local data store for the application, and the data that is locally available to the client computing device is accessed by the first instance of the application through the at least one local data store.

### Claim 16 (depends on 2)

The system of claim 2, wherein the server application further comprises logic that obtains the application from a developer of the application.

### Claim 17

A method, comprising:
executing, in at least one computing device, a plurality of instances of an application in a hosted environment;
encoding, in the at least one computing device, a video signal captured from a first instance of the application into a first media stream;
sending, in the at least one computing device, the first media stream to a corresponding one of a plurality of client computing devices, each of the client computing devices being associated with a different application user;
facilitating, in the at least one computing device, access to data that is locally available to the corresponding one of the client computing devices by the first instance of the application;
facilitating, in the at least one computing device, access by the first instance of the application to default data in place of the data that is locally available to the corresponding one of the client computing devices in response to determining that the data that is locally available to the corresponding one of the client computing devices is unavailable;
providing, in the at least one computing device, a first input command to the first instance of the application, the first input command being obtained from the corresponding one of the client computing devices; and
recording, in the at least one computing device, operational data related to the first instance of the application.

### Claim 18 (depends on 17)

The method of claim 17, further comprising promoting, in the at least one computing device, the application to a plurality of potential application users.

### Claim 19 (depends on 17)

The method of claim 17, wherein at least a portion of the operational data relates to debugging information for the application.

### Claim 20 (depends on 17)

The method of claim 17, wherein at least a portion of the operational data relates to a duration of use of the application for each different application user.

### Claim 21 (depends on 17)

The method of claim 17, further comprising:
obtaining, in the at least one computing device, the application from a developer of the application; and
providing, in the at least one computing device, the operational data to the developer of the application.

### Claim 22 (depends on 17)

The method of claim 17, further comprising:
providing, in the at least one computing device, a survey regarding the application to each of the different application users;
obtaining, in the at least one computing device, a response to the survey from each of the different application users; and
providing, in the at least one computing device, the responses to the survey to a developer of the application.

### Claim 23 (depends on 17)

The method of claim 17, further comprising:
obtaining, in the at least one computing device, an updated version of the application from a developer of the application; and
deploying, in the at least one computing device, the updated version of the application in the hosted environment, wherein any future instance of the application employs the updated version of the application.

### Claim 24 (depends on 17)

The method of claim 17, wherein at least some of the instances of the application are each executed in a respective one of a plurality of different virtualized environments, and each of the different virtualized environments corresponds to a different emulated computing device.

### Claim 25 (depends on 24)

The method of claim 24, further comprising:
obtaining, in the at least one computing device, source code of the application; and
compiling, in the at least one computing device, the source code, for each different emulated computing device, into code configured for execution by the respective different emulated computing device.
