IP Library Granted Patent US 9,894,393
Granted Patent B2
US 9,894,393 · App. 14/841,431 · Granted Feb 13, 2018

Video encoding for reduced streaming latency

Inventors: Mark Petersen (San Diego, CA); Peter Tran (San Diego, CA); Jeffrey S. Youel (Rancho Santa Fe, CA)
Assignee: GoPro, Inc.
H04N21/2385G11B27/10H04N19/107H04N19/44H04N21/2387H04N21/4223H04N21/4382H04N21/4385H04N21/44004H04N21/6336H04N21/845H04N21/8456
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,894,393
App. No.
14/841,431
Granted
Feb 13, 2018
Kind
B2
Abstract

A client device requests a streaming video from a storage device, which encodes the video's frame in communication packets according to an encoding protocol for transmission to the client. The client device decodes the communication packets to obtain frame segments and a frame marking header indicating a boundary of the video frame relative to other video frames in the video. The communication packets may also include other segment headers indicating a relative ordering of corresponding frame segments. The client device determines, based on the frame marking header, whether a sufficient number of communication packets have been received to render a video frame. In response to determining that the sufficient number of communication packets has been received, the client device assembles the video frame from the frame segments corresponding to the video frame and presents at least a portion of the video by rendering the assembled video frame.

Claims (37)

1. A non-transitory computer-readable medium comprising instructions for streaming a video, the instructions executable by a processor and comprising instructions for:

receiving, from a client device, a request to stream the video for playback by the client device;

accessing a video frame from video frames included in the video, the video frame being a last frame in a group of pictures included in the video, the group of pictures comprising an intra-coded video frame and one or more inter-coded video frames;

segmenting the video frame into a plurality of frame segments;

identifying a frame boundary segment immediately preceding a frame segment in another group of pictures included in the video;

generating segment headers indicating a sequence order of the frame segments, the segment headers comprising a frame marking header, the frame marking header indicating a boundary of the video frame relative to other video frames in the video and including a flag identifying the frame boundary segment;

generating communication packets each having a payload comprising one of the segment headers and a corresponding one of the frame segments, the communication packets comprising a communication packet with a payload comprising the frame boundary segment and the frame marking header; and

transmitting the communication packets to the client device for playback of the video frame, the client device rendering the video frame using the frame marking header.

2. The computer-readable medium of 1 , wherein generating the segment headers comprises:

determining a total number of frame segments included in the frame segments; and

generating the frame marking header specifying the total number of frame segments.

3. The computer-readable medium of 1 ,

wherein generating the segment headers comprises:

identifying the frame boundary segment at an end of the sequence order of the frame segments.

4. The computer-readable medium of 1 , wherein the instructions further comprise instructions for:

generating a subsequent set of communication packets comprising frame segments of a next video frame immediately following the video frame; and

transmitting the subsequent set of communication packets corresponding to the next video frame after transmitting all the communication packets corresponding to the video frame.

5. A camera comprising:

an image sensor;

a processor; and

a non-transitory computer-readable medium comprising instructions for transferring a video captured by the image sensor, the instructions executable by a processor and comprising instructions for:

receiving, from a client device, a request to stream the video for playback by the client device;

accessing a video frame from video frames included in the video, the video frame being a last frame in a group of pictures included in the video, the group of pictures comprising an intra-coded video frame and one or more inter-coded video frames;

segmenting the video frame into a plurality of frame segments;

identifying a frame boundary segment immediately preceding a frame segment in another group of pictures included in the video;

generating segment headers each indicating a sequence order of the frame segments, the segment headers comprising a frame marking header, the frame marking header indicating a boundary of the video frame relative to other video frames in the video and including a flag identifying the frame boundary segment;

generating communication packets each having a payload comprising one of the segment headers and a corresponding one of the frame segments, the communication packets comprising a communication packet with a payload comprising the frame boundary segment and the frame marking header; and

transmitting the communication packets to the client device for playback of the video frame, the client device rendering the video frame using the frame marking header.

6. The camera of claim 5 , wherein generating the segment headers comprises:

determining a total number of frame segments included in the frame segments; and

generating the frame marking header specifying the total number of frame segments.

7. The camera of claim 5 ,

wherein generating the segment headers comprises:

identifying the frame boundary segment at an end of the sequence order of the frame segments.

8. The camera of claim 5 , wherein the instructions further comprise instructions for:

generating a subsequent set of communication packets comprising frame segments of a next video frame immediately following the video frame; and

transmitting the subsequent set of communication packets corresponding to the next video frame after transmitting all the communication packets corresponding to the video frame.

Assignments (5)
SECURITY INTEREST Recorded Aug 4, 2025
From: GOPRO, INC.
To: FARALLON CAPITAL MANAGEMENT, L.L.C., AS AGENT
Reel/Frame 072340/0676 →
SECURITY INTEREST Recorded Aug 4, 2025
From: GOPRO, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 072358/0001 →
RELEASE OF PATENT SECURITY INTEREST Recorded Jan 25, 2021
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: GOPRO, INC.
Reel/Frame 055106/0434 →
SECURITY AGREEMENT Recorded Mar 28, 2016
From: GOPRO, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 038184/0779 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2015
From: PETERSON, MARK; TRAN, PETER; YOUEL, JEFFREY S.
To: GOPRO, INC.
Reel/Frame 036799/0617 →
Continuity (1)
Related Publication 20170064344A1 · Mar 2, 2017