IP Library Granted Patent US 10,930,318
Granted Patent B2
US 10,930,318 · App. 16/511,785 · Granted Feb 23, 2021

Gapless video looping

Inventors: Zhong Sheng Wang (New York, NY); Ryan Matthew Gordon (New York, NY)
Assignee: Twitter, Inc.
G11B27/007G11B27/00G11B27/031G11B27/038G11B27/34H04L51/32H04L65/601H04N21/4126H04N21/4307H04N21/4325H04N21/4392H04N21/44004H04N21/44016H04N21/8456H04N21/8547
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 10,930,318
App. No.
16/511,785
Granted
Feb 23, 2021
Kind
B2
Abstract

Techniques of playing back a looping video file involve providing multiple video codecs for decoding a video file. Each video codec performs its own decoding operation on the looping video file, resulting in multiple buffers of video frames and a buffer of audio frames. Then, as the GPU renders the ending video frames from a first buffer, it begins rendering the beginning video frames from a second buffer. In this way, the beginning of a next video cycle is already rendered for viewing by the time a current video cycle is ending.

Claims (52)

1. A method of playing back a looping video file, the method comprising:

receiving a first plurality of video frames, a second plurality of video frames, and a plurality of audio frames, each of the plurality of audio frames including audio synchronized with a video frame of the first plurality of video frames and a video frame of the second plurality of video frames;

rendering (i) the first plurality of video frames to produce first video content, the first video content having a beginning portion and an end portion and (ii) the plurality of the audio frames to produce audio content, the audio content including end audio samples corresponding to the end portion of the first video content, the first plurality of video frames including an end portion corresponding to the end portion of the first video content;

performing a trimming operation on the end portion of the first plurality of video frames to produce a trimmed end portion of the first plurality of video frames, the trimming operation including assigning a timestamp to the end audio sample such that the looping video has a specified duration in time, the audio content further including a beginning audio sample corresponding to the beginning portion of the first video content, the beginning audio portion having a timestamp;

identifying an overlap portion between the end portion of the first plurality of video frames and the beginning portion of the second plurality of video frames; and

changing a difference between the timestamp of each of the beginning audio sample and the end audio sample based on the overlap portion.

2. The method as in claim 1 ,

wherein the second plurality of video frames includes a beginning portion corresponding to the beginning portion of the first video content; and

wherein the method further comprises performing the trimming operation on the second plurality of video frames to produce a trimmed beginning portion of the second plurality of video frames, the trimming operation further including adjusting the timestamp of the beginning audio sample.

3. The method as in claim 2 , wherein adjusting the timestamp of the end audio sample includes:

identifying a video frame of the trimmed end portion of the first plurality of video frames to which no audio of the end audio sample corresponds; and

reassigning the timestamp of the end audio sample to account for a change in time associated with the identified video frame.

4. The method as in claim 2 , wherein adjusting the timestamp of the end audio sample includes:

identifying a video frame of the trimmed beginning portion of the second plurality of video frames to which no audio of the beginning audio sample corresponds; and

reassigning the timestamp of the beginning audio sample to account for a change in time associated with the identified video frame.

5. The method as in claim 2 , wherein the respective timestamps of each of the beginning audio sample and the end audio sample track each audio sample within an audio frame.

6. The method as in claim 2 , wherein the respective timestamps of each of the beginning audio sample and the end audio sample track each audio frame.

7. The method as in claim 2 , further comprising:

storing, in a cache, the rendered second plurality of video frames according to a sequence defined by the timestamp of each of the beginning audio samples and the end audio samples.

8. A computer program product comprising a nontransitive storage medium, the computer program product including code that, when executed by processing circuitry of a sound rendering computer configured to play back a looping video file, causes the processing circuitry to perform a method, the method comprising:

receiving a first plurality of video frames, a second plurality of video frames, and a plurality of audio frames, each of the plurality of audio frames including audio synchronized with a video frame of the first plurality of video frames and a video frame of the second plurality of video frames;

rendering (i) the first plurality of video frames to produce first video content, the first video content having a beginning portion and an end portion and (ii) the plurality of the audio frames to produce audio content,

the audio content including:

beginning audio samples corresponding to the beginning portion of the first video content,

the second plurality of video frames including a beginning portion corresponding to the beginning portion of the second video content, the beginning audio portion having a timestamp, and

an end audio sample corresponding to the end portion of the first video content, the end audio portion having a timestamp;

performing a trimming operation on the beginning portion of the second plurality of video frames to produce a trimmed beginning portion of the second plurality of video frames,

identifying an overlap between the end portion of the first plurality of video frames and the beginning portion of the second plurality of video frames; and

changing a difference between the timestamp of each of the beginning audio portion and the end audio portion based on the overlap portion.

9. The computer program product as in claim 8 ,

wherein the first plurality of video frames includes an end portion corresponding to the end portion of the first video content; and

wherein the method further comprises performing the trimming operation on the end portion of the first plurality of video frames to produce a trimmed end portion of the first plurality of video frames, the trimming operation including adjusting the timestamp of the end audio sample.

10. The computer program product as in claim 9 , wherein adjusting the timestamp of the end audio sample includes:

identifying a video frame of the trimmed end portion of the first plurality of video frames to which no audio of the end audio sample corresponds; and

reassigning the timestamp of the end audio sample to account for a change in time associated with the identified video frame.

11. The computer program product as in claim 9 , wherein adjusting the timestamp of the end audio sample includes:

identifying a video frame of the trimmed beginning portion of the second plurality of video frames to which no audio of the beginning audio samples corresponds; and

reassigning the timestamp of the beginning audio sample to account for a change in time associated with the identified video frame.

12. The computer program product as in claim 9 , wherein the timestamp of each of the beginning audio sample and the end audio sample track each audio sample within an audio frame.

13. The computer program product as in claim 9 , wherein the timestamp of each of the beginning audio sample and the end audio sample track each audio frame.

14. The computer program product as in claim 9 , wherein the method further comprises:

storing, in a cache of the processing circuitry, the rendered second plurality of video frames according to a sequence defined by the timestamp of each of the beginning audio sample and the end audio sample.

15. The computer program product as in claim 9 , wherein adjusting the timestamp of the end audio sample includes:

assigning a timestamp to the end audio sample such that the looping video file has a constant duration in time.

16. A system comprising:

at least one processor; and

memory that stores instructions that, when executed by the at least one processor, cause the system to perform operations of,

receiving a first plurality of video frames, a second plurality of video frames, and a plurality of audio frames, each of the plurality of audio frames including audio synchronized with a video frame of the first plurality of video frames and a video frame of the second plurality of video frames;

rendering (i) the first plurality of video frames to produce first video content, the first video content having a beginning portion and an end portion and (ii) the plurality of the audio frames to produce audio content, the audio content including beginning audio samples corresponding to the beginning portion of the first video content the second plurality of video frames including a beginning portion corresponding to the beginning portion of the second video content;

performing the trimming operation on the beginning portion of the second plurality of video frames to produce a trimmed beginning portion of the second plurality of video frames, the trimming operation including assigning a timestamp to the beginning audio portion such that the looping video file has a specified duration in time, the audio content further including a beginning audio sample corresponding to the beginning portion of the first video content, the beginning audio portion having a timestamp;

identifying an overlap portion between the end portion of the first plurality of video frames and the beginning portion of the second plurality of video frames; and

changing a difference between the timestamp of each of the beginning audio sample and the end audio sample based on the overlap portion.

Assignments (7)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2019
From: WANG, ZHONG SHENG; GORDON, RYAN MATTHEW
To: TWITTER, INC.
Reel/Frame 049910/0659 →
Continuity (3)
Continuation 15284317 · Oct 3, 2016
Provisional Application 62236615 · Oct 2, 2015
Related Publication 20190341078A1 · Nov 7, 2019