# US 8,542,705 B2 · Key frame detection and synchronization

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

- Number: US 8,542,705 B2
- Document ID: US8542705B2
- Status: Granted
- Kind: B2
- Application number: 11/626,340
- Filed: 2007-01-23
- Published: 2008-07-24
- Granted: 2013-09-24
- Earliest claimed: 2007-01-23
- Assignees: MobiTV, Inc.
- Applicants: Kay Johansson; Kent Karlsson
- Inventors: Kay Johansson; Kent Karlsson
- Web page: https://patentgrep.com/patent/US8542705B2

## CPC

- H04N 7/17318: {Direct or substantially direct transmission and handling of requests}
- H04L 65/60: Network streaming of media packets
- H04L 65/70: Media network packetisation
- H04L 65/752: adapting media to network capabilities
- H04N 21/23424: {involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement}
- H04N 21/236: Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream {(multiplexing of data packets for data networks, e.g. RTP/UDP H04L65/00)}
- H04N 21/26616: {for merging a unicast channel into a multicast channel, e.g. in a VOD application, when a client served by unicast channel catches up a multicast channel to save bandwidth (data multicast over packet-switching network H04L12/18)}
- H04N 21/4331: {Caching operations, e.g. of an advertisement for later insertion during playback}
- H04N 21/4384: {involving operations to reduce the access time, e.g. fast-tuning for reducing channel switching latency}
- H04N 21/44016: {involving splicing one content stream with another content stream, e.g. for substituting a video clip}
- H04N 21/472: End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content {(end-user interfaces for retrieving video data from a database G06F16/739; network services for supporting unicast streaming H04L65/612)}
- 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/8455: {involving pointers to the content, e.g. pointers to the I-frames of the video stream}
- H04L 65/611: for multicast or broadcast (systems for broadcast or conference H04L12/18; arrangements for broadcast or distribution combined with broadcast H04H20/00; arrangements for broadcast applications with a direct linkage to broadcast information or to broadcast space-time H04H60/00; selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS], H04W4/06)
- H04L 65/612: for unicast
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Mechanisms are provided for allowing a streaming server to efficiently provide frames associated with a media stream to a client device. A streaming server receives multiple media streams and determines which frames in the multiple media streams are key frames. When a connection request is received from a client device, a key frame is selected and provided to the client device. A client device receiving a key frame does not have to drop any predictive frames prior to playing a media stream.

## Claims

### Claim 1

A method, comprising:
receiving a first media stream including a first plurality of frames, the first media stream received at a streaming server and maintained in a first buffer, the streaming server configured to receive the first media stream from a media aggregation server, wherein a plurality of buffers at the streaming server are allocated on a per group of pictures (GOP) basis;
receiving a second media stream including a second plurality of frames, the second media stream received at the streaming server and maintained in a second buffer;
determining positions of a plurality of key frames in the first buffer and the second buffer, the plurality of key frames including a first key frame in the first buffer and a second key frame in the second buffer, wherein determining positions of the plurality of key frames includes determining at the streaming server a group of pictures (GOP) size N and identifying Nth frames following the first key frame as subsequent key frames;
receiving a channel change request from a client device receiving the first media stream, the channel change request corresponding to a switch from the first media stream to the second media stream;
identifying a next available key frame associated with the second media stream, wherein the next available key frame is provided as the second key frame in response to the channel change request, wherein no predictive frames are transmitted at the beginning of the channel change request.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first media stream is a first video stream and the second media stream is a second video stream.

### Claim 3 (depends on 1)

The method of claim 1, wherein the key frames are identified by detecting frames larger than a particular size.

### Claim 4 (depends on 1)

The method of claim 1, wherein the key frames are identified by detecting the start of a GOP.

### Claim 5 (depends on 1)

The method of claim 1, wherein the key frames are identified by flagging each start of a GOP as a key frame.

### Claim 6 (depends on 1)

The method of claim 1, wherein the key frame is an I-frame.

### Claim 7 (depends on 1)

The method of claim 1, wherein channel change does not occur until the second key frame can be provided to the client device.

### Claim 8

A system, comprising:
an interface configured to receive a first media stream including a first plurality of frames and a second media stream including a second plurality of frames, the first media stream received at a streaming server and maintained in a first buffer and the second media stream received at the streaming server and maintained in a second buffer, the streaming server configured to receive the first media stream from a media aggregation server, wherein a plurality of buffers at the streaming server are allocated on a per group of pictures (GOP) basis;
a processor configured to determine positions of a plurality of key frames in the first buffer and the second buffer, the plurality of key frames including a first key frame in the first buffer and a second key frame in the second buffer, wherein determining positions of the plurality of key frames includes determining at the streaming server a group of pictures (GOP) size N and identifying Nth frames following the first key frame as subsequent key frames;
wherein the processor is further configured to identify a next available key frame associated with the second media stream, wherein the next available key frame is provided as the second key frame in response to the channel change request, wherein no predictive frames are transmitted at the beginning of the channel change request.

### Claim 9 (depends on 8)

The method of claim 8, wherein the first media stream is a first video stream and the second media stream is a second video stream.

### Claim 10 (depends on 8)

The method of claim 8, wherein the key frames are identified by detecting frames larger than a particular size.

### Claim 11 (depends on 8)

The method of claim 8, wherein the key frames are identified by detecting the start of a GOP.

### Claim 12 (depends on 8)

The method of claim 8, wherein the key frames are identified by flagging each start of a GOP as a key frame.

### Claim 13 (depends on 8)

The method of claim 8, wherein the key frame is an I-frame.

### Claim 14 (depends on 8)

The method of claim 8, wherein channel change does not occur until the second key frame can be provided to the client device.

### Claim 15

A non-transitory computer readable medium, comprising:
computer code for receiving a first media stream including a first plurality of frames, the first media stream received at a streaming server and maintained in a first buffer, the streaming server configured to receive the first media stream from a media aggregation server, wherein a plurality of buffers at the streaming server are allocated on a per group of pictures (GOP) basis;
computer code for receiving a second media stream including a second plurality of frames, the second media stream received at the streaming server and maintained in a second buffer;
computer code for determining positions of a plurality of key frames in the first buffer and the second buffer, the plurality of key frames including a first key frame in the first buffer and a second key frame in the second buffer, wherein determining positions of the plurality of key frames includes determining at the streaming server a group of pictures (GOP) size N and identifying Nth frames following the first key frame as subsequent key frames;
computer code for receiving a channel change request from a client device receiving the first media stream, the channel change request corresponding to a switch from the first media stream to the second media stream;
computer code for identifying a next available key frame associated with the second media stream, wherein the next available key frame is provided as the second key frame in response to the channel change request, wherein no predictive frames are transmitted at the beginning of the channel change request.

### Claim 16 (depends on 15)

The computer readable medium of claim 15, wherein the first media stream is a first video stream and the second media stream is a second video stream.

### Claim 17 (depends on 15)

The computer readable medium of claim 15, wherein the key frames are identified by detecting frames larger than a particular size.

### Claim 18 (depends on 15)

The computer readable medium of claim 15, wherein the key frames are identified by detecting the start of a GOP.

### Claim 19 (depends on 15)

The computer readable medium of claim 15, wherein the key frames are identified by flagging each start of a GOP as a key frame.

### Claim 20 (depends on 15)

The computer readable medium of claim 15, wherein the key frame is an I-frame.
