IP Library Granted Patent US 8,588,575
Granted Patent B2
US 8,588,575 · App. 12/767,502 · Granted Nov 19, 2013

Apparatus and methods for high-speed video presentation

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 8,588,575
App. No.
12/767,502
Granted
Nov 19, 2013
Kind
B2
Abstract

A method of presenting video frames of a video segment at a non-standard speed is provided. A frame count is set to an initial value. For each video frame that is to be presented, a time offset relative to a staring time within the video segment is generated. The time offset may be generated by multiplying the frame count by two values. The first value is a length of time for which each selected frame is to be presented to the user, and the second value is the presentation rate of the video segment relative to a normal presentation rate. A video frame within the video segment corresponding to the time offset within the video segment is selected and output for presentation. The frame count is then updated, and the process is repeated for the next frame to be presented.

Claims (88)

1. A method of presenting video frames of a video segment at a non-standard speed on a video output device, the method comprising:

receiving a first value and a second value, wherein the first value comprises a length of time for which each selected video frame is to be presented via a video output device, and wherein the second value comprises a rate of the presentation of the video segment relative to a normal presentation rate;

setting a frame count for a first video frame to be presented at the non-standard speed to an initial value of one; and

for each of a plurality of video frames to be presented at the non-standard speed on the video output device:

generating a time offset relative to a starting time within the video segment, wherein the time offset comprises a value equal to the frame count multiplied by the first value and the second value;

selecting a next video frame within the video segment corresponding to the time offset within the video segment, wherein the selected next video frame follows a plurality of unselected video frames;

outputting the selected next video frame for presentation on the video output device; and

incrementing the frame count,

wherein the process of generating the time offset, selecting the next video frame, outputting the selected next video frame, and incrementing the frame count continues until one of an end of the video segment and a return to a standard speed of presentation.

2. The method of claim 1 , wherein:

the video segment comprises a video file; and

the starting time comprises a time value relative to the start of the video file.

3. The method of claim 1 , further comprising:

receiving a data size of the video segment and a time length of the video segment;

wherein selecting the next video frame corresponding to the time offset comprises determining a data position within the video segment corresponding to the time offset based on the data size and the time length.

4. The method of claim 1 , further comprising:

receiving a data set relating each of a plurality of time values with each of a plurality of data offsets of the video segment, wherein each of the data offsets indicates an offset from the start of the video segment corresponding with its associated time value from the start of the video segment;

wherein selecting the next video frame corresponding to the time offset comprises determining a data position within the video segment corresponding with the time offset based on the data set.

5. The method of claim 1 , wherein:

each of the video frames comprises a Motion Picture Experts Group (MPEG) frame; and

selecting the next video frame corresponding to the time offset comprises finding a picture start code for the video frame.

6. The method of claim 5 , wherein:

the picture start code comprises the four-byte data sequence of 00 00 01 00, in hexadecimal;

the video segment is stored as a sequence of four-byte double-words, wherein each double-word is ordered from most-significant byte to least-significant byte; and

finding the picture start code for the next video frame comprises, beginning at one of the double-words of the video segment:

if the seven most-significant bits of the least-significant byte of the current double-word are not zero, continuing to the next double-word of the video segment to find the picture start code;

if the seven most-significant bits of the least-significant byte of the current double-word are zero, determining if the picture start code begins within the current double-word;

if the picture start code begins within the current double-word, designating the current double-word as the start of the video frame; and

if the picture start code does not begin within the current double-word, continuing to the next double-word of the video segment to find the picture start code.

7. The method of claim 5 , further comprising:

in response to finding the picture start code for the next video frame, determining if the next video frame for the found picture start code is capable of presentation; and

if the next video frame for the found picture start code is not capable of presentation, finding another picture start code in the video segment; and

if the video frame for the found picture start code is capable of presentation, identifying the video frame for the found picture start code as the next video frame corresponding to the time offset.

8. The method of claim 7 , wherein:

the next video frame for the found picture start code is capable of presentation if the video frame for the found picture start code comprises an MPEG video I-frame.

9. The method of claim 5 , further comprising:

if the video segment comprises an MPEG transport stream, determining whether the found picture start code is within a transport stream packet header; and

if the found picture start code is within the transport stream packet header, finding another picture start code in the video segment.

10. A method of finding, within a video segment to be presented at a non-standard speed for display, a Packetized Elementary Stream (PES) header in a Motion Picture Experts Group (MPEG) video stream organized as a series of four-byte double-words, the method performed by a video output device, the method comprising:

at a current double-word of the video stream, if the seven most significant bits of the least-significant byte are not zero, proceeding to the next double-word of the video stream to find a header;

if the seven most-significant bits of the least-significant byte are zero, determining if a header start code begins within the current double-word, wherein the start code comprises a four-byte sequence of 00 00 01 00, in hexadecimal;

if the start code begins within the current double-word, designating the current double-word as the start of a header; and

if the start code does not begin with the current double-word, proceeding to the next double-word of the video stream to find a header.

11. The method of claim 10 , wherein determining if the start code begins within the current double-word comprises:

if the current double-word comprises the start code, designating the most-significant byte of the current double-word as the beginning of the start code;

else if the three least-significant bytes of the current double-word comprise the first three bytes of the start code, and if the most-significant byte of the next double-word comprises the last byte of the start code, designating the second most-significant byte of the current double-word as the beginning of the start code;

else if the two least-significant bytes of the current double-word comprise the first two bytes of the start code, and if the two most-significant bytes of the next double-word comprise the last two bytes of the start code, designating the second least-significant byte of the current double-word as the beginning of the start code;

else if the least-significant byte of the current double-word comprises the first byte of the start code, and if the three most-significant bytes of the next double-word comprise the last three bytes of the start code, designating the least-significant byte of the current double-word as the beginning of the start code;

else continuing the determining operation at the next double-word.

12. The method of claim 10 , further comprising:

if the video stream comprises an MPEG transport stream, determining whether the designated start code is located within a transport stream packet header; and

if the designated start code is located within the transport stream packet header, proceeding to finding a start code beginning after the location of the designated start code.

13. The method of claim 12 , wherein determining whether the designated start code is located within a transport stream packet header comprises:

finding the start of a most recent transport stream packet header prior to the location of the designated start code; and

determining whether designated start code is located within the most recent transport stream packet header.

14. A video content device, comprising:

a video output interface configured to stream video frames of a video segment for presentation to a user; and

control circuitry configured to:

while streaming the video frames of the video segment via the video output interface, receive a command to present the video segment at an alternative speed by presenting selected video frames of the video segment via the video output interface; and

where in response to receiving the command, the control circuitry is further configured to:

for a first video frame to be presented at the alternative speed, initialize a frame count to one; and

for each of a plurality of next video frames to be presented via the video output interface during presentation at the alternative speed:

generate a time offset relative to a starting time within the video segment, wherein the time offset comprises a value equal to the frame count multiplied by a first value and a second value, wherein the first value comprises a length of time for which each selected video frame is to be presented via the video output interface, and wherein the second value comprises a ratio of the alternative speed relative to a normal presentation rate;

select a next video frame of the video segment corresponding to the time offset within the video segment, wherein the selected next video frame follows a plurality of unselected video frames;

output the selected next video frame via the video output interface for presentation; and

increment the frame count,

wherein the process of generating the time offset, selecting the next video frame, outputting the selected next video frame, and incrementing the frame count continues until one of an end of the video segment and a return to a standard speed of presentation.

15. The video content device of claim 14 , wherein:

the alternative speed comprises one of a forward presentation rate faster than the normal presentation rate, and a reverse presentation rate faster than the normal presentation rate.

16. The video content device of claim 14 , wherein:

the starting time comprises the current time within the video segment when the command is received.

17. The video content device of claim 14 , further comprising:

a user interface configured to receive user input;

wherein the user input comprises the command.

18. The video content device of claim 14 , further comprising:

data storage configured to store a video file comprising the video segment;

wherein the control circuitry is configured to select the next video frame of the video segment corresponding to the time offset by determining a data position within the video file corresponding with the time offset based on a total size of the video file and a total time length associated with the video file.

19. The video content device of claim 14 , further comprising:

data storage configured to store a video file comprising the video segment;

wherein the control circuitry is configured to select the next video frame of the video segment corresponding to the time offset by determining a data position within the video file corresponding with the time offset based on a data set relating each of a plurality of time values with each of a plurality of data offsets, wherein each of the data offsets indicates an offset from the start of the video file corresponding with its associated time value from the start of the video file.

20. The video content device of claim 14 , wherein:

the next video frame starts with a picture start code that comprises a four-byte data sequence of 00 00 01 00, in hexadecimal;

the video segment is stored as a sequence of four-byte double-words, wherein each double-word is ordered from most-significant byte to least-significant byte; and

the control circuitry is configured to find the picture start code for the next video frame, beginning at one of the double-words of the video segment:

if the seven most-significant bits of the least-significant byte of a current double-word are not zero, continuing to a next double-word of the video segment to find the picture start code;

if the seven most-significant bits of the least-significant byte of the current double-word are zero, determining if the picture start code begins within the current double-word;

if the picture start code begins within the current double-word, designating the current double-word as the start of the video frame; and

if the picture start code does not begin within the current double-word, continuing to the next double-word of the video segment to find the picture start code.

Assignments (6)
SECURITY INTEREST Recorded Nov 30, 2021
From: DISH BROADCASTING CORPORATION; DISH NETWORK L.L.C.; DISH TECHNOLOGIES L.L.C.
To: U.S. BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 058295/0293 →
CONVERSION Recorded Aug 7, 2018
From: ECHOSTAR TECHNOLOGIES L.L.C.
To: DISH TECHNOLOGIES L.L.C.
Reel/Frame 046737/0610 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2017
From: ECHOSTAR UK HOLDINGS LIMITED
To: ECHOSTAR TECHNOLOGIES INTERNATIONAL CORPORATION
Reel/Frame 041672/0080 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2017
From: ECHOSTAR TECHNOLOGIES INTERNATIONAL CORPORATION
To: ECHOSTAR TECHNOLOGIES L.L.C.
Reel/Frame 041674/0954 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2014
From: ELDON TECHNOLOGY LIMITED
To: ECHOSTAR UK HOLDINGS LIMITED
Reel/Frame 034650/0050 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2010
From: THORNBERRY, KEVIN; HOWE, CHRIS
To: ELDON TECHNOLOGY LIMITED
Reel/Frame 024658/0354 →