Patent Description:
Adaptive streaming is a popular means of non-traditional video delivery. Although there have been several advances, changing adaptively streamed content (e.g., from one stream or channel to another stream or channel) remains a cumbersome process in current implementations. As such, typical adaptive streaming techniques do not provide for a realistic or user-friendly "channel surfing" experience, thereby negatively impacting the quality of user enjoyment.

<NPL>, describes a predictive tuning method, which reduces channel zapping time by prejoining channels that are likely to be selected next, in addition to the currently watched channel.

The invention relates to an electronic device, as further defined in claim <NUM>, a computer readable medium, as further defined in claim <NUM>, a computer program, as further defined in claim <NUM>, and a method, as further defined in claim <NUM>, for effectuating fast channel changes in an adaptive streaming environment.

Advantages of the present invention include, but not limited to, facilitating a user-friendly channel surfing experience in an adaptive streaming environment that is similar to what is commonly encountered in existing TV broadcast environments. As one or more embodiments set forth herein allow rapid changing of adaptive streaming channels without bandwidth waste, unsatisactory viewing conditions that can result from changing streaming channels are mitigated. Further features of the various embodiments are as claimed in the dependent claims. Additional benefits and advantages of the embodiments will be apparent in view of the following description and accompanying Figures.

Embodiments of the present disclosure are illustrated by way of example, and not by way of limitation, in the Figures of the accompanying drawings in which like references indicate similar elements. It should be noted that different references to "an" or "one" embodiment in this disclosure are not necessarily to the same embodiment, and such references may mean at least one.

The accompanying drawings are incorporated into and form a part of the specification to illustrate one or more exemplary embodiments of the present disclosure. Various advantages and features of the disclosure will be understood from the following Detailed Description taken in connection with the appended claims and with reference to the attached drawing Figures in which:.

In the following description, numerous specific details are set forth with respect to one or more embodiments of the present patent disclosure. However, it should be understood that one or more embodiments may be practiced without such specific details. In other instances, well-known circuits, subsystems, components, structures and techniques have not been shown in detail in order not to obscure the understanding of the example embodiments. Accordingly, it will be appreciated by one skilled in the art that the embodiments of the present disclosure may be practiced without such specific components-based details. It should be further recognized that those of ordinary skill in the art, with the aid of the Detailed Description set forth herein and taking reference to the accompanying drawings, will be able to make and use one or more embodiments without undue experimentation.

Additionally, terms such as "coupled" and "connected," along with their derivatives, may be used in the following description, claims, or both. It should be understood that these terms are not necessarily intended as synonyms for each other. "Coupled" may be used to indicate that two or more elements, which may or may not be in direct physical or electrical contact with each other, co-operate or interact with each other. "Connected" may be used to indicate the establishment of communication, i.e., a communicative relationship, between two or more elements that are coupled with each other. Further, in one or more example embodiments set forth herein, generally speaking, an element, component or module may be configured to perform a function if the element is capable of performing or otherwise structurally arranged to perform that function.

As used herein, a network element or node may be comprised of one or more pieces of service network equipment, including hardware and software that communicatively interconnects other equipment on a network (e.g., other network elements, end stations, etc.), and is adapted to host one or more applications or services with respect to a plurality of subscribers. Some network elements may comprise "multiple services network elements" that provide support for multiple network-based functions (e.g., A/V media management, session control, QoS policy enforcement, bandwidth scheduling management, subscriber/device policy and profile management, content provider priority policy management, streaming policy management, and the like), in addition to providing support for multiple application services (e.g., data and multimedia applications). Subscriber end stations or client devices may comprise any device configured to execute, inter alia, at least one streaming client application (e.g., an ABR streaming client application) for receiving content from a streaming server or content provider. Accordingly, such client devices may include set-top boxes, PVR/DVRs, workstations, laptops, netbooks, palm tops, mobile phones, smartphones, multimedia phones, Voice Over Internet Protocol (VOIP) phones, mobile/wireless user equipment, high definition TV terminals, portable media players, location-aware subscriber equipment, gaming systems or consoles (such as the Wii®, Play Station <NUM>®, Xbox <NUM>®), etc., that may access or consume content/services provided over a content delivery network in accordance with one or more embodiments set forth herein. Further, the client devices may also access or consume content/services provided over broadcast networks (e.g., cable and satellite networks) as well as a packet-switched wide area public network such as the Internet via suitable service provider access networks. In a still further variation, the client devices or subscriber end stations may also access or consume content/services provided on virtual private networks (VPNs) overlaid on (e.g., tunneled through) the Internet.

One or more embodiments of the present patent disclosure may be implemented using different combinations of software, firmware, and/or hardware. Thus, one or more of the techniques shown in the Figures (e.g., flowcharts) may be implemented using code and data stored and executed on one or more electronic devices or nodes (e.g., a subscriber client device or end station, a network element, etc.). Such electronic devices may store and communicate (internally and/or with other electronic devices over a network) code and data using computer-readable media, such as non-transitory computer-readable storage media (e.g., magnetic disks, optical disks, random access memory, read-only memory, flash memory devices, phase-change memory, etc.), transitory computer-readable transmission media (e.g., electrical, optical, acoustical or other form of propagated signals - such as carrier waves, infrared signals, digital signals), etc. In addition, such network elements may typically include a set of one or more processors coupled to one or more other components, such as one or more storage devices (e.g., non-transitory machine-readable storage media) as well as storage database(s), user input/output devices (e.g., a keyboard, a touch screen, a pointing device, and/or a display), and network connections for effectuating signaling and/or bearer media transmission. The coupling of the set of processors and other components may be typically through one or more buses and bridges (also termed as bus controllers), arranged in any known (e.g., symmetric/shared multiprocessing) or heretofore unknown architectures. Thus, the storage device or component of a given electronic device or network element may be configured to store code and/or data for execution on one or more processors of that element, node or electronic device for purposes of implementing one or more techniques of the present disclosure.

Referring now to the drawings and more particularly to <FIG>, depicted therein is an example streaming network environment <NUM> including a content delivery network or content distribution network (CDN) <NUM> coupled to an adaptive streaming server system <NUM> wherein one or more embodiments of the present patent application may be practiced. For purposes of the present patent application, CDN <NUM> may comprise an overlay network architected for high-performance streaming of a variety of digital assets or program assets as well as services (hereinafter referred to as "media content") to subscribers using one or more Internet-based infrastructures, private/dedicated infrastructures or a combination thereof. In general, the terms "media content" or "content file" (or, simply "content") as used in reference to at least some embodiments of the present patent disclosure may include digital assets and program assets such as any type of audio/video content or program segment, streaming or static (e.g., recorded over-the-air free network television (TV) shows or programs, pay TV broadcast programs via cable networks or satellite networks, free-to-air satellite TV shows, IPTV programs, etc.), Over-The-Top (OTT) and video-on-demand (VOD) or movie-on-demand (MOD) shows or programs, time-shifted TV (TSTV) content, as well as other content assets provided by content publishers, owners or providers, including but not limited to software files, executable computer code or programs, online electronic games, Internet radio shows/programs, entertainment programs, educational programs, movies, music video programs, and the like, that may be delivered using any known or heretofore unknown streaming technologies. Further, various programs or content files provided via streaming may be arranged as a collection or assembly of channels that are specific to different subscribers, wherein different channels may comprise media content from one or more content sources or originators.

By way of illustration, content may be delivered via CDN <NUM> using adaptive bit rate (ABR) streaming techniques and may be encoded to support Microsoft® Silverlight® Smooth Streaming, HTTP streaming (for instance, Dynamic Adaptive Streaming over HTTP or DASH, HTTP Live Streaming or HLS, HTTP Dynamic Streaming or HDS, etc.), Icecast, and so on. In general, the overlay architecture of CDN <NUM> may include a multi-level, hierarchically-organized interconnected assembly of network servers for providing media pathways or "pipes" from one or more central distribution nodes to one or more levels of regional distribution nodes that are connected to one or more local edge servers configured to serve a plurality of end users or subscribers in respective serving location areas. In addition to such "distribution servers" (sometimes also referred to as "surrogates"), CDN <NUM> may also include and/or interoperate with various network elements configured to effectuate request redirection or rerouting mechanisms as well as related back office systems such as subscriber management systems, bandwidth scheduling systems, account/billing systems and the like, that may be deployed as part of a streaming network back office (not specifically shown).

The streaming network environment <NUM> includes one or more subscriber end stations, as illustrated by an example client device or user equipment (UE) device <NUM> associated with a subscriber/customer for consuming content delivered via CDN <NUM> in any type or number of access technologies including broadband access via wired and/or wireless (radio) communications. For purposes of the present patent application, the terms "streaming client device" and "client device" may be used synonymously and may comprise any UE device or appliance that in one implementation not only receives program assets for live viewing, playback and/or decoding the content, but also operates as a command console or terminal that can accept user inputs, commands or requests to interact with a network element disposed in CDN <NUM> and/or the associated streaming server systems <NUM> for requesting content that may be selectively rendered at an internal display screen <NUM> and/or one or more external audio/visual (A/V) devices (not specifically shown). As such, the example client device <NUM> may include one or more streaming client modules <NUM> (e.g., an ABR streaming client) and associated decoding functionalities <NUM> depending on the streaming technologies implemented, each operating in association with a processor module <NUM> and video buffer memory <NUM> for effectuating acquisition, decoding and rendering of the streamed media content. Although not specifically shown, the client device <NUM> also includes appropriate user interfaces for viewing one or more electronic program guides that list, identify or otherwise show the various streaming channels the subscriber is able to receive. Such user interfaces may also be configured to allow the user to scroll through an electronic program guide (i.e., channel surfing), select or otherwise change a particular streaming channel, and the like. Further, as will be described in additional detail hereinbelow, the client device <NUM> includes appropriate structures and modules for facilitating such functionalities as channel surfing and channel selection within an adaptive streaming network environment.

Continuing to refer to <FIG>, the example adaptive streaming server system <NUM> may be configured to accept media content from live sources 104A and/or static file sources 104B. In general operation, the example streaming server system <NUM> may be configured, under the control of one or more processors <NUM> executing appropriate program code stored in a persistent memory module <NUM>, to effectuate adaptive streaming of content as follows. Initially, source media content is transcoded or otherwise encoded with different bit rates (e.g., multi-rate transcoding) using applicable encoder(s) <NUM>. For example, a particular program content may be transcoded into five video files using variable bit rates, ranging from low to high bit rates (<NUM> Kbps to <NUM> Mbps, by way of illustration). The particular content is therefore encoded as five different "versions" or "formats", wherein each bit rate is called a profile or representation. Reference numeral <NUM> refers to a collection of media streams encoded at different bit rates by the encoder <NUM>. A segmentation server or segmenter <NUM> is operative to divide each version of the encoded media content into fixed duration segments or chunks, which are typically between two and ten seconds in duration, thereby generating a plurality of chunk streams <NUM>. One skilled in the art will recognize that shorter segments may reduce coding efficiency whereas larger segments may impact the adaptability to changes in network throughput and/or fast changing client behavior. Regardless of the chunk size, the segments may be Group-of-Pictures (GOP)-aligned such that all encoding profiles have the same segments. One or more suitable Manifest Files are then created that describes the encoding rates and Universal Resource Locator (URL) pointers the various segments of encoded content. In one implementation, the Manifest File (MF), a Delivery Format (DF) and means for conversion from/to existing File Formats (FF) and Transport Streams (TS) may be provided by an origin server <NUM> as part of adaptive streams <NUM> to the client device <NUM> over CDN <NUM>, which uses HTTP to fetch the encoded segments based on the URLs. Additionally, an error correction mechanism <NUM> may also be implemented, either as part of the streaming server system <NUM> or as a separate network element, in order to reduce transmission errors in the end-to-end streaming of the encoded media content. It should be apparent that the error correction mechanism <NUM> may be protocol-specific (e.g., Transmission Control Protocol or TCP), although other error correction schemes may also be used additionally or alternatively.

Still continuing to refer to <FIG>, the media stream segments received by the client device <NUM> may be buffered, as needed, and decoded and played back (i.e., rendered) in sequence, either at the local display <NUM> or at an external A/V device associated with the client device <NUM>. The ABR streaming client module <NUM> may be designed to select an optimum profile of each segment so as to maximize quality without risking buffer underflow and stalling (i.e., rebuffering) of the play-out. Each time the client device <NUM> fetches a segment, it may choose the profile based on the measured time to download the previous one or several segments.

It will be recognized that changing media content (i.e., from one streaming channel to another streaming channel) in an adaptive streaming environment such as the example network arrangement <NUM> shown in <FIG> can be a cumbersome process, especially in fast channel changing conditions. That is because adaptive streaming typically requires that appropriate video buffers be filled to certain levels before rendering, in addition to content segments encoded in high bit rates (i.e., "high bit rate content") being preferred to the same content segments encoded in low bit rates (i.e., "low bit rate content"), etc. Further, as several processing events or stages need to take place in a sequential order before the received media content can be properly rendered (i.e., played back), changing channels can yield an unacceptable viewing experience (e.g., stuttering, jitter, pixelation, etc.) because of the delays and/or interruptions introduced in the overall receive-decode-rendering process. Several embodiments will be set forth in detail hereinbelow, which relate to server-side processes and structures, client-side processes and structures, or both, that address the foregoing issues.

<FIG> depicts a diagram of example stages involved in an illustrative streaming media acquisition and rendering process <NUM> according to an embodiment of the present patent disclosure. As described above, a client device first obtains, receives or otherwise acquires certain metadata, e.g., manifest files, with respect to media transport streams (block <NUM>). Based on the information contained in the manifest files, various pieces of initialization information are obtained or otherwise acquired (block <NUM>). Such initialization information may comprise, inter alia, Sequence Parameters Set (SPS), Picture Parameters Set (PPS), one or more codec headers such as, e.g., MPEG-<NUM> sequence headers, or High Efficiency Video Coding (HEVC) headers, or AC3 (audio) headers, and any data necessary to decode at least one or more frames, or depending on the granularity of prediction, one or more slices (which are spatially distinct regions of a frame that are encoded separately from other regions of that frame), and/or any combination thereof. Such encoded frames may comprise I-frames (Intra-coded pictures), B-frames (Bi-predictive pictures), or P-frames (Predictive pictures). Likewise, slices may comprise I-slices, B-slices or P-slices. Using the initialization information, encoded media content or data is then obtained or retrieved (block <NUM>) and buffered (<NUM>). As appropriate levels of buffer data become available, such data is decoded (<NUM>) and then provided to a display screen for rendering (<NUM>), using suitable decoder/rendering engines.

In accordance with the teachings of the present patent disclosure, at least one or more stages of the process flow <NUM> set forth above may be performed in an anticipatory manner such that those process stages may be "pre-performed". Accordingly, certain basic information necessary to decode streaming media content is made readily available to an adaptive streaming client by virtue of pre-performing some of the early process stages. As a consequence, the adaptive streaming client can promptly utilize the already available information (i.e., "pre-fetched" information) to quickly adjust to a new channel when a user decides to scroll through the channels and/or select a particular channel thereafter. In further accordance with the teachings of the present patent disclosure, anticipatory pre-performance of certain process stages as set forth in the foregoing may be implemented for a select number of streaming channels that are determined to be "adjacent" with respect to a current streaming channel based on predictive channel surfing behavior, channel categorization, adaptive learning, pattern recognition, and other criteria.

<FIG> depict examples of various types of channel adjacencies according to one or more embodiments of the present patent disclosure. In example 300A shown in <FIG>, one or more adjacent channels may be determined as a configurable number of consecutive channels that are above the current streaming channel (i) (e.g., (i+<NUM>) channels), or as a configurable number of consecutive channels that are below the current streaming channel (i) (e.g., (i-<NUM>) channels), or both. In another embodiment, example 300B shown in <FIG> illustrates a scenario where channels may be grouped based on content categorization. Such categories may be defined as user-based "favorites lists", for example. Accordingly, all channels belonging to category "x" may be deemed to be adjacent with respect to one another. <FIG> illustrates a scenario where a user's surfing behavior pattern (e.g., over a period of time) may be used to identify whether the user is likely to surf in one direction or the other direction and then selecting adjacent channels in the direction.

Those skilled in the art should appreciate that the foregoing examples of channel adjacencies merely represent a non-exhaustive list, as there can be numerous variations, methodologies, determinations and schemes by which adjacency may be implemented. Channel adjacencies may also be dynamically changed from default settings and may be configured to vary from one scheme to another based on users' viewing habits, etc. It should also be recognized that certain channel adjacency implementations may depend on how electronic program guides are organized and presented to the users. Accordingly, for purposes of at least some embodiments of the present patent disclosure, an adjacent channel is a streaming channel for which certain process stages shown in <FIG> are preemptively performed. Moreover, the number of adjacent channels for which metadata is pre-fetched may be dependent on certain performance/resource constraints pertaining to the client device itself, e.g., current bandwidth conditions, the number of available decoders, buffer conditions, decode processing conditions, and the like.

Referring now to <FIG>, depicted therein is a block diagram of an example streaming client device <NUM> according to one embodiment wherein one or more aspects of the present patent disclosure may be practiced. It should be appreciated that the streaming client device <NUM> is a UE device that is generally representative of the subscriber/client device <NUM> illustrated in <FIG>, and may include appropriate hardware/software components and subsystems that may augment or otherwise rearrange the blocks shown as part of the client device <NUM>. Broadly, such hardware/software components and subsystems may be configured for performing any of the device-side processes (either individually or in any combination thereof) described hereinabove, which may be rearranged when taken in view of one or more processes described below. A processor module <NUM> including one or more microcontrollers/processors is provided for the overall control of the client UE device <NUM> and for the execution of various stored program instructions embodied in a persistent memory <NUM> that may be part of a memory subsystem <NUM> of the device <NUM>. Also, one or more video buffers <NUM> may be included in the memory subsystem <NUM> for storing video streaming data. Controller/processor complex referred to by reference numeral <NUM> may also be representative of other specialty processing modules such as graphic processors, video processors, digital signal processors (DSPs), and the like, operating in association with suitable video and audio interfaces <NUM>, <NUM> for receiving/transmitting content data, which interfaces may include or operate in conjunction with appropriate tuners, demodulators, descramblers, MPEG decoders/demuxes. For example, the client device <NUM> may be configured to operate with a number of known audio formats (e.g., MP3, AAC, AAC+, eAAC+, FLAC WMA, WAV, AMR, OGG, DTS, AC3, LPCM and MIDI) as well as video formats such as, e.g., MPEG4, H. <NUM>, DivX, XviD, WMV, AVI, 3GO, Flash Video, etc. A location-based and/or satellite communications interface <NUM> may be provided in certain embodiments for effectuating satellite-based communications. Other I/O or interfaces may include one or more user interfaces <NUM> generally illustrative of a graphic user interface (GUI), touch-sensitive screen, keyboard, microphone, etc., that may be used for inputting commands to effectuate, inter alia, channel surfing, channel selection, program guide manipulation, and the like. Additionally, one or more USB/HDMI/DVI/FireWire ports <NUM> may be provided for effectuating connections to one or more external A/V devices whereby the decoded media content may be rendered externally. Broadband network connectivity may be achieved via interfaces such as Ethernet I/F <NUM> as well as short-range and wide area wireless connectivity interfaces <NUM>. In one implementation of the client device <NUM>, a hard disk drive (HDD) system (not specifically shown) may be provided for mass storage of program assets such as A/V media, TV shows, movie titles, multimedia games, etc. Also included in the client/UE device <NUM> is a suitable power supply <NUM>, which may include AC/DC power conversion to provide power for the device <NUM>. It should be appreciated that the actual power architecture for the client/UE device <NUM> may vary by the hardware platform used, e.g., depending upon the core SoC (System on Chip), memory, analog front-end, analog signal chain components and interfaces used in the specific platform, and the like.

For purposes of the present patent application, the stored program instructions embodied in the persistent memory <NUM> (e.g., Flash memory) of the client device <NUM> may include computer-readable instructions configured to perform one or more device-side processes, selectively in conjunction with other subsystems or logic blocks such as one or more ABR streaming client and decode logic modules <NUM> and other subsystems such as a channel change controller, bandwidth and other performance monitors, as well as view mode and channel adjacency determination mechanisms, all collectively referred to by reference numeral <NUM>. Further, an optional local or included display <NUM> may also be provided as part the client device <NUM> for rendering received content locally (for example, in a number of resolutions such as Standard Definition, Enhanced Definition or High Definition) in addition to operating as a touch-sensitive screen.

In one aspect of the present patent disclosure, the various modules, blocks and subsystems set forth above may be configured to effectuate efficient display of adjacent channels through pre-fetched metadata in an adaptive streaming environment. In general, the client device <NUM> may be configured to operate in two functional modes: (i) a "viewing" mode in which certain data may be pre-fetched in addition to delivering high quality video; and (ii) a "channel changing" or "channel surfing" mode in which fetching low quality or "good enough" quality video to display rapidly changing channels is the main concern. The client device <NUM> may be in "viewing" mode if no channel is changed after or within a configurable period of time (e.g., <NUM> seconds). On the other hand, the client device <NUM> may be in "channel changing" mode if the channel has recently been changed (e.g., less than <NUM> seconds).

At least a portion of the modules, blocks and subsystems of the client device <NUM> are operable to effectuate one or more of the following processes and subprocesses under the control of processor <NUM> for purposes of facilitating efficient display of adjacent streaming channels according to one or more embodiments of the present patent application. Referring to an embodiment of process <NUM> shown in <FIG>, the client device <NUM> may be configured to monitor current bandwidth conditions (e.g., relative to the network connection such as connection <NUM> shown in <FIG> as well as any other distributions pipes involved in the end-to-end distribution path through the CDN) and other performance conditions, as set forth at block <NUM>. Responsive to the monitored conditions, a determination may be made as to how many adjacent channels for which certain metadata information is to be pre-fetched. In an illustrative example, if <NUM> Mb of bandwidth is currently available (after accounting for whatever bandwidth is being utilized for the current streaming session), assuming that each channel requires <NUM> Kb of bandwidth to fetch its metadata, a determination could be made that the client device is capable of fetching metadata for five adjacent channels. As described previously, various constructs of channel adjacencies may be implemented, including, e.g., user-specific or user-defined lists, operator-defined lists, based on program guide implementations, content categories, language-based definitions, static or fixed configurations, etc. In a predictive behavior modeling approach, if the user has pressed up three channels (i.e., scrolled up three times) within a specified period of time, a probabilistic determination can be made that the user is likely to scroll up again rather than down, for example. Accordingly, a certain number of channels above the current channel may be deemed to be the adjacent channels for which metadata will be pre-fetched. The foregoing operations are illustrative of the acts and functions set forth at block <NUM> of the process flow <NUM>.

After determining one or more adjacent channels (e.g., relative to a current streaming channel), metadata information for the adjacent channels is obtained, requested, retrieved, or otherwise pre-fetched from the associated server system(s) (block <NUM>). In one adaptive streaming implementation, such metadata may comprise appropriate manifest files relative to the encoded media content streaming on the adjacent channels. The streaming client logic executing on the client device <NUM> is operable to parse the pre-fetched metadata information, and responsive thereto, determine where to go to obtain initialization information for the adjacent channels (block <NUM>). As previously described, such initialization information may comprise at least one of SPS/PPS information, one or more codec headers, and the minimum amount of metadata necessary to decode slices/frames. Accordingly, based on the pre-fetched metadata information, the client device <NUM> is further operable to pre-fetch or pre-download the adjacent channels' initialization information, which may be locally stored in memory (block <NUM>). If the current streaming channel is changed to a new streaming channel belonging to the group of adjacent channels (decision block <NUM>), the initialization information for the new streaming channel (which is readily/locally available because it was pre-fetched) is used by the client device <NUM> to quickly fetch the required media content from appropriate locations (block <NUM>). In one implementation, the streaming client logic executing on the client device <NUM> may be configured to request for only the media content that is encoded at a select bit rate, e.g., the lowest bit rate, by the streaming server's encoder. Additionally or alternatively, the client device <NUM> may also request for the encoded media content that is segmented into shorter segments.

If there is no channel changing, the client device <NUM> may continue to monitor the bandwidth conditions, buffer resources, and processing conditions so that new or modified channel adjacencies may continue to be (re)established or otherwise (re)determined (blocks <NUM>, <NUM>, <NUM>). If the user settles into a particular channel (i.e., "viewing" mode) as set forth at decision block <NUM>, the streaming client logic executing on the client device <NUM> may be configured to request for the media content that is encoded at higher bit rates, potentially going all way to the highest bit rate profiles possible (i.e., ramping up). Additionally or alternatively, the client device <NUM> may also request for the encoded media content that is segmented into larger segments. Accordingly, it should be appreciated that once the client device <NUM> is in "viewing" mode, media content with highest QoS may be presented to the user relatively quickly. These operations are illustratively set forth at block <NUM>. Thereafter, the client device <NUM> may (re)establish or otherwise (re)determine newer channel adjacencies based on the monitored conditions as described previously.

One skilled in the art will recognize upon reference hereto that by executing the above-described pre-fetching operations, at least process stages <NUM> and <NUM> illustrated in <FIG> may be advantageously circumvented at the time of channel changing, thereby gaining a "head start" when the channel is changed. As the media content for the new channel is more readily available, albeit at low bit rate profiles and/or shorter segments (at least initially), the decoder/renderer engine of the client device can quickly process the media content so that at least some of the image rendering issues that can arise in a typical channel-changing streaming environment may be alleviated.

Referring now to <FIG>, shown therein is another embodiment of a process flow <NUM> that may be implemented by a streaming client device (e.g., client device <NUM>) having multiple streaming client applications and corresponding decoders for achieving additional efficiencies in a channel changing environment. Similar to the process flow <NUM> described above, the process flow <NUM> includes blocks <NUM>-<NUM> where the client device <NUM> may continue to monitor the bandwidth conditions, buffer resources, processing conditions, etc., so that appropriate channel adjacencies may be determined and metadata and initialization data may be pre-fetched. Using the pre-fetched initialization information, the client device <NUM> proceeds to fetch the adjacent channels' media content and begins to decode immediately (block <NUM>). In other words, the client device <NUM> is operative to decode multiple streams from the adjacent channels in parallel (by virtue of separate streaming clients/decoders) (i.e., pre-decoding), thereby gaining an additional head start with respect to the process stage of <NUM> shown in <FIG>. It should be realized that early parts of media segments may comprise a "moof" atom (e.g., in Fragmented MP4 coding) that informs where all the video samples in the segments are and an IDR (Instantaneous Decoding Refresh) slice of the frames. At this point, the rendering engine of the client device <NUM> has enough information to put some pixels on the display screen. Accordingly, if the current streaming channel is changed to one of the adjacent channels, the rendering engine of the client device <NUM> can begin rendering immediately (because the pre-decoded media content is already available in appropriate video buffers) as set forth at block <NUM>. Thereafter, the client device <NUM> may (re)establish or otherwise (re)determine newer channel adjacencies based on the monitored conditions as described previously with respect to <FIG>.

<FIG> depicts a flowchart of a high-level channel buildup process <NUM> that may be executed by the example client device <NUM> at least relative to certain aspects of the present patent disclosure. At block <NUM>, one or more lists of adjacent channels may be built, which in some embodiments may be prioritized based on user preferences, content provider policies, etc. As discussed above, various pieces of data (up to and including encoded media segments, in certain implementations) may be pre-fetched for each adjacent channel. At decision block <NUM>, a determination may be made as to whether adjacent channel buildup is complete, i.e., if all the necessary pre-fetching operations for the channels determined to be adjacent have been concluded. If so, the process flow stops (block <NUM>). Otherwise, pre-fetching/downloading operations may continue to be performed relative to the remaining adjacent channels (block <NUM>).

Turning now to <FIG>, depicted therein is a flowchart with blocks relative to various steps and acts that may take place at an adaptive streaming server system (e.g., server system <NUM> shown in <FIG>) according to one or more embodiments of the present patent application with respect to facilitating fast channel changes in an adaptive streaming environment. In particular, process flow <NUM> of <FIG> illustrates various functionalities that may be effectuated - independently or in some combination or sub-combination thereof - by the processor complex <NUM> upon executing appropriate service logic stored in the persistent memory <NUM> and operating in conjunction with other subsystems (e.g., encoder <NUM>, segmenter <NUM>, error correction <NUM>, etc.) of the server system <NUM>. When a new stream of media content is started at the server system <NUM> (e.g., because of a user's channel change request), the service logic embodied in the persistent memory <NUM> may be configured to always commence streaming of the requested media content at a specific point (block <NUM>) such as a Stream Access Point (SAP), which is a GOP random access point in the content stream guaranteed that all frames in the GOP are decodable. Additionally or alternatively, the service logic of the server system <NUM> may be configured to disable error correction mechanisms <NUM> for the transmission of the new stream to the client device <NUM> for a select period of time (block <NUM>). It will be recognized that disabling a protocol-specific error correction mechanism may yield a non-standard protocol transmission of streaming data, but one without the error correction overhead, thereby facilitating a faster transmission rate to the client device <NUM>. It should further be apparent that the timing windows during which an error correction mechanism is relaxed may be configurable or otherwise customizable, e.g., responsive to requests, commands, signals, etc. from the network and/or client device <NUM>. In an additional or alternative variation, the service logic of the server system <NUM> may be configured to facilitate, at least initially, only transmission of the media content encoded at a select bit rate (e.g., lowest bit rate possible) and/or segmented into shortest segments by the segmenter <NUM>, as set forth at block <NUM>. Again, the initial period during which the streaming server's functionalities are conditionally modulated (e.g., a ramping up period) may be configurable responsive to requests from the client device <NUM> and/or other control signals from network management nodes. For instance, in one implementation, the error correction relaxation period and initial ramp up period may be provided to be the same. In another implementation, the two time periods may be different. In a still further implementation, responsive to receiving one or more requests from the client device <NUM> (e.g., messages, alarms, status indicators, etc.), the error correction mechanism may be enabled or re-enabled regardless of the entity or event that initially disabled the error correction mechanism when the new media stream was started. Additionally or alternatively, one or more requests from the client device <NUM> (e.g., URLs, pointers, indicators, etc.) may selectively instruct the server system <NUM> to begin transmitting the media content encoded at higher bit rates and/or in larger segments. By way of illustration, the client device <NUM> may send one URL (operative as a first URL, for example) http://www. purplefrog. com/vid/<NUM>/r1/<NUM>. m4s for low bit rate media content and another URL (operative as a second URL, for example) http://www. purplefrog. com/vid/<NUM>/r2/<NUM>. m4s for high bit rate media content. It should be realized that such requests may be generated by the client device in response to various conditions, inter alia, bandwidth conditions, quality of the rendered video, buffer conditions, decode processing conditions, and the like. Accordingly, the streaming functionality effectuated by the server system <NUM> may be conditionally modulated responsive to the various requests as set forth at block <NUM>.

To facilitate fast channel changes in concert with the foregoing functionalities of the streaming server system <NUM>, the client device <NUM> may also be configured accordingly to effectuate a number of processes - independently or in some combination or sub-combination thereof. <FIG> depicts a process flow <NUM> with blocks relative to various steps and acts that may take place at the client device <NUM>. When a media content stream is newly started (e.g., due to a channel change request), the client device <NUM> is operative to initiate a request for only media content that is encoded in the lowest bit rate possible and/or in shortest segments (block <NUM>). As the encoded media content is being received, the client device <NUM> may be configured to commence immediate decoding and rendering of the received media content, regardless of the buffer state. As described previously with respect to the embodiment of <FIG>, such immediate decoding/rendering is possible upon receiving at least a minimum amount of information. Additionally or alternatively, the video buffer memory <NUM> may be prevented from being flushed during a ramp up period. The foregoing functionalities, illustratively set forth at block <NUM>, may be effectuated by the channel change controller and buffer monitor <NUM>, preferably operating in concert with the appropriate streaming client <NUM> under the control of the processor complex <NUM>. Depending on the bandwidth conditions, video quality, etc., the client device <NUM> may gradually ramp up the requested bit rates and/or segment sizes (potentially requesting media content encoded at the highest bit rates possible and segmented into largest segments) by generating appropriate signals to the streaming server system <NUM>. The client device <NUM> is also operative to send a signal or request to enable or re-enable error correction at the streaming server system <NUM> if the error correction was disabled initially. After the client device <NUM> has achieved a bit rate suitable for acceptable quality video (e.g., high quality), the client device <NUM> behaves normally in "viewing" mode until a new media content stream is requested. The foregoing functionalities are illustratively set forth at block <NUM>. It should be appreciated that the various requests/signals described above may be generated by the client device <NUM> at different times (i.e., asynchronous with respect to one another), and after expiration of select/customizable time periods from the time when the new stream is started.

<FIG> depicts an example user viewing experience <NUM> that may be achieved by implementing an embodiment of the streaming server system <NUM> and client device <NUM> as set forth above. At block <NUM>, the client device <NUM> (e.g., a streaming A/V player) is turned on and a select channel media content is requested. At block <NUM>, the requested media content begins playing with video and audio in sync, although the rendered content may be at a low quality. At block <NUM>, the user changes the channel, whereupon the new media content is played with video and audio in sync (block <NUM>). Again, the overall quality of the new media content may be low, as there may be audio and/or visual glitches in the rendering. When the user settles on a channel, the media content of that channel gradually ramps up to the highest bit rate possible (potentially within in a few seconds), with the video buffer filling up accordingly (block <NUM>).

<FIG> depicts a flowchart of a high-level channel changing process <NUM> that may be executed by the example client device <NUM> at least relative to certain aspects of the present patent disclosure. At block <NUM>, a channel change is started, whereupon the client device <NUM> initially receives a lowest quality stream (<NUM>). The received low quality stream is decoded and rendered as immediately as possible (block <NUM>). The bit rates, segment sizes and quality in general are ramped up until normal/acceptable quality is achieved, as set forth at blocks <NUM>, <NUM>. Thereafter, the client device <NUM> behaves normally in "viewing" mode until a new media content stream is requested, as described above.

<FIG> depicts anther embodiment of an example streaming client device <NUM>, which is representative of a portion of the client device <NUM>, for purposes of the present patent application. A channel change controller <NUM> is provided with communication paths <NUM>, <NUM> to intercept, interrupt, or otherwise control the operations relative to a video buffer <NUM> that is operative to store an incoming video stream and a decoder/renderer <NUM>, respectively. The decoder/renderer <NUM> is coupled to the video buffer <NUM> via a communication path <NUM> and to a display screen <NUM> via a communication path <NUM>. In normal viewing operations, the decoder/renderer <NUM> is operative to decode the buffered data when certain levels are achieved/maintained. Example decoded data is illustratively shown as header data <NUM> and I/B/P frames or slices <NUM> that may be provided to the display screen <NUM> for forming images thereon. In channel changing conditions, on the other hand, the decoder/renderer <NUM> is forced to process the video buffer data even if there is only a minimum amount of data.

Based upon the foregoing Detailed Description, it should be appreciated that the embodiments of the present disclosure can be advantageously implemented to facilitate channel changing in streaming environments. By pre-fetching certain initialization data in a predictive manner, a head start may be achieved in the overall media acquisitiondecode-rendering process, thereby reducing the switching-induced delays that typically give rise to an unacceptable viewing experience. Accordingly, a channel surfing experience similar to one that is commonly expected in existing TV broadcast environments may be provided in an adaptive streaming network.

In the above-description of various embodiments of the present disclosure, it is to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of this specification and the relevant art and may not be interpreted in an idealized or overly formal sense expressly so defined herein.

At least some example embodiments are described herein with reference to block diagrams and/or flowchart illustrations of computer-implemented methods, apparatus (systems and/or devices) and/or computer program products. Such computer program instructions may be provided to a processor circuit of a general purpose computer circuit, special purpose computer circuit, and/or other programmable data processing circuit to produce a machine, so that the instructions, which execute via the processor of the computer and/or other programmable data processing apparatus, transform and control transistors, values stored in memory locations, and other hardware components within such circuitry to implement the functions/acts specified in the block diagrams and/or flowchart block or blocks, and thereby create means (functionality) and/or structure for implementing the functions/acts specified in the block diagrams and/or flowchart block(s). Additionally, the computer program instructions may also be stored in a tangible computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instructions which implement the functions/acts specified in the block diagrams and/or flowchart block or blocks.

As alluded to previously, tangible, non-transitory computer-readable medium may include an electronic, magnetic, optical, electromagnetic, or semiconductor data storage system, apparatus, or device. More specific examples of the computer-readable medium would include the following: a portable computer diskette, a random access memory (RAM) circuit, a read-only memory (ROM) circuit, an erasable programmable read-only memory (EPROM or Flash memory) circuit, a portable compact disc read-only memory (CD-ROM), and a portable digital video disc read-only memory (DVD/Blu-ray). The computer program instructions may also be loaded onto or otherwise downloaded to a computer and/or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer and/or other programmable apparatus to produce a computer-implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions/acts specified in the block diagrams and/or flowchart block or blocks. Accordingly, embodiments of the present invention may be embodied in hardware and/or in software (including firmware, resident software, micro-code, etc.) that runs on a processor such as a digital signal processor, which may collectively be referred to as "circuitry," "a module" or variants thereof.

Further, in at least some additional or alternative implementations, the functions/acts described in the blocks may occur out of the order shown in the flowcharts. Finally, other blocks may be added/inserted between the blocks that are illustrated. Moreover, although some of the diagrams include arrows on communication paths to show a primary direction of communication, it is to be understood that communication may occur in the opposite direction relative to the depicted arrows.

Claim 1:
An electronic device (<NUM>, <NUM>), comprising:
one or more processors (<NUM>); and
one or more storage devices coupled to the one or more processors (<NUM>), wherein the one or more storage devices include instructions executable by the one or more processors (<NUM>) and configured to, when executed, cause the electronic device to:
determine (<NUM>, <NUM>) one or more adjacent adaptively streamed content relative to a current streaming adaptively streamed content of the electronic device (<NUM>, <NUM>), the one or more adjacent adaptively streamed content being determined responsive to monitoring of a bandwidth condition relative to a network connection (<NUM>) between the electronic device (<NUM>, <NUM>) and a content delivery network (<NUM>), wherein the current streaming adaptively streamed content is associated with a first channel and the one or more adjacent adaptively streamed content is associated with one or more channels adjacent to the first channel;
pre-fetch (<NUM>, <NUM>) metadata information associated with the one or more adjacent adaptively streamed content;
responsive to the pre-fetched metadata information, pre-fetch and store (<NUM>, <NUM>) initialization information for the one or more adjacent adaptively streamed content; and
if the current streaming adaptively streamed content is changed to a new streaming adaptively streamed content (<NUM>), use the pre-fetched initialization information to fetch (<NUM>) encoded media content pertaining to the new streaming adaptively streamed content.