Patent Description:
Thumbnail images can be a useful visual reference to a user navigating through video content. By viewing thumbnail images, a user may be able to determine if the user needs to navigate forward, back, or is at a desired location within the video content. Generation of thumbnail images can be a processing-intensive task, which could negatively affect other tasks that require processing. If a user may view video content soon after it is received, it may be desirable to have thumbnail images created and ready as soon as possible for use in navigation to allow the user to navigate efficiently and effectively through the video content.

<CIT> discloses scene-based program accessing systems and methods that are operable to present a program at a scene corresponding to a selected thumbnail-sized image. An exemplary embodiment selects a plurality of image frames from a program based upon a scene separation duration; generates a thumbnail-sized image from each of the selected image frames, and presents the plurality of thumbnail-sized images on a scene index. The scene index is configured to present the plurality of thumbnail-sized images in a time ordered sequence corresponding to a subject matter presentation sequence of the program, and each of the selected image frames are temporally separated from each other by the scene separation duration.

<CIT> discloses a method that includes receiving a plurality of images at an encoder device and encoding the plurality of encoder images to generate an output video stream, where the output video stream includes a plurality of encoded video frames corresponding to the plurality of images. During generation of the output video stream, the encoder device receives a notification that a particular image of the plurality of images satisfies a thumbnail generation condition. In response to the notification, the encoder device generates a thumbnail from the particular image and sends the output video stream to a media server.

A further understanding of the nature and advantages of various examples may be realized by reference to the following figures.

Generation of thumbnail images (referred to as "thumbnails" for short) as video content is received by a television receiver may have several advantages. First, by generating the thumbnails as content is received, the thumbnails may become available for use for navigating through video content sooner than if the thumbnails were created as part of a batch process after the video content has been fully received. Second, video content may be received in an encrypted or scrambled format and subsequently decrypted or descrambled for output, storage, or further processing. When such content is stored locally, the video content may be re-encrypted or re-scrambled. By creating thumbnails as the video content is received and initially descrambled or decrypted, a later descrambling or decryption step solely or primarily for the purpose of thumbnail generation may be avoided, thereby decreasing the total amount of processing needing to be performed.

A possible disadvantage of generating thumbnails can be the consumption of processing resources. Therefore, if a processing system is being used for multiple tasks, generation of one or more thumbnail images may negatively impact the processing resources available for other tasks. For instance, if a user is viewing content as it is being received or from a time-shift buffer, generation of thumbnails may negatively impact the quality of audio and/or video output for presentation to the user or the ability of the device to perform real-time descrambling, decryption, and/or storage. In order to avoid such a disadvantage, a sleep process may be incorporated as part of the thumbnail generation process such that the thumbnail generation process is only active for a relatively short period of time when a predefined time period has expired. Once a thumbnail is generated and stored, the thumbnail generation process may return to a sleep state for the predefined time period. Further, the thumbnails and associated metadata (e.g., timestamps) may only be written to a hard drive or solid-state drive (or other long-term storage device) after a certain number of thumbnails have been generated or some other trigger event has occurred. As such, the number of write operations to the hard drive or solid-state drive may be decreased.

In some embodiments, one or more additional actions may be taken to reduce the processing load of thumbnail generation as live content is received. In some embodiments, the amount of time between when thumbnails are generated may be dynamically varied based on the processing load on the one or more processors of the television receiver. Therefore, if the one or more processors are currently being significantly utilized, the amount of time between generation of thumbnails may be increased (to decrease the amount of processing load due to thumbnail generation). Additionally or alternatively, the thumbnail interval may be adjusted based on the type of display that will be used to output the content for presentation. For example, on a small display, having fewer thumbnails (which may be created using a lower resolution) may be sufficient for navigation. A smaller number of thumbnails may be sufficient due to the size of the scrub bar (due to the size of the display) and the inability to do highly precise movements with a finger on a small scrub bar. Therefore, the size and/or resolution of a display that will be used for output may be taken into account to determine the amount of time and/or resolution for thumbnails. Additionally or alternatively, thumbnail creation may be offloaded to a cloud-based server. An I-frame may be sent to the cloud-based server. The cloud-based server will do the frame decoding, resizing, then re-encode as a JPEG image (or other format). This arrangement may increase network traffic, but may decrease the amount of processing performed locally by the one or more processors of the television receiver. Cloud-based thumbnail generation may be triggered by the one or more processors experiencing at least a threshold level of processing load.

Further detail regarding the embodiments is provided in relation to the figures. <FIG> illustrates an embodiment of a system <NUM> that generates live thumbnails. "Live" refers to the concept that the thumbnails are generated as the video content is received rather than as part of a batch process performed at a later time. When system <NUM> receives video content and is triggered to generate a thumbnail, the thumbnail may be generated and ready for use in presentation as part of a navigational interface within a short time, such as <NUM> - <NUM>. System <NUM> may be incorporated as part of a television receiver. Such a television receiver may be in the form of a set top box (STB) component that is integrated as part of a television, or a computerized device that is configured to present video content. For instance, a computerized device such as a digital media player, smartphone, tablet computer, or gaming device may have an application installed on it that allows for video content to be received, recorded, and/or output for presentation (either directly via a display of the computerized device or via an external device (e.g., television)). System <NUM> may include: video content receiver <NUM>; decoder engine <NUM>; thumbnail generation engine <NUM>; thumbnail and metadata buffer <NUM>; thumbnail datastore <NUM>; metadata datastore <NUM>; encoder engine <NUM>; content datastore <NUM>; output interface <NUM>; and navigation interface generator <NUM>.

Video content receiver <NUM> may receive a stream of video from a source, such as a streaming video provider. The streaming video received may be a television channel, or some other form of streaming media, such as a streamed television program, movie, or other form of content. In some embodiments, streaming audio may accompany the streaming video. Video content receiver <NUM> may receive streaming video via a dedicated media distribution network, such as a satellite-based communication network. In some embodiments, video content receiver <NUM> may receive video content via some other form of network, such as an IP-based network, such as the Internet. Therefore, video content receiver <NUM> may include one or more network interfaces, such as a Wi-Fi network interface. Video content receiver <NUM> may also include specialized hardware to allow video content receiver <NUM> to receive video content from a specialized content distribution network. For example, video content receiver <NUM> may include one or more tuners configured to receive content broadcast via satellite. In other embodiments, video content receiver <NUM> may be configured to receive content via a cable network or over the air (OTA).

Decoder engine <NUM> may generally refer to software, firmware, and/or hardware that can decode, decrypt, and/or descramble received video content. Decoder engine <NUM> may perform multiple functions, such as decrypting an encrypted message (e.g., an entitlement control message) to obtain a key (e.g., control word) that is used to descramble video content. Further detail regarding such an arrangement is provided in relation to <FIG>. In other embodiments, the video content may not be scrambled or encrypted. Scrambling generally refers to a "light" form of encryption, which can be converted into an unscrambled version if the correct descrambling key is available with a minimal amount of processing resources. Encryption may be understood to be much "heavier" in that a significantly greater amount of processing may be required to decrypt the encrypted message using a correct encryption key. Encrypted data is typically more secure than scrambled data. Decoder engine <NUM> may output decoded video content for storage to encoder engine <NUM>, content datastore <NUM>, or output interface <NUM>.

Content datastore <NUM> may be a non-transitory processor readable medium, such as memory, a hard drive, or a solid state drive to which video content may be stored for a period of time. In some embodiments, encoder engine <NUM> may scramble and/or encrypt the descrambled and/or decrypted data received from decoder engine <NUM>. Encoder engine <NUM> may encrypt and/or scramble data using one or more keys for local storage on content datastore <NUM> such that video content is not stored unprotected. Such an arrangement may help prevent theft of copyrighted materials. If the user is viewing the video content live, decoder engine <NUM> may output the decrypted and/or descrambled video content to output interface <NUM>. Output interface <NUM> may output the video content via a display device, such as a display screen. This display device may be incorporated as part of the same device as system <NUM> or may be external from system <NUM>. For instance, system <NUM> may be incorporated as part of a device that is connected with a television or other form of display.

Thumbnail generation engine <NUM> may represent software or firmware that is executed using one or more processors. Thumbnail generation engine <NUM> operates in at least two modes. A first mode is in active mode, during which thumbnail generation engine <NUM> is actively generating a thumbnail image. A second mode is a sleep mode, during which thumbnail generation engine <NUM> is disabled and not using any processing resources besides, possibly, keeping track of an amount of time that has elapsed since the previous thumbnail was generated in comparing this amount of time with a predefined time period. Thumbnail generation engine <NUM> when active, monitor for a next occurring frame that is output by decoder engine <NUM> or otherwise received by video content receiver <NUM>. The frame monitored for may be an I-frame. An I-frame is a type of frame used in MPEG (or, more generally, video) encoding that includes all of the data necessary to render or create a visual image without any additional information. Other forms of frames (e.g., P-frames, B-frames) may be incremental and may rely on referencing a previous or future I-frame. Thumbnail generation engine <NUM> uses such I-frame to create a reduced resolution image of the I-frame. Such a reduced resolution image may be appropriate for presentation in a smaller format.

When thumbnail generation engine <NUM> has created a thumbnail image, a timestamp that corresponds to the time at which the thumbnail was created from the received video content is generated. This timestamp and thumbnail image may be temporarily stored by thumbnail and metadata buffer <NUM>. Thumbnail and metadata buffer <NUM> may use random access memory or some other form of processor readable and writable memory to temporarily store the thumbnail image and the associated metadata. Occasionally, data from thumbnail and metadata buffer <NUM> may be written to thumbnail datastore <NUM> and metadata datastore <NUM>. For instance, after <NUM> minutes of thumbnails have been captured or a particular piece of video content has ended, thumbnails and metadata from thumbnail and metadata buffer <NUM> may be written to thumbnail datastore <NUM> and metadata datastore <NUM>. Thumbnail datastore <NUM> and metadata datastore <NUM> may be stored to a more permanent form of processor readable non-transitory storage medium. For example, a hard drive or solid state drive may be used to store thumbnail datastore <NUM> and metadata datastore <NUM>. By temporarily storing thumbnails and metadata to thumbnail and metadata buffer <NUM>, the number of writes to thumbnail datastore <NUM> and metadata datastore <NUM> may be decreased. In some embodiments, thumbnail and metadata buffer <NUM> may not be present and thumbnail generation engine <NUM> may write thumbnails and metadata directly to thumbnail datastore <NUM> and metadata datastore <NUM>.

After thumbnail generation engine <NUM> has generated a thumbnail and link to a particular timestamp with the thumbnail, thumbnail generation engine <NUM> may enter the sleep mode. While in the sleep mode, the amount of processing being required by thumbnail generation engine <NUM> may be very low. While in the sleep mode, thumbnail generation engine <NUM> may monitor an amount of time that has elapsed since the previous thumbnail was generated and periodically or occasionally compare this amount of time with a predetermined time threshold. When the amount of time meets or exceeds the predetermined time threshold, thumbnail generation engine <NUM> may transition to the active mode.

Thumbnail datastore <NUM> may include one or more thumbnail storage files. Each thumbnail storage file may include multiple thumbnails. Each thumbnail within thumbnail datastore <NUM> may be mapped to a unique identifier (that is unique at least within the particular file). Metadata datastore <NUM> may include one or more metadata storage files. Each metadata storage file may include a list, table, or database of timestamps, with each timestamp being linked with a unique identifier. Therefore, for a particular time, navigation interface generator <NUM> may query metadata datastore <NUM> to retrieve a particular identifier. The identifier may then be used to obtain the corresponding thumbnail from thumbnail datastore <NUM>.

Navigation interface generator <NUM> may be used to generate a navigation interface to allow a user to move forward or backward within video content being output for presentation. The navigation interface may include a scrub bar that allows a user to see what content is currently available for playback. When a user selects a different portion of the video content, a thumbnail may be presented to visually represent to the user the currently selected position within the video content. The thumbnail may be selected based on the timestamp associated with the thumbnail being closest (or the next earlier timestamp or the next later timestamp) to the times selected on the scrub bar. Further detail regarding such an interface is provided in relation to <FIG>. Navigation interface generator <NUM> may be performed using one or more processors. Therefore, navigation interface generator <NUM> may be performed by the same one or more processors that are being used to perform thumbnail generation engine <NUM>.

<FIG> illustrates an embodiment of a television receiver <NUM>. Television receiver <NUM> represents a type of device that may incorporate components of and functionality of system <NUM> of <FIG>. Television receiver <NUM> may be in the form of a separate device configured to be connected with a display device, such as a television. Embodiments of television receiver <NUM> can include set top boxes (STBs). As previously noted, in addition to being in the form of an STB, a television receiver may be incorporated as part of another device, such as a television or other form of display device. For example, a television may have an integrated television receiver (which does not involve an external STB being coupled with the television).

Television receiver <NUM> may be in the form of an STB that outputs video and/or audio to a display device, such as a television. Television receiver <NUM> may be incorporated as part of a television. Television receiver <NUM> may include: processors <NUM> (which may include control processor <NUM>-<NUM>, tuning management processor <NUM>-<NUM>, and possibly additional processors), tuners <NUM>, network interface <NUM>, non-transitory computer-readable storage medium <NUM>, time-shift buffer <NUM>, television interface <NUM>, networking information table (NIT) <NUM>, digital video recorder (DVR) database <NUM> (which may include provider-managed television programming storage and/or user-defined television programming), thumbnail datastore <NUM>, metadata datastore <NUM>, user input device <NUM>, decryption processing component <NUM> (which can be in the form of a removable or non-removable smartcard), and/or descrambling engine <NUM>. In other embodiments of television receiver <NUM>, fewer or greater numbers of components may be present. It should be understood that the various components of television receiver <NUM> may be implemented using hardware, firmware, software, and/or some combination thereof. Functionality of components may be combined; for example, functions of descrambling engine <NUM> may be performed by tuning management processor <NUM>-<NUM>. Further, functionality of components may be spread among additional components; for example, PID (packet identifier) filters <NUM> may be handled by separate hardware from program management table <NUM>.

Processors <NUM> may include one or more specialized and/or general-purpose processors configured to perform processes such as tuning to a particular channel, and/or receiving and processing input from a user. For example, processors <NUM> may include one or more processors dedicated to decoding video signals from a particular format, such as MPEG, for output and display on a television and for performing decryption. It should be understood that the functions performed by various modules of <FIG> may be performed using one or more processors. As such, for example, functions of descrambling engine <NUM> may be performed by control processor <NUM>-<NUM>.

Control processor <NUM>-<NUM> may communicate with tuning management processor <NUM>-<NUM>. Control processor <NUM>-<NUM> may control the recording of television channels based on timers stored in DVR database <NUM>. Control processor <NUM>-<NUM> may also provide commands to tuning management processor <NUM>-<NUM> when recording of a television channel is to cease. In addition to providing commands relating to the recording of television channels, control processor <NUM>-<NUM> may provide commands to tuning management processor <NUM>-<NUM> that indicate television channels to be output to decoder module <NUM> for output to a display device. Control processor <NUM>-<NUM> may also communicate with network interface <NUM> and user input device <NUM>. Control processor <NUM>-<NUM> may handle incoming data from network interface <NUM> and user input device <NUM>. Additionally, control processor <NUM>-<NUM> may be configured to output data via network interface <NUM>. Control processor <NUM>-<NUM> may execute a process, thread, or task to perform the functions of thumbnail generation engine <NUM> as detailed in relation to <FIG>.

Tuners <NUM> may include one or more tuners used to tune to transponders that include broadcasts of one or more television channels. In the illustrated embodiment of television receiver <NUM>, three tuners are present (tuner <NUM>-<NUM>, tuner <NUM>-<NUM>, and tuner <NUM>-<NUM>). In other embodiments, two or more than three tuners may be present, such as four, six, or eight tuners. Each tuner contained in tuners <NUM> may be capable of receiving and processing a single transponder stream from a satellite transponder at a given time. As such, a single tuner may tune to a single transponder stream at a given time. If tuners <NUM> include multiple tuners, one tuner may be used to tune to a television channel on a first transponder stream for display using a television, while another tuner may be used to tune to a television channel on a second transponder for recording and viewing at some other time. If multiple television channels transmitted on the same transponder stream are desired, a single tuner of tuners <NUM> may be used to receive the signal containing the multiple television channels for presentation and/or recording. Tuners <NUM> may receive commands from tuning management processor <NUM>-<NUM>. Such commands may instruct tuners <NUM> which frequencies or transponder streams to tune.

Network interface <NUM> may be used to communicate via an alternate communication channel with a television service provider, if such communication channel is available. The primary communication channel may be via satellite (which may be unidirectional to television receiver <NUM>) and the alternate communication channel (which may be bidirectional) may be via a network, such as the Internet. This communication may be bidirectional: data may be transmitted from television receiver <NUM> to a television service provider system and from the television service provider system to television receiver <NUM>. Network interface <NUM> may be configured to communicate via one or more networks, such as the Internet, to communicate with a television service provider system. Information may be transmitted and/or received via network interface <NUM>. For instance, instructions (e.g., regarding subscription portability, recording instructions, confirmation settings) from a television service provider may also be received via network interface <NUM>, if connected with the Internet. Network interface <NUM> may be used to provide a confirmation to a television service provider that instructions received from the television service provider have indeed been executed.

Storage medium(s) <NUM> may represent one or more non-transitory computer-readable storage mediums. Storage medium <NUM> may include memory and/or a hard drive. Storage medium <NUM> may be used to store information received from one or more satellites and/or information received via network interface <NUM>. Storage medium <NUM> may store information related to time-shift buffer <NUM>, thumbnail datastore <NUM>, metadata datastore <NUM>, thumbnail and metadata buffer <NUM>, and/or DVR database <NUM>. Recorded television programs, which were recorded based on a provider- or user-defined timer may be stored using storage medium <NUM> as part of DVR database <NUM>. Storage medium <NUM> may be partitioned or otherwise divided (such as into folders) such that predefined amounts of storage medium <NUM> are devoted to storage of television programs recorded due to user-defined timers and stored television programs recorded due to provider-defined timers.

The network information table (NIT) <NUM> may store information used by television receiver <NUM> to access various television channels. NIT <NUM> may be stored locally by a processor, such as tuning management processor <NUM>-<NUM> and/or by storage medium <NUM>. Information used to populate NIT <NUM> may be received via satellite (or cable) through tuners <NUM> and/or may be received via network interface <NUM> from the television service provider. As such, information present in NIT <NUM> may be periodically updated. In some embodiments, NIT <NUM> may be locally-stored by television receiver <NUM> using storage medium <NUM>. Generally, NIT <NUM> may store information about a service provider network, such as a satellite-based service provider network. Information that may be present in NIT <NUM> may include: television channel numbers, satellite identifiers (which may be used to ensure different satellites are tuned to for reception of timing signals), frequency identifiers and/or transponder identifiers for various television channels. In some embodiments, NIT <NUM> may contain additional data or additional tables may be stored by the television receiver. For example, while specific audio PIDs and video PIDs may not be present in NIT <NUM>, a channel identifier may be present within NIT <NUM> which may be used to look up the audio PIDs and video PIDs in another table, such as a program map table (PMT). In some embodiments, a PID associated with the data for the PMT is indicated in a separate table, program association table (PAT), which is not illustrated in <FIG>. A PAT may be stored by the television receiver in a similar manner to the NIT. For example, a PMT may store information on audio PIDs, and/or video PIDs. A PMT stores data on ECM (entitlement control message) PIDs for television channels that are transmitted on a transponder frequency. If, for a first television channel, multiple television channels are to be tuned to, NIT <NUM> and/or PMT <NUM> may indicate a second television channel that is to be tuned to when a first channel is tuned to.

Based on information in the NIT, it may be possible to determine the proper satellite and transponder to which to tune for a particular television channel. In some embodiments, the NIT may list a particular frequency to which to tune for a particular television channel. Once tuned to the proper satellite/transponder/frequency, the PMT PID may be used to retrieve a program management table that indicates the PIDs for audio and video streams of television channels transmitted by that transponder.

Decoder module <NUM> may serve to convert encoded video and audio into a format suitable for output to a display device. For instance, decoder module <NUM> may receive MPEG video and audio from storage medium <NUM> or descrambling engine <NUM> to be output to a television. MPEG video and audio from storage medium <NUM> may have been recorded to DVR database <NUM> as part of a previously-recorded television program. Decoder module <NUM> may convert the MPEG video and audio into a format appropriate to be displayed by a television or other form of display device and audio into a format appropriate to be output from speakers, respectively. Decoder module <NUM> may have the ability to convert a finite number of television channel streams received from storage medium <NUM> or descrambling engine <NUM> simultaneously. For instance, each of decoders <NUM> within decoder module <NUM> may be able to only decode a single television channel at a time. While decoder module <NUM> is illustrated as having three decoders <NUM> (decoder <NUM>-<NUM>, decoder <NUM>-<NUM>, and decoder <NUM>-<NUM>), in other embodiments, a greater or fewer number of decoders may be present in television receiver <NUM>. A decoder may be able to only decode a single high definition television program at a time.

Television interface <NUM> may serve to output a signal to a television (or another form of display device) in a proper format for display of video and playback of audio. As such, television interface <NUM> may output one or more television channels or stored television programming from storage medium <NUM> (e.g., television programs from DVR database <NUM>) to a television or other form of display device for presentation.

Digital Video Recorder (DVR) functionality may permit a television channel to be recorded for a period of time. DVR functionality of television receiver <NUM> may be managed by control processor <NUM>-<NUM>. Control processor <NUM>-<NUM> may coordinate the television channel, start time, and stop time of when recording of a television channel is to occur. DVR database <NUM> may store information related to the recording of television channels. DVR database <NUM> may store timers that are used by control processor <NUM>-<NUM> to determine when a television channel should be tuned to and its programs recorded to DVR database <NUM> of storage medium <NUM>. In some embodiments, a limited amount of storage medium <NUM> may be devoted to DVR database <NUM>. Timers may be set by the television service provider and/or one or more users of television receiver <NUM>.

DVR database <NUM> may also be used to record recordings of service provider-defined television channels. For each day, an array of files may be created. For example, based on provider-defined timers, a file may be created for each recorded television channel for a day. For example, if four television channels are recorded from <NUM>-<NUM> PM on a given day, four files may be created (one for each television channel). Within each file, one or more television programs may be present. The service provider may define the television channels, the dates, and the time periods for which the television channels are recorded for the provider-defined timers. The provider-defined timers may be transmitted to television receiver <NUM> via the television provider's network. For example, in a satellite-based television service provider system, data necessary to create the provider-defined timers at television receiver <NUM> may be received via satellite.

As an example of DVR functionality of television receiver <NUM> being used to record based on provider-defined timers, a television service provider may configure television receiver <NUM> to record television programming on multiple, predefined television channels for a predefined period of time, on predefined dates. For instance, a television service provider may configure television receiver <NUM> such that television programming may be recorded from <NUM> to <NUM> PM on NBC, ABC, CBS, and FOX on each weeknight and from <NUM> to <NUM> PM on each weekend night on the same channels. These channels may be transmitted as part of a single transponder stream such that only a single tuner needs to be used to receive the television channels. Packets for such television channels may be interspersed and may be received and recorded to a file. If a television program is selected for recording by a user and is also specified for recording by the television service provider, the user selection may serve as an indication to save the television program for an extended time (beyond the time which the predefined recording would otherwise be saved). Television programming recorded based on provider-defined timers may be stored to a portion of storage medium <NUM> for provider-managed television programming storage.

DVR database <NUM> may be used to record entire television programs. Time-shift buffer <NUM> may be used to temporarily record video content that is being output for presentation while being received via tuners <NUM> (or network interface <NUM>). A user may begin viewing television programming "live," but may elect to "pause" the content. While "paused," the content may be recorded to time-shift buffer <NUM>. The user may then navigate forward and backward through the recorded portion of the content. The user may eventually catch back up the live broadcast and the time-shift buffer <NUM> may cease to be recorded. In other embodiments, time-shift buffer <NUM> may continue to be recorded to enable rewinding through the received content.

User input device <NUM> may include a remote control (physically separate from television receiver <NUM>) and/or one or more buttons on television receiver <NUM> that allow a user to interact with television receiver <NUM>. User input device <NUM> may be used to select a television channel for viewing, and/or program a timer stored to DVR database <NUM>, wherein the timer is used to control the DVR functionality of control processor <NUM>-<NUM>. In some embodiments, it may be possible to load some or all of preferences to a remote control. As such, the remote control can serve as a backup storage device for the preferences.

Referring back to tuners <NUM>, television channels received via satellite (or cable) may contain at least some scrambled data. Packets of audio and video may be scrambled to prevent unauthorized users (e.g., nonsubscribers) from receiving television programming without paying the television service provider. When a tuner of tuners <NUM> is receiving data from a particular transponder of a satellite, the transponder stream may be a series of data packets corresponding to multiple television channels. Each data packet may contain a packet identifier (PID), which, in combination with NIT <NUM> and/or PMT <NUM>, can be determined to be associated with a particular television channel. Particular data packets, referred to as entitlement control messages (ECMs), may be periodically transmitted. ECMs may be associated with another PID and may be encrypted; television receiver <NUM> may use decryption engine <NUM> of decryption processing component <NUM> to decrypt ECMs. Decryption of an ECM may only be possible if the user has authorization to access the particular television channel associated with the ECM. When an ECM is determined to correspond to a television channel being stored and/or displayed, the ECM may be provided to decryption processing component <NUM> for decryption.

When decryption processing component <NUM> receives an encrypted ECM, decryption processing component <NUM> may decrypt the ECM to obtain some number of control words. In some embodiments, from each ECM received by decryption processing component <NUM>, two control words are obtained. In some embodiments, when decryption processing component <NUM> receives an ECM, it compares the ECM to the previously received ECM. If the two ECMs match, the second ECM is not decrypted because the same control words would be obtained. In other embodiments, each ECM received by decryption processing component <NUM> is decrypted; however, if a second ECM matches a first ECM, the outputted control words will match; thus, effectively, the second ECM does not affect the control words output by decryption processing component <NUM>. Decryption processing component <NUM> may be permanently part of television receiver <NUM> or may be configured to be inserted and removed from television receiver <NUM>.

Tuning management processor <NUM>-<NUM> may be in communication with tuners <NUM> and control processor <NUM>-<NUM>. Tuning management processor <NUM>-<NUM> may be configured to receive commands from control processor <NUM>-<NUM>. Such commands may indicate when to start/stop recording a television channel and/or when to start/stop causing a television channel to be output to a television. Tuning management processor <NUM>-<NUM> may control tuners <NUM>. Tuning management processor <NUM>-<NUM> may provide commands to tuners <NUM> that instruct the tuners which satellite, transponder, and/or frequency to tune to. From tuners <NUM>, tuning management processor <NUM>-<NUM> may receive transponder streams of packetized data. As previously detailed, some or all of these packets may include a PID that identifies the content of the packet.

Tuning management processor <NUM>-<NUM> may be configured to create one or more PID filters <NUM> that sort packets received from tuners <NUM> based on the PIDs. When a tuner is initially tuned to a particular frequency (e.g., to a particular transponder of a satellite), a PID filter may be created based on the PMT data. The PID filter created, based on the PMT data packets, may be known because it is stored as part of NIT <NUM> or another table, such as a program association table (PAT). From the PMT data packets, PMT may be constructed by tuning management processor <NUM>-<NUM>.

PID filters <NUM> may be configured to filter data packets based on PIDs. In some embodiments, PID filters <NUM> are created and executed by tuning management processor <NUM>-<NUM>. For each television channel to be output for presentation or recorded, a separate PID filter may be configured. In other embodiments, separate hardware may be used to create and execute such PID filters. Depending on a television channel selected for recording/viewing, a PID filter may be created to filter the video and audio packets associated with the television channel (based on the PID assignments present in PMT <NUM>). For example, if a transponder data stream includes multiple television channels, data packets corresponding to a television channel that is not desired to be stored or displayed by the user may be ignored by PID filters <NUM>. As such, only data packets corresponding to the one or more television channels desired to be stored and/or displayed may be filtered and passed to either descrambling engine <NUM> or decryption processing component <NUM>; other data packets may be ignored. For each television channel, a stream of video packets, a stream of audio packets (one or both of the audio programs) and/or a stream of ECM packets may be present, each stream identified by a PID. In some embodiments, a common ECM stream may be used for multiple television channels. Additional data packets corresponding to other information, such as updates to NIT <NUM>, may be appropriately routed by PID filters <NUM>. At a given time, one or multiple PID filters may be executed by tuning management processor <NUM>-<NUM>.

Descrambling engine <NUM> may use the control words output by decryption processing component <NUM> in order to descramble video and/or audio corresponding to television channels for storage and/or presentation. Video and/or audio data contained in the transponder data stream received by tuners <NUM> may be scrambled. Video and/or audio data may be descrambled by descrambling engine <NUM> using a particular control word. Which control word output by decryption processing component <NUM> to be used for successful descrambling may be indicated by a scramble control identifier present within the data packet containing the scrambled video or audio. Descrambled video and/or audio may be output by descrambling engine <NUM> to storage medium <NUM> for storage (in DVR database <NUM>) and/or to decoder module <NUM> for output to a television or other presentation equipment via television interface <NUM>. Video and/or audio that is to be stored to DVR database <NUM> may be re-encrypted and/or re-scrambled using a different encryption and/or scrambling method and keys. Such re-encryption and/or scrambling may be performed by control processors <NUM>-<NUM> or some other processing component.

It should be understood that storage medium <NUM> may include multiple forms of processor-readable storage devices. For example, thumbnail and metadata buffer <NUM> may be stored using an on-processor buffer or random access memory, while thumbnail datastore <NUM>, metadata datastore <NUM>, and DVR database <NUM> may be stored using a hard drive or solid-state drive.

For simplicity, television receiver <NUM> of <FIG> has been reduced to a block diagram; commonly known parts, such as a power supply, have been omitted. Further, some routing between the various modules of television receiver <NUM> has been illustrated. Such illustrations are for exemplary purposes only. The state of two modules not being directly or indirectly connected does not indicate the modules cannot communicate. Rather, connections between modules of the television receiver <NUM> are intended only to indicate possible common data routing. It should be understood that the modules of television receiver <NUM> may be combined into a fewer number of modules or divided into a greater number of modules. Further, the components of television receiver <NUM> may be part of another device, such as built into a television. Television receiver <NUM> may include one or more instances of various computerized components, such as communication buses, processors, storage mediums, interfaces, power supplies, that have been omitted for simplicity.

<FIG> illustrates an embodiment <NUM> of an interface that allows for thumbnail-based navigation. The thumbnail-based navigation interface of <FIG> can be created using television receiver <NUM> or some other form of system or device that has system <NUM> of <FIG> incorporated. In embodiment <NUM>, video content <NUM> is currently being output by television <NUM>. Video content <NUM> may be video content that is received live and is being output for presentation soon after being received by the television receiver. In embodiment <NUM>, video content <NUM> corresponds to current playback location <NUM> of time shift buffer visual representation <NUM> on scrub bar <NUM>. Live video, as received, would correspond to playback location <NUM>. By providing user input, such as by pressing a rewind button or scrolling to the left, a user may move visual indication <NUM> along scrub bar <NUM> to a position within time shift buffer visual representation <NUM>. Based on the location of visual indication <NUM>, a corresponding thumbnail image may be retrieved from a thumbnail datastore, such as thumbnail datastore <NUM> of <FIG>. The retrieved thumbnail may be presented in thumbnail display region <NUM>. As can be seen in the example of embodiment <NUM>, at the earlier location corresponding to visual indication <NUM>, the video content features a pair of horses as indicated in thumbnail display region <NUM>. If the location of visual indication <NUM> is changed, a different thumbnail may be retrieved, which would correspond to a different thumbnail image.

The systems, devices, and interfaces of <FIG> may be used to perform various methods. <FIG> illustrates an embodiment of method <NUM> for generating live thumbnails. Method <NUM> may be performed using system <NUM>. Method <NUM> may be performed using system <NUM> as incorporated as part of television receiver <NUM>. Each step of method <NUM> may be performed using system <NUM> of <FIG>. At block <NUM>, a stream of video content may be received. A user may have provided input indicating whether the video content is to be output for viewing live, is to be recorded to a non-transitory computer readable medium for viewing at a later time, or both. In some embodiments, the stream of video content is received via a tuner, such as a tuner that receives content from a satellite via a satellite antenna. In some embodiments, the stream of video content may be received via a packet-based network, such as the Internet. In other embodiments, a cable based network or some other form of wired or wireless communication may be possible to enable the television receiver to receive the stream of video content at block <NUM>. The video content being received at block <NUM> may continue to occur throughout method <NUM>.

At block <NUM>, the received video content may be decrypted and/or descrambled by the television receiver. In some embodiments, such as those using a set top box, a decryption key may be used to decrypt an encrypted message. From the encrypted message, a descrambling key may be obtained. The scrambling key may then be used to descramble the received video content. In other embodiments, some other arrangement may be used to decrypt, descramble, or decode the received video content. In some embodiments, the video content may not be encrypted or scrambled.

At block <NUM>, a determination is made by a thumbnail generation process being executed by one or more processors of the television receiver as to whether a predefined time period has elapsed since a last thumbnail was generated for the piece of video content. The thumbnail generation process may be in a sleep mode while block <NUM> is being performed. This predefined time period may be set by a television service provider via a configuration setting of the television receiver. Therefore, the predefined time period may be adjusted by the television service provider. The greater the predefined time period, the fewer the number of thumbnails generated and the less amount of processing needing to be performed by the one or more processors. The smaller the predefined time period, the greater the number of thumbnails generated and the greater the amount of processing needing to be formed by the one or more processors to create the thumbnails.

In some embodiments, the amount of time between when thumbnails are generated may be dynamically varied based on the processing load on the one or more processors of the television receiver. Therefore, if the one or more processors are currently being significantly utilized, the amount of time between generation of thumbnails may be increased (to decrease the amount of processing load due to thumbnail generation).

The amount of time may additionally or alternatively be adjusted based on the type of display that will be used to output the content for presentation. For example, on a small display, having fewer thumbnails (which may be created using a lower resolution) may be sufficient for navigation. A smaller number of thumbnails may be sufficient due to the size of the scrub bar (due to the size of the display) and the inability to do highly precise movements with a finger on a small scrub bar. Therefore, the size and/or resolution of a display that will be used for output may be taken into account to determine the amount of time and/or resolution for thumbnails.

Additionally or alternatively, thumbnail creation may be offloaded to a cloud-based server, such as a server operated by a television service provider. An I-frame of the received live video may be sent to the cloud-based server, such as via an IP-based network (which may not be the same network through which the content was received, such as in a satellite-based television distribution network). The cloud-based server may then perform the frame decoding, resizing, then re-encode the resized image as a JPEG image (or other format). This arrangement may increase network traffic of the television receiver, but may decrease the amount of processing performed locally by the one or more processors of the television receiver. Cloud-based thumbnail generation may be triggered by the one or more processors experiencing at least a threshold level of processing load.

If block <NUM> is evaluated in the negative, the thumbnail generation process may remain in a sleep mode. While in the sleep mode, the only function being performed by the thumbnail generation process may be to repeatedly determine if the predefined time period has elapsed since the last generated thumbnail. Therefore, if block <NUM> is evaluated in the negative, method <NUM> may proceed to block <NUM>.

If block <NUM> is evaluated in the positive, method <NUM> may proceed to block <NUM>. At block <NUM>, the thumbnail process may be woken from a sleep state and set to an active state or mode. When set to an active state, the thumbnail generation process may be triggered to create a thumbnail image based on video content being received. At block <NUM>, the thumbnail generation process may monitor the stream of video content being received for the next I-frame to be received. The thumbnail generation process may monitor the output of the component that is decrypting and/or descrambling the received video content for the I-frame. For example, referring to television receiver <NUM>, thumbnail generation engine <NUM> may monitor an output of descrambling engine <NUM> for the next I-frame.

Based on the located I-frame, a thumbnail image may be generated at block <NUM>. The thumbnail image may be based on the I-frame and may be of a reduced resolution from the I-frame. Along with generating the thumbnail image, at block <NUM>, metadata may be created, such as a timestamp that indicates a time to which the thumbnail image corresponds. At block <NUM>, the thumbnail and the associated metadata may be stored. Initially, the thumbnail in the associated metadata may be stored to a buffer, such as in random access memory (RAM). After a certain number of sets of thumbnails and metadata have been stored to the buffer, a batch write process may be performed to write the thumbnails and the metadata to a long-term processor readable storage medium, such as a hard drive or solid state drive. In some embodiments, rather than being based on a certain number of sets of thumbnails and metadata having been stored to the buffer, after a predefined period of time, such as <NUM> minutes, the sets of metadata and thumbnails may be written to the long-term processor readable storage medium. In some embodiments, other events may trigger the batch write, such as: the end of the stream of video content being received, a user command being received to end recording, or a power off command.

At block <NUM>, the thumbnail generation process may be set to a sleep mode in response to the thumbnail having been generated and stored at block <NUM> and <NUM>. Since a thumbnail image was just generated, it can be expected that at least several seconds will elapse before block <NUM> determines that the predefined time period has elapsed. In some embodiments, the predefined time period may be set to five seconds. In other embodiments, greater or shorter predefined time periods may be possible.

At block <NUM>, the video content being received at block <NUM> and decrypted and/or descrambled at block <NUM> may be: output for presentation and/or stored. If output for presentation, the descrambled and/or decrypted content may be output to a presentation device, such as a display screen, incorporated as part of the television receiver device. For instance, a display of a tablet computer may be used. In other embodiments, an external display may be used, such as a television or monitor connected with the television receiver. Additionally or alternatively, the content may be stored for later viewing. The content may be stored as part of a time-shift buffer, such as if a user is currently viewing an earlier portion of the content being received. The content may also be stored to a DVR database, such as if the video content was scheduled to be recorded based on a timer set by a user or by the television service provider. In some embodiments, if the video content is to be stored temporarily, the video content may be scrambled and/or encrypted. If encrypted and/or scrambled, a different algorithm and/or a different scrambling or encryption key may be used than was used for decryption and/or descrambling at block <NUM>.

<FIG> illustrates an embodiment of a method <NUM> for using generated live thumbnails for navigation in video content. Method <NUM> may be performed using one or more thumbnails that were generated according to method <NUM> of <FIG>. Each block of method <NUM> may be performed using a television receiver, such as the television receiver of <FIG>. In other embodiments, a television receiver that is an application being executed by a computerized device, such as a tablet computer or smart phone, may perform method <NUM>.

At block <NUM>, a stream of video content may be received. A user may have provided input indicating whether the video content is to be output for viewing live, is to be recorded to a non-transitory computer readable medium for viewing at a later time, or both. In some embodiments, the stream of video content is received via a tuner, such as a tuner that receives content from a satellite via a satellite antenna. In some embodiments, the stream of video content may be received via a packet-based network, such as the Internet. In other embodiments, a cable based network or some other form of wired or wireless communication may be possible to enable the television receiver to receive the stream of video content at block <NUM>. The video content being received at block <NUM> may continue to occur throughout method <NUM>.

At block <NUM>, input may be received that triggers presentation of a navigation interface. For instance, user may press a button on a remote control that is being used as a user input device for the television receiver. Alternatively, a user may tap the screen to trigger the presentation of the navigation interface. At block <NUM>, a navigation interface may be caused to be presented by the television receiver. The navigation interface may be similar to the navigation interface of <FIG>. At block <NUM>, input may be received that is indicative of a navigation location within the video content that has been (or is being) received. The navigation interface may include a scrub bar that indicates a portion of the content that is available for navigation due to it having been previously recorded, such as using DVR functionality or a time-shift buffer. The input received at block <NUM> may involve moving forward or backward within the piece of content from a current playback position.

In response to a position within the video content selected at block <NUM>, the television receiver may access a metadata datastore to identify a corresponding thumbnail at block <NUM>. Using the metadata datastore, the television receiver may determine an identifier of a thumbnail that corresponds to a particular time within the piece of content. Using the identifier, a thumbnail datastore may be accessed to retrieve the corresponding thumbnail at block <NUM>.

At block <NUM>, the thumbnail retrieved at block <NUM> may be presented in relation to the current navigation location. A user may then continue to navigate to another location or may select the current location for playback.

Also, technology evolves and, thus, many of the elements are examples and do not limit the scope of the invention as defined in the claims.

Specific details are given in the description to provide a thorough understanding of example configurations (including implementations). However, configurations may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the configurations. This description provides example configurations only, and does not limit the scope, applicability, or configurations of the invention as defined in the claims. Rather, the preceding description of the configurations will provide those skilled in the art with an enabling description for implementing described techniques. Various changes may be made in the function and arrangement of elements within the scope of the invention defined in the claims.

Also, configurations may be described as a process which is depicted as a flow diagram or block diagram. Although each may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. A process may have additional steps not included in the figure. Furthermore, examples of the methods may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks may be stored in a non-transitory computer-readable medium such as a storage medium. Processors may perform the described tasks.

Claim 1:
A method for generating thumbnail images for video content navigation, the method comprising:
receiving, by a television receiver (<NUM>), video content;
determining, by one or more processors of the television receiver (<NUM>), a type of display in communication with the television receiver (<NUM>);
adjusting, by the one or more processors of the television receiver (<NUM>), a predefined time period based on the type of the display to be used to view the video content, wherein the predefined time period varies for different types of displays;
while the video content is being received wherein the received video content includes an I-frame, the I-frame being a type of frame encoding that includes all of the data necessary to create a visual image without any additional information:
determining, by the one or more processors (<NUM>) of the television receiver (<NUM>), that the predefined time period has expired;
waking, by the one or more processors (<NUM>) of the television receiver (<NUM>), a thumbnail generation process from a sleep state in response to determining that the predefined time period has expired;
monitoring, by the thumbnail generation process being executed by the one or more processors (<NUM>) of the television receiver (<NUM>), for a next occurring I-frame of the received video content after the thumbnail generation process is woken from the sleep state;
creating, by the thumbnail generation process being executed by the one or more processors (<NUM>) of the television receiver (<NUM>), a thumbnail image based on the next occurring I-frame, the thumbnail image being a reduced resolution image of the I-frame and being mapped to a timestamp that corresponds to a time at which the thumbnail was created from the received video content;
storing, by the thumbnail generation process being executed by the one or more processors (<NUM>) of the television receiver (<NUM>), the thumbnail image mapped to the timestamp; and
in response to storing the thumbnail image, causing the thumbnail generation process to enter the sleep state.