IP Library Patent Application 13223210
Patent Application
App. No. 13/223,210

SYSTEMS AND METHODS FOR ENCODING TRICK PLAY STREAMS FOR PERFORMING SMOOTH VISUAL SEARCH OF MEDIA ENCODED FOR ADAPTIVE BITRATE STREAMING VIA HYPERTEXT TRANSFER PROTOCOL

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 None
App. No.
13/223,210
Abstract

Systems and methods for performing smooth visual search of media encoded for adaptive bitrate streaming using trick play streams are disclosed. One embodiment of the invention includes transcoding a selected portion of the source video into a portion of trick play stream video for inclusion in a trick play stream using the source encoder, where the portion of trick play stream video is encoded at a lower frame rate and a lower resolution than the source video, writing the trick play stream to a separate container file using the source encoder, and adding an entry to an index that identifies the location of each frame in the portion of trick play stream video within the container file containing the trick play stream.

Claims (38)

1 . A method of encoding source video as a plurality of alternative streams and a trick play stream using a source encoder, the method comprising:

repeatedly selecting a portion of the source video using the source encoder;

transcoding the selected portion of the source video into a plurality of alternative portions of encoded video using the source encoder, where each alternative portion is encoded using a different set of encoding parameters and commences with an intra frame starting a closed group of pictures (GOP);

transcoding the selected portion of the source video into a portion of trick play stream video for inclusion in a trick play stream using the source encoder, where the portion of trick play stream video is encoded at a lower frame rate and a lower resolution than the source video;

writing each of the alternative portions of encoded video to a separate container file using the source encoder;

writing the trick play stream to a separate container file using the source encoder; and

adding an entry to an index that identifies the location of each frame in the portion of trick play stream video within the container file containing the trick play stream.

2 . The method of claim 1 , wherein transcoding a selected portion of the source video into a portion of trick play stream video further comprises transcoding the selected portion so that each frame is an IDR frame.

3 . The method of claim 1 , wherein the selected portions of source video are selected based upon their duration.

4 . The method of claim 3 , wherein the selected portions of source video each have a duration of two seconds.

5 . The method of claim 1 , wherein the container files containing the alternative streams and the trick play stream are Extensible Binary Markup Language (EBML) container files.

6 . The method of claim 5 , wherein:

the element of the EBML container file to which each alternative portion of encoded video is written is a Cluster element; and

each Cluster element to which each of the alternative portions of encoded video is written is assigned the same time code.

7 . The method of claim 6 , wherein the element of the EBML container file to which the portion of trick play stream video is written is a Cluster element.

8 . The method of claim 7 , wherein the frames of each portion of encoded video are contained within elements within the Cluster element.

9 . The method of claim 8 , wherein the first element that contains a frame in the Cluster element contains the intra frame.

10 . The method of claim 9 , wherein the first element that contains a frame is a BlockGroup element that contains a Block element, which specifies the time code attribute of the intra frame relative to the time code of the Cluster element.

11 . The method of claim 8 , wherein each frame in the portion of trick play stream video is an intra frame.

12 . The method of claim 11 , wherein each element containing a frame in the Cluster element is a BlockGroup element containing the portion of trick play stream video contains a Block element, which specifies the time code attribute of the intra frame relative to the time code of the Cluster element.

13 . The method of claim 12 , wherein adding an entry to an index that identifies the location of each frame in the portion of trick play stream video within the container file containing the trick play stream, further comprises adding the location of each BlockGroup element in the Cluster element containing the portion of trick play stream video to the index for the EBML container file containing the trick play stream.

14 . The method of claim 13 , further comprising packing the index for the EBML container file containing the trick play stream into the EBML container file containing the trick play stream.

15 . The method of claim 14 , wherein each index comprises a Cues element.

16 . The method of claim 15 , wherein:

each Cues element includes a CuePoint element that points to the location of the Cluster element containing the portion of trick play stream video within the EBML file containing the trick play stream; and

each CuePoint element comprises a plurality of elements that point to the BlockGroup elements within the Cluster element pointed to by the CuePoint element.

17 . The method of claim 5 , further comprising writing an element to each of the EBML container files specifying a set of encoding parameters.

18 . The method of claim 17 , wherein the set of encoding parameters includes at least one parameter selected from the group consisting of frame rate, frame height, frame width, sample, aspect ratio, maximum bitrate, and minimum buffer size.

19 . The method of claim 1 , further comprising creating a top level index file that identifies each of the container files containing the alternative streams used during normal playback of the encoded video and identifies the container file that includes the trick play stream used during visual search of the encoded video.

20 . A source encoder configured to encode source video as a plurality of alternative streams and a trick play stream, the source encoder comprising:

a processor configured to communicate with memory, the processor configured by a source encoder application stored in memory;

wherein the source encoder application configures the processor to:

repeatedly select a portion of the source video using the source encoder;

transcode the selected portion of the source video into a plurality of alternative portions of encoded video, where each alternative portion is encoded using a different set of encoding parameters and commences with an intra frame starting a closed group of pictures (GOP);

transcode the selected portion of the source video into a portion of trick play stream video for inclusion in a trick play stream using the source encoder, where the portion of trick play stream video is encoded at a lower frame rate and a lower resolution than the source video;

write each of the alternative portions of encoded video to a separate container file using the source encoder;

write the trick play stream to a separate container file using the source encoder; and

add an entry to an index that identifies the location of each frame in the portion of trick play stream video within the container file containing the trick play stream.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2013
From: DIVX, LLC
To: SONIC IP, INC.
Reel/Frame 031713/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2012
From: BRANESS, JASON; SOROUSHIAN, KOUROSH; VAN DER SCHAAR, AUKE SJOERD
To: DIVX, LLC
Reel/Frame 027569/0194 →