# US 8,787,570 B2 · Systems and methods for automatically genenrating top level index files

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

- Number: US 8,787,570 B2
- Document ID: US8787570B2
- Status: Granted
- Kind: B2
- Application number: 13/341,789
- Filed: 2011-12-30
- Published: 2013-02-28
- Granted: 2014-07-22
- Earliest claimed: 2011-08-31
- Assignees: Sonic IP, Inc.
- Applicants: Jason Braness; Evan Wallin; Ederson Ferreira
- Inventors: Jason Braness; Evan Wallin; Ederson Ferreira
- Web page: https://patentgrep.com/patent/US8787570B2

## CPC

- H04L 65/762: {at the source (reformatting of additional data in video distribution servers H04N21/2355)}
- G06F 21/10: Protecting distributed programs or content, e.g. vending or licensing of copyrighted material (protection in video systems or pay television H04N7/16) {; Digital rights management [DRM]}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 65/60: Network streaming of media packets
- H04L 65/61: for supporting one-way streaming services, e.g. Internet radio
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- H04N 21/2385: Channel allocation (H04N21/266 takes precedence); Bandwidth allocation (H04N21/24 takes precedence {; allocation of channels according to the instantaneous demands of the users in time-division multiplex systems H04J3/1682; admission control, resource allocation in open networks H04L12/5692; arrangements for maintenance or administration in data switching networks involving bandwidth and capacity management H04L41/0896; negotiating bandwidth in wireless networks H04W28/16})
- H04N 21/2393: {involving handling client requests (scheduling or organising the servicing of application requests H04L67/60)}
- H04N 21/2541: {Rights Management (protecting software against unauthorised usage in a vending or licensing environment G06F21/10; security in data switching network management H04L41/28; security management or policies for network security H04L63/20; access security in wireless networks H04W12/08)}
- H04N 21/25825: {involving client display capabilities, e.g. screen resolution of a mobile phone (optimising the visualisation of content during browsing in the Internet G06F16/9577; processing of terminal status or physical abilities in wireless networks H04W8/22; authentication in wireless network security H04W12/06)}
- H04N 21/25841: {involving the geographical location of the client (retrieval from the Internet by querying based on geographical locations G06F16/9537; arrangements for identifying locations of receiving stations in broadcast systems H04H60/51; location of the user terminal in data switching networks H04L67/52; services making use of the location of users or terminals in wireless networks H04W4/02; locating users or terminals in wireless networks H04W64/00)}
- H04N 21/26258: {for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list (retrieval of multimedia data based on playlists G06F16/40)}
- H04N 21/47202: {for requesting content on demand, e.g. video on demand}
- H04N 21/6581: {Reference data, e.g. a movie identifier for ordering a movie or a product identifier in a home shopping application}
- H04N 21/8352: involving content or source identification data, e.g. Unique Material Identifier [UMID]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Systems and methods for automatically generating top level index files for use in adaptive bitrate streaming in accordance with embodiments of the invention are disclosed. One embodiment of the method of the invention includes receiving a request from a playback device at a playback server, where the request identifies a piece of content, retrieving a list of assets associated with the identified piece of content using the playback server, filtering the list of assets using at least one predetermined criterion using the playback server, generating a top level index file describing each asset in the filtered list of assets using the playback server, and sending the top level index file to the playback device using the playback server.

## Claims

### Claim 1

A method of generating a top level index file, comprising:
receiving a request from a playback device at a playback server, where the request includes an electronic token that identifies a piece of content;
retrieving a list of assets associated with the electronic token that identifies the piece of content using the playback server wherein each asset is a different alternative stream associated with the piece of content and each alternative stream encodes the piece of content at a different maximum bitrate;
filtering the list of assets using at least one predetermined criterion using the playback server wherein the at least one predetermined criterion is associated with capabilities of the playback device;
generating, using the playback server, a top level index file describing that (i) describes at least a bitrate of each asset in the filtered list of assets and (ii) identifies locations of the assets in the filtered list of assets; and
sending the top level index file to the playback device using the playback server.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the request from the playback device also includes information describing the capabilities of the playback device; and
the playback server filters the list of assets based upon the capabilities of the playback device.

### Claim 3 (depends on 2)

The method of claim 2, wherein:
the information describing the capabilities of the playback device is a product identifier; and
the method further comprising retrieving at least one device capability based upon the product identifier using the playback server.

### Claim 4 (depends on 2)

The method of claim 2, wherein the device capability is at least one device capability selected from the group consisting of: display aspect ratio, anticipated maximum network connection data rate, device outputs, supported formats, device buffer size, device resolution, device region, and device language.

### Claim 5 (depends on 1)

The method of claim 1, wherein the at least one predetermined criterion includes whether the playback device has access to assets associated with premium content.

### Claim 6 (depends on 1)

The method of claim 1, wherein:
the request from the playback device also includes information indicative of the geographic location of the playback device; and
the at least one predetermined criterion includes whether an asset is permitted to be played back in the geographic location indicated by the request.

### Claim 7 (depends on 1)

The method of claim 1, wherein the at least one predetermined criterion includes filtering the assets based upon at least one language.

### Claim 8 (depends on 1)

The method of claim 1, wherein the playback server maintains a database of assets associated with specific pieces of content.

### Claim 9 (depends on 1)

The method of claim 1, wherein the top level index file is a SMIL file.

### Claim 10 (depends on 9)

The method of claim 9, wherein generating, using the playback server, a top level index file that (i) describes at least a bitrate of each asset in the filtered list of assets and (ii) identifies locations of the assets in the filtered list of assets comprises generating an XML string including a URI for each asset.

### Claim 11 (depends on 10)

The method of claim 10, further comprising generating an XML string including a SWITCH element to describe alternative streams for use in adaptive bitrate streaming.

### Claim 12 (depends on 10)

The method of claim 10, further comprising generating an XML string including an EXCL element to describe alternative streams for use in conventional streaming.

### Claim 13 (depends on 10)

The method of claim 10, wherein the URI references a container file and the XML string for each assets includes an element that defines the size of a header section of the container file.

### Claim 14 (depends on 10)

The method of claim 10, wherein the XML string includes an element that identifies the encoding of the asset.

### Claim 15 (depends on 10)

The method of claim 10, wherein the XML string of a video asset includes at least one element selected from the group consisting of:
an element that describes the maximum bitrate of the video;
an element that describes the width and height of the video; and
an element that describes the video buffer verifier size of the video.

### Claim 16

A method for authorizing playback of content, comprising:
receiving a request from a playback device at a playback server, where the request includes an electronic token that identifies a piece of content;
retrieving a list of assets associated with the electronic token that identifies the piece of content using the playback server wherein each asset is a different alternative stream associated with the piece of content and each alternative stream encodes the piece of content at a different maximum bitrate;
filtering the list of assets using at least one predetermined criterion using the playback server wherein the at least one predetermined criterion is associated with capabilities of the playback device;
generating, using the playback server, a top level index file that (i) describes at least a bitrate of each asset in the filtered list of assets and (ii) identifies locations of the assets in the filtered list of assets;
sending the top level index file to the playback device using the playback server;
retrieving cryptographic information using the playback server, where the cryptographic information is used to access protected streams described in the top level index file; and
providing the cryptographic information to the playback device using the playback server.

### Claim 17 (depends on 16)

The method of claim 16, wherein the cryptographic information is retrieved by the playback server in response to a request from a playback device to playback the content.

### Claim 18 (depends on 16)

The method of claim 16, wherein the cryptographic information is retrieved by the playback server from a database of cryptographic information and is encrypted so that the playback device can access the cryptographic information using cryptographic information stored on the playback device.

### Claim 19 (depends on 16)

The method of claim 16, wherein the cryptographic information is retrieved by the playback server from a digital rights management server.

### Claim 20 (depends on 16)

The method of claim 16, further comprising confirming that the number of devices on which the user is currently playing back content is less than a predetermined concurrency limit.

### Claim 21 (depends on 16)

The method of claim 16, further comprising receiving a play event report from the playback device at the playback server.

### Claim 22 (depends on 21)

The method of claim 21, further comprising providing a command to the playback device using the playback server in response to the play event report.

### Claim 23 (depends on 22)

The method of claim 22, wherein the play event report includes a playback location.

### Claim 24 (depends on 23)

The method of claim 23, further comprising sending a command to resume playback at the playback location indicated in the play event report to a second playback device.

### Claim 25 (depends on 24)

The method of claim 24, further comprising sending a command to stop playback to the playback device that generated the play event report using the playback server.

### Claim 26

A playback server, comprising:
a database that stores descriptions of assets associated with specific pieces of content;
a processor configured using a playback management application;
wherein the playback management application configures the processor to:
receive a request from a playback device, where the request includes an electronic token that identifies a piece of content;
retrieve a list of assets associated with the electronic token that identifies the piece of content wherein each asset is a different alternative stream associated with the piece of content and each alternative stream encodes the piece of content at a different maximum bitrate;
filter the list of assets using at least one predetermined criterion wherein the at least one predetermined criterion is associated with capabilities of the playback device;
generate a top level index file that (i) describes at least a bitrate of each asset in the filtered list of assets and (ii) identifies locations of the assets in the filtered list of assets; and
send the top level index file to the playback device.

### Claim 27 (depends on 26)

The playback server of claim 26, wherein:
the request from the playback device also includes information describing the capabilities of the playback device; and
the playback management application configures the processor to filter the list of assets based upon the capabilities of the playback device.

### Claim 28 (depends on 27)

The playback server of claim 27, wherein:
the information describing the capabilities of the playback device is a product identifier; and
the playback management application further configures the processor to retrieve at least one device capability based upon the product identifier.

### Claim 29 (depends on 27)

The playback server of claim 27, wherein the device capability is at least one device capability selected from the group consisting of: display aspect ratio, anticipated maximum network connection data rate, device outputs, supported formats, device buffer size, display resolution, device region, and device language.

### Claim 30 (depends on 26)

The playback server of claim 26, wherein the at least one predetermined criterion includes whether the playback device has access to assets associated with premium content.

### Claim 31 (depends on 26)

The playback server of claim 26, wherein:
the request from the playback device also includes information indicative of the geographic location of the playback device; and
the at least one predetermined criterion includes whether an asset is permitted to be played back in the geographic location indicated by the request.

### Claim 32 (depends on 26)

The playback server of claim 26, wherein the at least one predetermined criterion includes filtering the assets based upon one or more languages.

### Claim 33 (depends on 26)

The playback server of claim 26, wherein the playback server maintains a database of assets associated with specific pieces of content.

### Claim 34 (depends on 26)

The playback server of claim 26, wherein the top level index file is a SMIL file.

### Claim 35 (depends on 34)

The playback server of claim 34, wherein the playback management application configures the processor to generate a top level index file that (i) describes at least a bitrate of each asset in the filtered list of assets and (ii) identifies locations of the assets in the filtered list of assets by configuring the processor to generate an XML string including a URI for each asset.

### Claim 36 (depends on 35)

The playback server of claim 35, wherein the playback management application further configures the processor to generate an XML string including a SWITCH element to describe alternative streams for use in adaptive bitrate streaming.

### Claim 37 (depends on 35)

The playback server of claim 35, wherein the playback management application further configures the processor to generate an XML string including an EXCL element to describe alternative streams for use in conventional streaming.

### Claim 38 (depends on 35)

The playback server of claim 35, wherein the URI references a container file and the XML string for each asset includes an element that defines the size of a header section of the container file.

### Claim 39 (depends on 35)

The playback server of claim 35, wherein the XML string includes an element that identifies the encoding of the asset.

### Claim 40 (depends on 35)

The playback server of claim 35, wherein the XML string of a video asset includes at least one element selected from the group consisting of:
an element that describes the maximum bitrate of the video;
an element that describes the width and height of the video; and
an element that describes the video buffer verifier size of the video.

### Claim 41 (depends on 26)

The playback server of claim 26, wherein the playback management application further configures the processor to:
retrieve cryptographic information, where the cryptographic information is used to access protected streams described in the top level index file; and
provide the cryptographic information to the playback device.

### Claim 42 (depends on 41)

The playback server of claim 41, wherein the playback management application configures the processor to retrieve the cryptographic information in response to a request from a playback device to playback the content.

### Claim 43 (depends on 41)

The playback server of claim 41, wherein the playback management application configures the processor to:
retrieve the cryptographic information from a database of cryptographic information; and
encrypt the retrieved cryptographic information so that the playback device can access the retrieved cryptographic information in the clear using cryptographic information stored on the playback device.

### Claim 44 (depends on 41)

The playback server of claim 41, wherein the playback management application configures the processor to retrieve the cryptographic information from a digital rights management server.

### Claim 45 (depends on 41)

The playback server of claim 41, wherein the playback management application configures the processor to confirm that the number of devices on which the user is playing back content is less than a predetermined concurrency limit.

### Claim 46 (depends on 41)

The playback server of claim 41, wherein the playback management application configures the processor to receive a play event report from the playback device.

### Claim 47 (depends on 46)

The playback server of claim 46, wherein the playback management application configures the processor to provide a command to the playback device in response to the play event report.

### Claim 48 (depends on 47)

The playback server of claim 47, wherein the play event report includes a playback location.

### Claim 49 (depends on 48)

The playback server of claim 48, wherein the playback management application further configures the processor to send a command to resume playback at the playback location indicated in the play event report to a second playback device.

### Claim 50 (depends on 49)

The playback server of claim 49, wherein the playback management application further configures the processor to send a command to stop playback to the playback device that generated the play event report using the playback server.

### Claim 51

A non-transitory machine readable medium containing processor instructions, where execution of the instructions by a processor causes the processor to perform a process comprising:
receiving a request from a playback device, where the request includes an electronic token that identifies a piece of content;
retrieving a list of assets associated with the electronic token that identifies the piece of content wherein each asset is a different alternative stream associated with the piece of content and each alternative stream encodes the piece of content at a different maximum bitrate;
filtering the list of assets using at least one predetermined criterion wherein the at least one predetermined criterion is associated with capabilities of the playback device;
generating a top level index file that (i) describes at least a bitrate of each asset in the filtered list of assets and (ii) identifies locations of the assets in the filtered list of assets; and
sending the top level index file to the playback device.

### Claim 52 (depends on 51)

The non-transitory machine readable medium of claim 51, wherein the execution of the instructions by a processor causes the processor to perform a process further comprising:
retrieving cryptographic information, where the cryptographic information is used to access protected streams described in the top level index file; and
providing the cryptographic information to the playback device.
