Patent ID: 12217772

DETAILED DESCRIPTION

Various implementations of the present disclosure describe devices, systems, and processes for reducing interruptions to content and/or display bar due to a PTSrs event for an MPEG transport stream and/or other data stream wherein an identification of data packets within the given data stream resets when a maximum PTS has been reached.

As discussed above, a data stream for a given “content” (as described below) may include a sequence of timestamped packets, where the timestamp increase from a minimum value, such as a PTSmin, until a maximum allowed number, such as PTSmax value, is reached. The numbering then restarts, typically at or about the PTSmin value, and continues incrementing therefrom until the data packets for the given content have been timestamped. The content, as timestamped, may be temporarily stored, such as using data buffering operations, semi-permanently stored, such as in a data storage device whose contents are accessible until a reset, power-off, power-down, channel change, or other storage clearing triggering operation occurs, or in a permanent non-transient data storage medium, such as a compact disc, flash memory device, hard-drive, on the “Cloud” (as described below), or otherwise.

“Data” (which is also referred to herein as a “computer data” and “data packet(s)”) refers to any representation of facts, information or concepts in a form suitable for processing by one or more electronic device processors and which, while and/or upon being processed, cause or result in an electronic device or other device to perform at least one function, task, operation, provide a result, or otherwise. Data may exist in a transient and/or non-transient form, as determined by any given use of the data.

An “Instruction” (which is also referred to herein as a “computer instruction”) refers to a non-transient processor executable instruction, associated data structure, sequence of operations, program modules, or the like. An instruction is defined by an instruction set. It is commonly appreciated that instruction sets are often processor specific and accordingly an instruction may be executed by a processor in an assembly language or machine language format that is translated from a higher level programming language. An instruction may be provided using any form of known or later arising programming; non-limiting examples including declarative programming, imperative programming, functional programming, procedural programming, stack based programming, object-oriented programming, and otherwise.

“Processor” refers to one or more known or later developed hardware processors and/or processor systems configured to execute one or more computer instructions, with respect to one or more instances of data, and perform one or more logical operations. The computer instructions may include instructions for executing one or more applications, software engines, and/or processes configured to perform computer executable operations. Such hardware and computer instructions may arise in any computing configuration including, but not limited to, local, remote, distributed, blade, virtual, or other configurations and/or system configurations. Non-limiting examples of processors include discrete analog and/or digital components that are integrated on a printed circuit board, as a system on a chip (SOC), or otherwise; Application specific integrated circuits (ASICs); field programmable gate array (FPGA) devices; digital signal processors; general purpose processors such as 32-bit and 64-bit central processing units; multi-core ARM based processors; microprocessors, microcontrollers; and the like. Processors may be implemented in single or parallel or other implementation structures, including distributed, Cloud based, and otherwise.

“Content” refers to any information that may be presented, using a suitable presentation device, to a user in a humanly perceptible format. Non-limiting examples of content include videos, television programs, audio programs, speeches, concerts, gaming images and graphics, or otherwise. Content may include, for example and not by limitation, one or more of sounds, images, video, graphics, gestures, or otherwise. The content may originate from any source, including live and/or recorded, augmented reality, virtual reality, computer generated, or otherwise. The content may be presented to a given user using any “client” (as described below). Content may be made available by a producer, publisher, distributor, a user, or other source of such content. Content includes one or more “segments” and one or more “elements.” Content may be provided for presentation, to a user or otherwise, in one or more data packets, data streams, or otherwise.

A “computer engine” (or “engine”) refers to a combination of a “processor” (as described below) and “computer instruction(s)” (as defined below). A computer engine executes computer instructions to perform one or more logical operations (herein, a “logic”) which facilitate various actual (non-logical) and tangible features and function provided by a system, a device, and/or combinations thereof.

“Substantially simultaneous(ly)” means without incurring a greater than expected and humanly perceptible delay between a first event or condition, such as a presentation of content obtained from one or more first data packets, and a presentation of a second content obtained from one or more second data packets. Substantial simultaneity may vary in a range of quickest to slowest expected delay to longer delay. It is to be appreciated that the subject and acceptable threshold of “substantial simultaneity” is also distance, data processing, and data communication capabilities dependent. For example, content provided in data packets over gigabit Ethernet capable local area network (LAN) connections may have a shorter acceptable delay period (and a more stringent substantially simultaneous requirement) than content presented over a 3G network, where data communications are knowingly slower and thus a given (longer) delay period may satisfy a subject substantially simultaneous threshold.

“Cloud” refers to cloud computing, cloud storage, cloud communications, and/or other technology resources which a given user does not actively manage or provide. A usage of a Cloud resource may be private (limited to certain users and/or uses), public (available for many users and/or uses), hybrid, dedicated, non-dedicated, or otherwise. It is to be appreciated that implementations of the present disclosure may use Cloud resources to provide for processing, storage and other functions related to facilitating live cell phone watch parties.

“Module” recites definite structure for an electrical/electronic device that is configured to provide at least one feature and/or output signal and/or perform at least one function including the features, output signals and functions described herein. Such a module may provide the one or more functions using computer engines, processors, computer instructions and the like. When a feature, output signal and/or function is provided, in whole or in part, using a processor, one more software components may be used and a given module may be include a processor configured to execute computer instructions. A person of ordinary skill in the art (a “POSITA”) will appreciate that the specific hardware and/or computer instructions used for a given implementation will depend upon the functions to be accomplished by a given module. Likewise, a PHOSITA will appreciate that such computer instructions may be provided in firmware, as embedded software, provided in a remote and/or local data store, accessed from other sources on an as needed basis, or otherwise. Any known or later arising technologies may be used to provide a given module and the features and functions supported therein.

“Client” refers to devices used to present content in a humanly perceptible format. A client may include and/or be communicatively coupled to one or presentation devices, such as a display device, audible output device, or otherwise. Non-limiting examples of devices that may be configured to operate as a client, by executing appropriate computer instructions on one or more data packets, include smart phones, smart televisions, tablet computing devices, lap-top computers, desk-top computers, gaming consoles, cable/satellite set-top-boxes (STB), 10-Foot presentation devices, and others. Any known or later arising device configured and/or configurable to present content PTS timestamped in data packets may be used as a client.

“Coupling” refers to establishment of a communications link between two or more elements of a given system. A coupling may utilize any known and/or later arising communications and/or networking technologies, standards, protocols or otherwise. Non-limiting examples of such technologies include packet switch and circuit switched communications technologies, such as and without limitation, Wide Area Networks (WAN), such as the Internet, Local Area Networks (LAN), Public Switched Telephone Networks (PSTN), Plain Old Telephone Service (POTS), cellular communications networks such as a 3G/4G/5G or other cellular network, Internet of Things (IoT) networks, Cloud based networks, private networks, public networks, or otherwise. One or more communications and networking standards and/or protocols may be used including, without limitation, the TCP/IP suite of protocols, the Extensible Message and Presence Protocol (XMPP), VOIP, Ethernet, Wi-Fi, CDMA, GSM/GRPS, TDMA/EDGE, EV/DO, WiMAX, SDR, LTE, MPEG, and others.

A coupling may include use of physical data processing and communication components. A coupling may be physically and/or virtually instantiated. Non-limiting examples of physical network components include data processing and communications components including computer servers, blade servers, switches, routers, encryption components. decryption components, and other data security components, data storage and warehousing components, and otherwise. Any known or later arising physical and/or virtual data processing and/or communications components may be utilized for a given coupling.

“Program” refers to a collection of related content, provided in multiple data packets. Non-limiting examples of a program include a movie, content for a sporting or other event (such as a football game), on-line gaming content, and others.

“Timestamped” and “timestamping” refers to the ordering of data packets in a numerical sequence based upon when content in a given data packet is to be presented to a user during a presentation of a program. PTS is one non-limiting implementation of timestamping of data packets. Other timestamping implementations may be used in accordance with an implementation of the present disclosure.

As shown inFIGS.1A-1C, a “data stream”100(e.g., a sequence of data packets for a given one or more content, such as an MPEG transport stream), includes a start data packet (“SDP”)102and an end data packet (“EDP”)104. The SDP102and EDP104may identify data packets in a given program that coincide with or are different than a recognized given starting or ending portion of the program For example, a data stream100may begin in the middle of a program (e.g., after a first kick-off of a football game) and not at a start of the program (e.g., a pre-game coin-toss, or the like).

During the encoding of a program, as captured by a suitable device, into one or more data packets, the data packets are provided in a data stream100as one or more number ordered packets, such as with a PTS timestamp. As discussed above, the PTS is typically a fixed length of bits, provided with metadata associated with data packets in the data stream. Given the fixed length, a PTSrs106event may occur during the program. Typically, a program may experience only one, if any PTSrs106events. But programs spanning multiple days may experience multiple PTSrs106events.

When a PTSrs106occurs, the data stream100will include a data packet timestamped with a PTSmax value (herein, a “max data packet” (“MDP”)) and another data packet timestamped with a PTSLO value, which may be substantially equal to a PTSmin value (herein, a “next data packet” (“NDP”)). The NDP follows, in the data stream100, the MDP. For an MPEG implementation, a MDP and an may identify MPEG encoded I-frames in the given data stream100. Accordingly, one or more intermediary frame, such as MPEG encoded B frames and P frames, may be provided in the data stream100between the MDP and the NDP. It is to be appreciated that a PTSLO and/or a PTSmax value associated with given data packet in a given data stream100may vary by implementation, frame sequencing (e.g., whether an NDP or MDP is an MPEG I-frame, a B-frame, or a P-frame, or the like). For an implementation, an NDP includes a PTSLO that is equal to or greater than the PTSmin value and less than the PTSmax value. An MDP includes a timestamp that is equal to or less than the PTSmax value and greater than the PTSmin value.

A prior data packet (“PDP”) refers to data packet in a given data stream100occurring prior to an MDP. A later data packet (“LDP”) refers to data packets in a given data stream100occurring after an NDP. A PDP may have a timestamp (“PTSmax-U”) that is less than a PTSmax value and an LDP may have a timestamp (“PTSLO+U”) which is greater than a PTSLO value and/or a PTSmin value. For an implementation, a logical relationships between the PTSmax-U, PTSmax, PTSLO, and PTSLO+U may be identified mathematically as:
PTSmax-U<PTSmax;
PTSmax+U<PTSmax; andwhere U is an integer and U={PTSLO+1 to PTSmax−1}.

For at least one implementation, a PTSLO value may have PTSmin value of zero (0) and a PTSmax value may be a value of two raised to a given number of bits (“P”) provided in a PTS data field of a header for a given data packet. For implementations compliant with the MPEG standards, P=33 (a thirty-three (33) bit field is specified in the header information provided with MPEG-1/2/4 data packets). For such an implementation, the PTSmax value equals two (2) raised to the P power—mathematically, PTSmax=2Por 233. Other values may be used in other implementations for PTSmin and/or PTSmax. Implementations of the present disclosure may utilize different value ranges for PTSmin and PTSmax to timestamp data packets. The value range utilized may be limited by a length of a field used in a given data packet to identify a relationship of the given data packet to one or more other data packets for a given program, data stream, grouping of data streams, or otherwise.

In an implementation and when a PTSrs occurs, an SDP102and an EDP104may be respectively timestamped with a PTS startin value (a “PTSS”) and a PTS ending value (“PTSE”). For an implementation, a logical relationship between PTSS, PTSE, PTSLO, and PTSmax may be mathematically expressed as follows:
PTSS≥PTSmin;
PTSE≥PTSLO;
PTSS≤PTSmax;
PTSE≤PTSmax;
PTSS=2N; whereN<P;
PTSE=2M; whereM<P; and
N≠P.

In an implementation and when a PTSrs106does not occur in a given data stream100, logical relationships between PTSS, PTSE, PTSLO, and PTSmax may be expressed mathematically as follows:
PTSLO≤PTSS;
PTSS<PTSE; and
PTSE≤PTSmax.

In the rare instance where a given data stream includes more than 2′ data packets, an implementation of the present disclosure may logically separate or identify the data packets in two or more linked data files or other data structures.

As shown inFIGS.1C and1naccordance with at least one implementation of the present disclosure, SDP, EDP, PST-S, PTSE, PTSmax and PTSLO values for a given data stream100may be associated with an index value. For example, in a given data stream100where an PTSrs106occurs, an index value “A” may be associated with a PTSS timestamped data packet, an index value “B” may be associated with a PTSmax timestamped data packet, an index value “C” may be associated with a PTSLO timestamped data packet, and an index value “D” may be associated with a PTSE timestamped data packet. It is to be appreciated that the index values A-B-C-D may be associated with a number or other logical sequential identifier. For at least one implementation, the index values A-B-C-D are integers and logical relationships therebetween may be mathematically expressed as:
A<B<C<D.

The index values may be generated and associated with the various data packets as they are received, by a client, in the given data stream100. The index values may be stored in loop over index file, or the like.

InFIG.1D, a non-limiting example of a loop-over index file is shown. As shown and for at least one implementation, a PTSS value may be associated with the given parameters, for example, the parameter PTSS may be associated with a first index value (A) and a first data packet, received in the given data stream100. The first data packet may be further timestamped with a first value; for a non-limiting example, a PTS value of 8,580,754,588 is shown. A second parameter, PTSE, may be associated with a fourth, or “last,” index value (D_ for a last data packet, in the given data stream100. As shown for this non-limiting example, the PTSE data packet may be timestamped with a PTS value of 9,09,996. A third parameter, PTSmax may be associated with the index value (B) for an intermediate data packet in the given data stream100. As shown for this non-limiting example, the PTSmax data packet may be timestamped with a PTS value of 8,589844,588. Last, a fourth parameter, PTSLO may be associated with a (C) index value for another intermediate data packet, following the PTSmax designated data packet. As shown for this non-limiting example, the PTSLO data packet may be timestamped with a PTS value of 89,996.

Based on these sequences of PTS values, a client may experience difficulty performing trick-play operations because of the discontinuities between the PTSS, PTSmax, PTSLO and PTSE timestamps.

In accordance with at least one implementation, trick-play operation difficulties can be avoided by utilizing the index values in the loop-over index table to identify a sequence of data packets to present to a user, via a client. The index values desirably increase from a minimum value associated with PTSS to a maximum value associated with PTSE and PTSrs events occurring therebetween do not disrupt such progression from minimum to maximum index values. Accordingly, per at least one implementation of the present disclosure, content progressions, including those occurring during trick-play operations and otherwise, may proceed in an ordered sequence and regardless of the timestamp (e.g., a PTS value) associated with a given data packet in a data stream100.

For at least one implementation, a loop-over index file may be populated with number of index values, for any number of PTS values, provided when a PTSrs occurs at least one index value for a data packet occurring before a PTSmax data packet and an index value for a data packet occurring after PTSLO data packet are included in the loop-over index table. It is further to be appreciated that more than four index values may be used. As the number of PTS values indexed values increases over four, the precision of trick-play operations may increase—provided on the number of data packets occurring before and/or after a PTSrs are indexed. For at least one implementation, a loop over index file may include index values, and associations of PTS values, for I frame encoded data packets in a given data stream100, I and P frames, I, B and P frames or otherwise. The generation of a loop-over index file may occur during receipt of the given data stream100or thereafter, such as when a trick-play operation is requested by a client.

InFIG.2and for at least one implementation of the present disclosure, a system200for reducing content and/or display bar interruptions otherwise arising due to a PTSrs includes one or more clients202, such as client1202(1) and client Q202(Q). The client(s)202may be communicatively coupled by respective first couplings220to a router206. The first couplings220may utilize any known or later arising communications technologies including wired and wireless technologies. For at least one implementation, the first coupling(s)220may be formed using a Local Area Network (LAN) and/or other communications technologies.

The router206may be further coupled by a second coupling222to a server208. For at least one implementation, the server208may one or more other devices and/or combinations thereof configured to provide content (as described below) to one or more clients202for presentation of such content to a user at a then occurring or a later arising time.

As shown inFIG.3, the server208may include a server processor302executing one or more computer engines including a PTSrs engine303, a server data store304, a server power supply306, a server user interface308, a server communications interface310, and the like.

For at least one implementation, the server208may be a set-top-box (STB), such as one provided by a direct broadcast satellite (DBS) provider such as DISH Network and DirecTV, a cable provider, such as Comcast and Cox Communications. The server208may include and/or be a 10-foot device, such as a Roku Inc. ROKU™ device, an Apple Inc., APPLETV™ device, a Google Inc. CHROMECAST™ device, or the like. For at least one implementation, the server208may include a streaming application such as a NETFLIX™ application, a PARAMOUNT+™ application, a YOUTUBE™ application, or the like, or otherwise. It is commonly known that streaming applications and the like may be hosted on various forms of computing devices, with non-limiting examples including smartphones, tablet computing devices, laptop computers, STBs, “smart” televisions, appliances and the like, and otherwise. In short, any known and/or later arising computing devices configured to facilitate that providing of content to a client202may be used as a server208for at least one implementation of the present disclosure.

Server Processor302

The server208may include a server processor302(herein, also identified as a server central processing unit (CPU) or “server CPU”). Any known or later arising processor may be used. The server processor302may be provided by a processing device capable facilitating one or more logics by executing one more computer instructions with respect to data. The PTSrs engine303may be executed by one or more threads on the server processor302, or otherwise. The server processor302may include one or more physical components configured for such data processing operations. Any known or later arising technologies may be utilized in conjunction with an implementation of the present disclosure to facilitate the server processor302and the PTSrs engine303.

The server208may instantiate one or more computer engines as one or more threads operating on a computing system having a multiple threaded operating system, such as the WINDOWS 10 operating system, LINUX, APPLE OS, ANDROID, and others, as an application program on a given device, as a web service, or otherwise. An Application Program Interface (API) may be used to support an implementation of the present disclosure. The server208may be provided in the virtual domain and/or in the physical domain. The server208may be associated with a human user, a machine process executing on one or more computing devices, an API, a web service, instantiated on the Cloud, distributed across multiple computing devices, or otherwise. The server208may be any electronic device configurable to communicate data using a network, directly or indirectly, to another device, to another server, or otherwise.

The server processor302may be communicatively coupled, by a server data bus314or similar structure, to other components of the server208including, but not limited to, a server data store304, which may also be referred to as a “computer readable storage medium.”

PTSrs Engine303

With reference toFIG.4, the PTSrs engine303manages indexing of data packets to generate a loop over index file and use of the loop over index file for content presentation during trick-play operations, and (optionally) non-trick-play operations. For at least one implementation, operations of the PTSrs engine303are illustrated inFIG.4herein (as further described below). Such operations are non-limiting and for at least one implementation of the present disclosure. Other operations, sequences thereof, combinations, and/or permutations thereof may be used in accordance with other implementations of the present disclosure. For at least one implementation, the PTSrs engine303may be instantiated in a client202, where the client includes a processor configured to provide a PTSrs engine303.

Server Data Store304

The server data store304may be a storage, multiple storages, or otherwise. The server data store304may be configured to store loop over index files, data packets, and other data. The server data store304may be provided locally with the server208or remotely, such as by a data storage service provided on the Cloud, and/or otherwise. Storage of data, including but not limited to loop over data files and other data may be managed by a storage controller (not shown) or similar component. It is to be appreciated such storage controller manages the storing of data and may be instantiated in one or more of the server data store304, the server processor302, on the Cloud, or otherwise. Any known or later arising storage technologies may be utilized in conjunction with an implementation of the present disclosure to facilitate the server data store304.

Any known or later arising storage technologies may be utilized for the server data store304. Non-limiting examples of devices that may be configured for use as server data store304include electrical storages, such as EEPROMs, random access memory (RAM), Flash drives, and solid-state drives, optical drives such as DVDs and CDs, magnetic storages, such as hard drive discs, magnetic drives, magnetic tapes, memory cards, such as Compact Flash (CF), Secure Digital (SD) cards, Universal Serial Bus (USB) cards, and others.

Available storage provided by the server data store304may be partitioned or otherwise designated by the storage controller as providing for permanent storage and temporary storage. Non-transient data, computer instructions, or other the like may be suitably stored in the server data store304. As used herein, permanent storage is distinguished from temporary storage, with the latter providing a location for temporarily storing data, variables, or other instructions used for a then arising data processing operations. A non-limiting example of a temporary storage is a memory component provided with and/or embedded onto a processor or integrated circuit provided therewith for use in performing then arising data calculations and operations. Accordingly, it is to be appreciated that a reference herein to “temporary storage” is not to be interpreted as being a reference to transient storage of data. Permanent storage and/or temporary storage may be used to store transient and non-transient computer instructions, and other data.

Server Power Supply306

The server208may include a server power supply306. The server power supply306may include any known or later arising technologies which facilitate the use of electrical energy by the server208. Non-limiting examples of such technologies include batteries, power converters, inductive charging components, line-power components, solar power components, and otherwise.

Server User Interface308

The server2208may include a server user interface308. The server user interface308may include any known or later arising human to device interface components, processes, and technologies. Non-limiting examples of interface components include audible input/output (“I/O”) interfaces for use with audio I/O devices316, visual I/O interfaces for use with visual I/O devices318, and the like.

For at least one implementation, an audio I/O interface may support a receiving and/or presenting of audible content. Such audible content (which is also referred to herein as being “audible signals”) may include spoken text, sounds, or any other audible information. Such audible signals may include one or more of humanly perceptible audio signals, where humanly perceptible audio signals typically arise between 20 Hz and 20 KHz. The range of humanly perceptible audio signals may be configurable to support an audible range of a given individual user.

An audio I/O interface generally includes hardware and computer instructions (herein, “audio technologies”) which supports the input and output of audible signals between a user and a device, such as the server208or a client202. Such audio technologies may include, but are not limited to, noise cancelling, noise reduction, technologies for converting human speech to text, text to speech, translation from a first language to one or more second languages, playback rate adjustment, playback frequency adjustment, volume adjustments and otherwise.

An audio I/O interface may use one or more microphones and speakers to capture and present audible signals respectively from and to a user. Such one or more microphones and speakers may be provided by a device itself or otherwise. For example, earbuds may be communicatively coupled to a smartphone, with the earbuds functioning as an audio I/O interface and capturing and presenting audio signals as sound waves to and from a user, while the smartphone functions as a client202or server208.

A visual I/O interface generally includes hardware and computer instructions (herein, “visible technologies”) which supports the input by and output of visible signals to a user using a client202or a server208. Such visible technologies may include technologies for converting images (in any spectrum range) into humanly perceptible images, converting content of visible images into a given user's perceptible content, such as by character recognition, translation, playback rate adjustment, playback frequency adjustment, and otherwise.

A visual I/O interface may be configured to use one or more visual I/O devices318, such as the internal display (not shown) and/or external display (not shown), that are configured to present visible signals to a user. A visual I/O interface may be configured to use one or more image capture devices. Non-limiting examples include lenses, digital image capture and processing software and the like. Accordingly, it is to be appreciated that any existing or future arising visual I/O interfaces, devices, systems and/or components may be utilized.

Server Communications Interface310

The server208may include a server communications interface310. The server communications interface310may be configured to use any known or later arising communications and/or networking technologies which facilitate coupling of the server to system200components. One or more data ports312(which are also commonly referred to an input/output interfaces, cards, or the like) may be used to facilitate coupling of the server208with one or more system200components. Such communication interfaces are well-known in the art and non-limiting examples include Ethernet cards, USB and storage medium interface cards, radio frequency transceivers, and others. For at least one implementation, the server communications interface310may be configured to couple with one or more antennas320, such as a DBS antenna, a STARLINK™ ground station, a broadcast signal antenna (which may be colloquially often referred to as “rabbit ears”), and the like.

Referring again toFIG.2, the server208may be coupled by a third coupling224to the Internet212, as commonly facilitated by an Internet Service Provider (ISP) and/or a distributor210(herein, individually and collectively a “distributor”), such as a DISH Network, or the like. The distributor210may be further coupled, by a fourth coupling226to one or more streaming content sources214, such as one associated with one or more of the above described services, such as APPLETV, SLINGTV, YOUTUBE, or otherwise. The distributor210may be further coupled, by a fifth coupling228to one or more remote content sources216. Non-limiting examples of remote content sources include DBS satellites, cable systems, and the like. The server208may also and/or alternatively be coupled to one or more sixth couplings230to one or more remote content sources216. The server208may also be coupled by a seventh coupling232to one or more local content sources218, with non-limiting examples including digital-versatile-disc (DSC) players, gaming systems, or the like.

As shown inFIG.4and in accordance with at least one implementation of the present disclosure, an PTSrs engine303may be configured to implement a process for reducing content and/or display bar interruptions otherwise arising due to a PTSrs event occurring in a given data stream. As discussed above the PTSrs engine303may be configured, on the server208and/or one or more clients202, to generate a loop over index file by associating an index value with a PTS value, as provided in a header for a given data packet (e.g., for the non-limiting example of an MPEG encoded data packet). The index value may also be associated with a parameter, such as a PTSS, PTSE, a PTSmax and/or a PTSLO (as shown, e.g., inFIG.1D). The index value may also be associated with other data packets, such as a PDP and/or an LDP data packet, as shown, e.g., inFIG.1B. Using the data provided in an index data file, the PTSrs engine303, as instantiated in the server208and/or in a client202, may direct presentation of data packets in a given data stream100in a given sequence (e.g., as sent and/or specified in and/or by a data stream100or otherwise) during normal and trick-play operations and without discontinuities occurring in such presentations.

The PTSrs engine303may be instantiated at any time, such as while a data stream100is being received by a server and/or client202. For at least one implementation, the PTSrs engine303is instantiated on those clients202and/or the server208at which a PTSrs event occurs.

As shown inFIG.4, for at least one implementation, the PTSrs engine303may be instantiated when a trick-play operation, such as a “play/seek” request is received, by a given client202and/or server208, as illustrated by Operation400.

As per Operation402, the process may include determining whether PTSrs info is available. Such query may include determining whether a loop over index file has already been generated. If the result of the query is no, the process may include generating a loop over index file, as per Operation404. Otherwise, the process may proceed with Operation406.

As per Operation404, the process of generating a loop over index file may include searching metadata for the data packets received in a given data stream100for a start PTSS data packet, a PTSE data packet, and for a PTSrs event occurrence and the PTSmax and PTSLO data packets surrounding the PTSrs event. For a live data stream, the PTSE data packet may not be available until received at a later time. Accordingly, data packets received may be designated as a PDP packet until a PTSrs event occurs, and thereafter, as an LDP, with the last received LDP, as of a given time, being designated as the PTSE until a subsequent data packet, if any, is received. When the full data stream is received, as determined in view of an end of a program, a cessation of the data stream or otherwise, the last received LDP may be designated as the PTSE.

As per Operation406, the process may include the PTSrs engine303calculating a “new point” (a “PTSN”) at which to retrieve a data packet for presentation during a trick-play operation. As used herein, a PTSN refers to a timestamp but may refer to any other identifier used to order a sequence presentation of content provided in two or more data packets. The calculating of the PTSN may be dependent upon the trick-play operation requested as the PTSN may occur before or after a PTSrs. For example, as shown inFIG.5, a PTSN may occur at a point “Q(1)” occurring before a PTSrs106or at a point “Q(2)” occurring after a PTSrs106. For a given trick-play operation, a PTSN may be calculated based on the PTSS value, as indicated by Index A in a loop-over index file generated per Operation404or otherwise. For example, the PTSN may be determined based on the PTSS value, a point Q to which to seek, and the increment rate Z. More specifically, for at least one implementation, PTSN may be determined as follows:For a forward seek: PTSN=PTSS+(Q*Z)For a backward seek:
If: PTSS>Q*Z,
Then: PTSN=PTSS−(Q*Z);
Else: PTSN=PTSmax+PTSS−(Q*Z).

For example, a request to forward seek a data packet/content occurring thirty minutes (30 min) into a data stream (when the data stream is encoded using the MPEG standards) would result in a PTSN of 162,000,000 (assuming PTSS=0).

As per Operation408, the process may include determining whether PTSN is greater than PTSmax. As discussed above, for at an MPEG implementation, PTSmax is determined based upon the number of bits utilized in the MPEG standard—233. When PTSN<PTSmax, a loop over does not occur within the seek interval and the process proceeds to Operation410. When PTSN>PTSmax, the process proceeds to Operation412.

As per Operation410, the process may include updating the PTSN, to an updated PTSN (herein, PTSN2) as determined per Operation406, as a function of PTSLO, where PTSN2=PTSN−PTSLO. The process then proceeds to Operation412.

As per Operation412, the process may include determining whether a PTSrs event exists. For at least one implementation, Operation412may be performed by reviewing the loop over index file for the presence of a PTSmax parameter therein. If a PTSrs event does not exist, the process proceeds to Operation414. If a PTSrs event exists, the process proceeds to Operation416.

As per Operation414, the process may include searching for the PTSN timestamped data packet between the PTSS and PTSE data packets. The loop over index file may be used to further facilitate such operation when one or more PDPs are indexed. The process then proceeds to Operation422.

As per Operation416, the process may include determining whether PTSN<PTSS. If no, the process proceeds to Operation418. If yes, the process proceeds to Operation420.

As per Operation418, the process may include searching for the PTSN timestamped data packet between the PTSS and PTSmax data packets. The loop over index file may be used to further facilitate such operation. The process then proceeds to Operation422.

As per Operation420, the process may include searching for the PTSN timestamped data packet between the PTSLO and the PTSE data packets. The loop over index file may be used to further facilitate such operation. The process then proceeds to Operation422.

As per Operation422, the process may include determining whether the program, and related transport stream, has ended. If no, the process may resume with Operation406. If yes, the process ends, as per Operation424.

It is to be appreciated that the operations described above and depicted inFIG.4are illustrative and are not intended herein to occur, for implementations of the present disclosure, in the order shown, in sequence, or otherwise. One or more operations may be performed in parallel and operations may be not performed, as provided for any given use of an implementation of the present disclosure.

For at least one implementation of the present disclosure, the PTSrs engine303may be configured to display, on a buffer bar on a presentation device, a current play position (“PTSP”) when PTSrs events occur for a given data stream. The PTSrs engine303may determine a current content position to present on a buffer bar using the following mathematical formula:
If: PSTN<PTSS
Then: PTSP=(PTSmax−PSTS)/Z)+Q/Z;
Else: PTSP=(PTSN−PTSS)/Z.

Although various embodiments have been described above with a certain degree of particularity, or with reference to one or more individual embodiments, those skilled in the art could make numerous alterations to the disclosed embodiments without departing from the spirit or scope hereof. The use of the terms “approximately” or “substantially” means that a value of an element has a parameter that is expected to be close to a stated value or position. As is well known in the art, there may be minor variations that prevent the values from being exactly as stated. Accordingly, anticipated variances, such as 10% differences, are reasonable variances that a person having ordinary skill in the art would expect and know are acceptable relative to a stated or ideal goal for one or more embodiments of the present disclosure. It is also to be appreciated that the terms “top” and “bottom”, “left” and “right”, “up” or “down”, “first”, “second”, “next”, “last”, “before”, “after”, and other similar terms are used for description and ease of reference purposes and are not intended to be limiting to any orientation or configuration of any elements or sequences of operations for the various embodiments of the present disclosure. Further, the terms “coupled”, “connected” or otherwise are not intended to limit such interactions and communication of signals between two or more devices, systems, components or otherwise to direct interactions; indirect couplings and links may also occur. Further, the terms “and” and “or” are not intended to be used in a limiting or expansive nature and cover any possible range of combinations of elements and operations of an implementation of the present disclosure. Other embodiments are therefore contemplated. It is intended that matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative of embodiments and not limiting. Changes in detail or structure may be made without departing from the basic elements of the present disclosure as defined in the following claims.