# Patent

## Title
Index of locally recorded content

## Abstract

A method includes generating index data from media events that include video content, the event index data being generated by a server, generating locator code data for the event index data, the locator code data being generated by the server, providing the generated event index data and the locator code data from the server to a memory device for storage, searching the generated event index data to identify a segment of the media events in response to receiving a search request, determining segment locator code data from the locator code data based on the identified segment, and transmitting over a network to the end user media device the segment locator code data that corresponds to the identified at least one segment to enable the end user media device to extract an image from a recorded media event for generating an index display using the extracted image.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 11/592,830 filed Nov. 2, 2006, now issued as U.S. Pat. No. 8,090,694, to Shahraray, et al., the disclosure of which is incorporated herein by reference in its entirety.


FIELD OF THE DISCLOSURE
The application relates generally to the field of multimedia processing, and more specifically to an index of locally recorded content.
BACKGROUND OF THE DISCLOSURE
Broadcasted video programs become available every day, creating a wealth of information and entertainment. The ability to store video, either locally at a user's site, or remotely on remote servers, leads to a potentially large information and entertainment collection.
Having the ability to search through such large local or remote repositories for specific content is useful, especially to save time. However, the searching and retrieving may be difficult or inefficient and may involve transmitting the video program, or some components of it such as images or text, either for replay at the receiving end or for generating a textual and/or pictorial index of the program. Transmitting the video program requires sufficient bandwidth. In the instance where the specific content is located only in a remote repository, retransmitting the content is inefficient.



BRIEF DESCRIPTION OF THE DRAWINGS
An example embodiment of the present invention is illustrated by way of example, and not limitation, in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
FIG. 1 illustrates a system environment in which one embodiment may be implemented.
FIG. 2 illustrates a remote control according to an embodiment.
FIGS. 3 and 4 illustrate interfaces according to embodiments.
FIG. 5 illustrates a method according to an embodiment.
FIG. 6 illustrates an Internet Protocol Television (IPTV) system environment in which one embodiment may be implemented.
FIG. 7 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.



DETAILED DESCRIPTION
According to an aspect of the present subject matter, there is provided a system to remotely index locally recorded content. The method includes extracting, at a remote service provider, event index data from event being locally recorded at a media device and associating the event index data with locator code data of the event. The method further includes storing, at the remote service provider, the extracted event index data and the associated locator code data; searching the extracted event index data for a plurality of segments associated with the event, the search being associated with a search request; determining index display data for a presentation of the plurality of segments based on the search request; and transmitting, to the media device, the locator code data associated with the plurality of segments, and the index display data.
In an embodiment, the service provider is remote from the media device. For example, the service provider may be spaced at a distance from the media device. In another example, the service provider may communicate with the media device through a network. In embodiments where the service provider is local to the media device, the service provider accesses the media device directly without a telecommunications line, for instance.
In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosed embodiments. It will be apparent, however, to one skilled in the art that the disclosed embodiments may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form.
Example System Environment
Referring to FIG. 1, an illustrative embodiment of a system that may be used to provide video content is illustrated and is generally designated 100. As shown, the system 100 may include a service provider tier 102 and a media device tier 104. Tiers 102, 104 are coupled to network 110, such as the Internet; and to a private access network 166 for communication. The private access network 166 may be, for example, a managed video content services access network or may be an Internet Protocol Television (IPTV) access network, as shown in more detail in FIG. 6.
In an illustrative embodiment, modems, such as a modem 122 may be coupled to the private access network 166. The service provider tier 102 may communicate with a representative media device 124 via the modem 122, for instance. The modem 122 may include a transceiver, such as transceiver 123 of modem 122, to receive and send data 184, for instance. The data 184 received may include video content, locator code data, and/or index display data.
The locator code data of a program or a program segment may include, for instance, a start time of the segment or the program, an end time of the segment or the program, a broadcast channel or access point of the program or the segment, a code associated with the program/segment (e.g., VCR+® code). The locator code data may include any other information that may be useful in recording a program/segment and/or in determining access to a locally recorded program/segment. The index display data may include data related to which of the several locally recorded programs and/or program segments are to be represented in an index display (as thumbnails, for instance), how they are to be presented, and in which order, as well as which component of the video program to operate on and what operation to perform on that component (e.g., generate a thumbnail image from the video frame at a given time, or pull out the closed caption text from time t1 to time t2), and any other information that may be useful in the index display format itself, or in representing the segments/programs in the index display.
The index display data for the presentation of the plurality of segments may include a presentation format, including a presentation order of the plurality of segments in a display through the media device. The order may be determined by the search terms or the search results. For example, a most relevant segment may be displayed in the index of the media device first and/or most prominently.
The transceiver 123 may receive the video content from a video content server 180 (or a service provider) on a first bandwidth, and may receive locator code data from the service provider on a second bandwidth that is lower than the first bandwidth. Embodiments herein may work with different bandwidth systems that combine higher quality bandwidths with narrower bandwidths, such as AT&T's HomeZone® (combining Satellite with DSL) and other embodiments that combine Satellite with WiMax, for example.
In another embodiment, the video content and the locator code data may be sent on the same bandwidth, and the locator code data may be sent quickly, in a short burst.
The video content may be sent on a high quality bandwidth, such as from a satellite source, cable source, IPTV source, on-air source, streaming media from the Internet or media downloaded from the Internet, as in a Podcast®, or any other suitable source. The locator code data may be sent via phone, DSL, WiMax, cable source, wireless source, IPTV source, satellite source, on-air source, or any other suitable source. The locator code data and/or the video content may be sent with an electronic program guide (EPG).
The locator code data is received at the receiver 123 in response to a search request associated with the recorded video content.
Because of the different bandwidths, the locator code data may be transmitted to the user separately from the content. The service provider may then avoid retransmitting content along with the locator code data, if desired. Further, because the content is not transmitted along therewith, the process of searching through the event index data and sending the associated locator code data may be more efficiently performed.
In other embodiments, the content and the locator code data are sent to the media device tier on the same bandwidth, either together or separately, as appropriate. Indexing information and/or the locator code data may be embedded in, and transmitted with, the content (e.g., in one of the lines in the vertical blanking interval for analog TV, or in the MPEG user data for digital TV). In another embodiment, the locator code data may not be sent to the media device. In this instance, the service provider may log data in the network, rather than logging data at the media device.
A lower bandwidth bi-directional communications link may send and/or receive data. For example, through the transceiver 123, the media device 124 may transmit information to a video content server 180 about what program the user is or has viewed to use, for example, in a customized web page, as discussed herein. The information concerning viewed programming may be sent through either a lower or higher bandwidth communications link.
Additionally or alternatively to the content servers 180, data 184 may be generated, associated, and provided by an outside database, the device 124, and/or a user of the device 124, in other embodiments not shown.
The service provider tier 102 may communicate with a large number of set-top boxes, such as the representative set-top box 124, over a wide geographic area, such as a regional area, a metropolitan area, a viewing area, a designated market area or any other suitable geographic area, market area, or subscriber or customer group that may be supported by networking the service provider tier 102 to numerous set-top box devices. In an illustrative embodiment, the client-facing tier, or any portion thereof, may be included at a video head-end office.
The media device 124 may include a cable box, a set-top box, a transmitter, a multifunctional device, a digital video recorder, a television, a mobile device (such as a mobile phone), a video cassette recorder, a personal computer, a multifunctional device, an image recorder (e.g., for pictures), an audio recorder (e.g., for satellite radio), or any other media device. The media device may include a user interface on a display 126 (such as a television monitor) associated with the media device 124, for instance.
In a particular embodiment, the service provider tier 102 may be coupled to modem 122 via fiber optic cables. Alternatively, the modem 122 may be digital subscriber line (DSL) modems that are coupled to one or more network nodes via twisted pairs, and the service provider tier 102 may be coupled to the network nodes via fiber-optic cables. Each set-top box device 124 may process data received via the private access network 166, via an IPTV software platform, such as Microsoft®. TV IPTV Edition, as discussed in more detail with regard to FIG. 6.
The device 124 may transmit the data 184 to an external display device, such as the display device 126 for displaying content, such as a broadcast program or event, for instance.
The device 124 may communicate with the remote control 120. The device 124 may include a wireless transceiver (e.g., transmitter and/or receiver) 129 to communicate with a wireless transmitter/receiver (not shown) of the remote controls 120.
As shown in FIG. 2, the remote control 120 may include multiple features or indicators 121 capable of being selected to connect and interact with the device 124. The selections of the segment in the index may be made using features of one of the remote controls 120, as described in more detail herein. The set-top box device 124 may communicate commands (i.e., a search request or record an event or view a segment in the index) received from the remote control devices 120 to the service provider tier 102 via the private access network 166.
Further, the set-top box device 124 may include a STB processor, such as STB processor 170, and a STB memory device, such as STB memory 172, which is accessible to the STB processor 170. In one embodiment, a computer program, such as the STB computer program (STB CP) 174, may be embedded within the STB memory device 172.
The memory 172 of the device 124 may be coupled with a database 186 including recorded data 187, e.g., video content locally recorded from a transmission by a service provider. Each set-top box device 124 may also include a video content storage module, such as a digital video recorder (DVR) 176 shown in FIG. 1. In another embodiment, the DVR may be a network DVR.
The device 124 may include components that enable DVR functionality (not shown). For example, at least one analog/digital video tuner may be included in the device 124. The components may be added to the device 124 and to the tier 102 as the user may record an event locally, while the service provider is also recording the event. The device 124 and the service provider may record the event from either the same source or from a different source.
The device 124 further includes logic (e.g., STB CP 174) to record the content, to process the locator code data and the index display data, and to convert the locator code data and the index display data to the (segment) index display. The locator code data may represent images or frames of the video content and/or segments, or may represent textual information of the video content/segments. The frames and/or text may be extracted from the DVR content and/or database given the time information (from the locator code data), and given additional information regarding which component of the video data to operate on and what operation to perform (e.g., generate a thumbnail image from the video frame at a given time, or pull out the closed caption text from time t1 to time t2).
The segment text and images may be extracted from the locally recorded content using the video content servers 180 and/or the media device 124 to create a segment index page on the display. The extraction may take place from the local device such that it does not involve transmission of any content from the service provider. The segment frames and/or text may become part of the index display of FIGS. 3 and 4, for instance. The frames become thumbnails in the display, and the text may be associated with the frames, accordingly, as shown in FIG. 4. The presentation of the thumbnails, for example, and/or other elements of the index display may be determined by the index display data. The thumbnails in the index may be selected by the user to view a corresponding segment of the content, for example.
The client-facing tier 102 may also include one or more video content servers 180 that transmit video content requested by viewers via their set-top box 124. In an illustrative embodiment, the video content servers 180 may include one or more multicast servers. When a search request is submitted via the device 124, the requests may be transmitted to the video content servers 180 to be processed accordingly.
The event index data corresponding to segments of broadcasted events may be extracted using an index extraction service 181 of the video content servers 180. The service provider may extract event index data from the locally recorded event, automatically, by the index extraction service 181. The event index data may be stored on database 133. The event index data may include images or frames and associated text. The frames may be representative of the associated segments of the recorded event(s). The index extraction service 181 may generate the locator code data, which indicates where in a program the event index data (e.g., the text or picture representing the segment) may be located or the index extraction service may associate the event index data with the locator code data of the event(s). The locator code data may also be stored in the database 133 of the service provider. In an additional embodiment, the event index data may be extracted at the media device, wherein the media device includes the index extraction service 181.
While the service provider may store the actual thumbnail images and the text, this information may not be sent to the user. The information sent to the user (or the media device) is the action to be taken to extract the text and/or images from the locally recorded content at the user's location and the timing information associated with this extraction process, as described in more detail below.
The service provider may search the event index data extracted to search for event segment(s) associated with a search request from the user, for example, searching for a phrase from within a movie. The event index data may be searched by the index association service 182 for at least one segment of an event. The index association service 182 may also determine the index display data for a presentation of the segment(s) based on the search request. The search may include event index data associated with each broadcast event transmitted or received by the video content server, regardless of whether the local device 124 received and/or recorded the content.
In another embodiment, only segments from events that have been locally recorded at the media device 124 are found in the search by the index association service 182, such that the event index data found in the search (and subsequently transmitted to the media device) exclusively includes event index data associated with events previously locally recorded. In another additional embodiment, the event index data may be searched at the media device, wherein the media device includes the index association service 182.
Additionally or alternatively to the content servers 180, event index data may be generated, associated, and provided by an outside database, the device 124, and/or a user of the device 124, in other embodiments not shown. In an embodiment, the media device may be responsive to the index association service 182 to display the index, as described herein.
The service provider tier 102 may also include one or more video content servers 180 that transmit video content requested by viewers via their set-top boxes. In an illustrative embodiment, the video content servers 180 may include one or more multicast servers. The video content servers 180 may additionally or alternatively transmit audio content, and/or image content.
In an illustrative embodiment, the service provider tier 102 may include a transmitter 130 that manages communication between the service provider tier 102 and the private access network 166 and between the service provider tier 102 and the network 110. The transmitter 130 may send the content, locator code data, and/or the index display data to the media device. The means for transmitting the locator code data, and the index display data to the media device may include the transmitter 130.
As shown, the transmitter 130 is coupled to one or more image and data servers 132 for the database(s) 133 that store locator code data associated with images and text of broadcast programs. The means for storing includes the database of at least one of the service provider and the media device. In one embodiment, the database 133 stores the locator code data, but does not store the associated video content and/or the event index data itself (the images and text). In one embodiment, the database 133 stores the index display data for the index presentation of the plurality of segments. The database(s) 133 may also store events, such as broadcast events and related information. In an illustrative embodiment, the image and data servers 132 may be a cluster of servers, each of which may store still images, channel and program-related data, or any combination thereof. In this way, the database 133 is able to maximize capacity and retransmission of video content to the media device is avoided.
Example Remote Control
FIG. 2 illustrates a remote control 200 according to an embodiment. The remote control 200 may represent remote controls 120, 128 of FIG. 1 and their features or indicators 121 capable of being selected. The indicators may include icons (e.g., for use on an LCD screen), buttons, selection keys, a track ball, a wheel, and/or a switch of the remote control.
The features may include a search request feature 235 to reveal the prompt 127 for the search request to be made to the service provider, the search request being associated with segments of the recorded content. The remote control may have an interface to receive textual search requests via a triple-tap interface or another appropriate interface. For example, the remote control may have a keypad with buttons having numbers 0 to 9, and each keypad number button having, for example, 3 different letters associated therewith. Similar to a standard phone key pad, the remote control key pad has letters A, B, and C associated with number button “2”. If this button is pressed once, number 2 may be displayed, and if the button is pressed twice quickly, the letter A is displayed. If the button is pressed thrice quickly, the letter B is displayed, and so on. Similarly, each of the letters of the alphabet may be displayed by pressing the appropriate remote control number button the appropriate number of times.
Additionally, the features may include a selection feature 245 to submit the search request (e.g., an “enter” or “OK” button), or to make a selection of a highlighted item or segment on the index (see highlighted items 310 and 360 of FIGS. 3 and 4, respectively). Upon selection of the segment, the recorded content associated therewith may be viewed. The indicators may also include a view index feature 255 to view an index on the display or interface, illustrated at FIGS. 3 and 4, for example. Feature(s) 265 may enable navigation through the segments of the index for selection and viewing.
Example Interfaces
FIGS. 3 and 4 illustrate interfaces 300 and 310, respectively, according to embodiments. Interface 300 includes a plurality of image thumbnails on the display 126. The image thumbnails may represent an index of segments of recorded content, the index being based on content search results, as described herein. Thumbnail 305 is highlighted and may be selected by the user for viewing the associated segment. The segment may be associated with locally recorded content. In an additional embodiment, the segment may be associated with remotely recorded content.
Interface 310 includes a plurality of image thumbnails with associated text, such as closed captions or subtitles or speech recognition, on the display 126. The thumbnails and associated text may represent an index of segments and may be associated with the search request described herein. The images (or text) may be browsed, using the remote control 220, and an image may be selected to jump to the corresponding point in the recorded content. Thumbnail 315 is highlighted and may be selected by the user for viewing the associated segment.
Flow Chart
FIG. 5 illustrates a method 320 according to an embodiment. The steps described below may be performed under the control of a programmed processor, such as processor 502 and/or processor 170, or the logic may be implemented and distributed among hardware, firmware, software, or a combination thereof within the digital video recorder 176, for example.
The content may be directly recorded by the user on a local recorder. The user may schedule a local recording also by informing the service provider, the service provider then sends commands to the set-top box to program it. The service provider may record the scheduled event, as well, and extract the event index data. The service provider may then provide the locator code data without the original content or any of its media components, thereby avoiding both the possible bandwidth limitations between the user and the service provider, as well as the legal issues regarding the content.
At block 325, the user records event(s) on the media device 124, at the client side. The event may be included in the recorded data 187 of the database 186. The user may schedule a local recording by informing the service provider. The service provider then sends the commands to the local device 124 to program the box to record the content. The service provider then knows what program(s) the user is recording and then may record the program as well in block 330.
At block 330, on the service provider side, the service provider may record the same event(s) onto the database 133.
At block 335, the service provider may extract event index data from the recorded event. The information may be extracted automatically by the index extraction service 181 and stored on the database 133. The event index data may include images or frames and associated text. The event index data may include metadata regarding the broadcasted event, for instance, title, genre, date, channel, actor(s), synopsis, or other program information. The event index data may include content-based (linguistic content) data from the event, such as, closed captions, subtitles, automatic speech recognition (ASR) from the audio track, off-line transcripts, and images of the broadcasted event.
The frames may be representative of the associated segments of the recorded event(s). The index extraction service 181 may associate the event index data with locator code data, which indicates where in a program the event index data may be located. The locator code data may be stored in the database 133 of the service provider. In an additional embodiment, the event index data may be extracted at the media device, wherein the media device includes the index extraction service 181.
At block 340, the user initiates the search request. The user may use the remote control and/or the media device to prompt for the search request on the display and to submit the search request, as described herein. The search request may be submitted to the service provider. The search may be a text-based search for metadata, captions, subtitles or other textual information associated with segments of the recorded event(s).
At block 345, the service provider may search the event index data extracted at 335 for event segment(s) associated with the search request at block 340. The event index data may be searched automatically by the index association service 182. The search may include event index data associated with each broadcast event transmitted or received by the video content server 180, regardless of whether the local device 124 received and/or recorded the content. In another embodiment, only the event(s) locally recorded on the media device are searched by the index association service 182, such that the event index data found in the search (and subsequently transmitted to the media device) exclusively includes event index data associated with events previously recorded locally. In another additional embodiment, the event index data may be searched at the media device, wherein the media device includes the index association service 182.
At block 350, an index page is generated at the client side by extracting text and/or images from the locally recorded content to create a search result page (i.e., index display). The index display may be generated using the event index data transmitted from the service provider. In another embodiment, the index display may be generated using the associated locator code data, as described herein, transmitted from the service provider.
At block 355, the user may view the search results in an index display of event segment(s) associated with the search request. Index examples are illustrated at interfaces 300 and 310 of FIGS. 3 and 4, respectively.
A pictorial index of the entire program or event may be provided by the service provider to enable efficient content-based navigation of the event or video program. The thumbnail images that compose the pictorial index may be created at the user's end on the set-top box (STB) by pulling out certain frames of the video from the locally recorded content based on the information supplied by the service provider in the form of commands that, in addition to other information, carry the time/frame number for the given frame. The thumbnail images may alternatively be created by the service provider and transmitted as thumbnail images (rather than as locator code data and index display data) to the set-top box or device 124.
Using the index extraction service, the locator code data may be synchronized to the at least one broadcast event locally recorded at the media device. Synchronization may compensate for any possible lack of clock synchronization between the user and service provider or multiple service providers. For example, there may not be synchronization where video information and corresponding index information (e.g., locator code data and index display data) are supplied by different service providers. In another example, there may not be synchronization due to the differences in the starting point of the videos recorded by the user and recorded by the service provider. The differences in starting points may be due to different amounts of “padding” having to do with how many minutes in advance of the beginning of the program the recording started. When the content processed by the service provider and the DVR content are temporally synchronized, frames (i.e., thumbnails) corresponding to the locator code data may be extracted from the DVR content given the time information. A segment of text from the closed captions may also be extracted from the local content at the user's side by receiving ‘in’ and ‘out’ times from the service provider. Each segment of text may be associated with one of the frames.
In the event that the starting time of the content on the DVR does not match the timing of the program that the service provider processed to extract the index, the timing information does not match. There may be several possible reasons for the mismatch. The DVR may not have the correct time and/or the correct starting time of the recording process. Even if the starting times coincide, there may be some compression or expansion of time between the two versions of the recording due to inaccuracies in the respective systems' clock speed, resulting in a gradual shift of time between the two sources.
To circumvent any issues arising from any time shift between the DVR content and the locator code data, the data is automatically synchronized to the recording on the DVR. In particular, timing markers may be inserted in the content. Further, implicit information in the content, such as the audio or the scene-change information, may be used to establish correct time correspondence between the two sources. For example, the service provider may read a short segment of the audio from the beginning of the video program on the DVR and an end segment; perform audio matching to compute the time shift and time warp between the two sources; and apply corrections to compensate for any difference.
At block 360, from the index display, the user selects one of the thumbnails (or text) to view the corresponding segment of the content on the display. The selected content is played from the local client system, and may not be sent by the service provider upon selection.
In embodiments discussed herein, a DVR may receive or download an event from one of a variety of sources. The DVR may receive indexing information (e.g., locator code data and/or index display data) from a service provider (which may not even be the one providing the video itself), and the DVR may receive this information in a manner that does not involve sending any of the components of the content in its original form or even in a modified form.
Example Internet Protocol Television System Environment
Referring to FIG. 6, an illustrative embodiment of an Internet Protocol Television (IPTV) system that may be used to provide video content is illustrated and is generally designated 400. As shown, the system 400 may include the media device tier 104, a client facing tier 402, an application tier 404, an acquisition tier 406, and an operations and management tier 408. Each tier 402, 404, 406, 408 is coupled to a private network 410; to a public network 412, such as the Internet; or to both the private network 410 and the public network 412. For example, the client-facing tier 402 may be coupled to the private network 410. Further, the application tier 404 may be coupled to the private network 410 and to the public network 412. The acquisition tier 406 may also be coupled to the private network 410 and to the public network 412. Additionally, the operations and management tier 408 may be coupled to the public network 412.
As illustrated in FIG. 6, the various tiers 402, 404, 406, 408 communicate with each other via the private network 410 and the public network 412. For instance, the client-facing tier 402 may communicate with the application tier 404 and the acquisition tier 406 via the private network 410. The application tier 404 may also communicate with the acquisition tier 406 via the private network 410. Further, the application tier 404 may communicate with the acquisition tier 406 and the operations and management tier 408 via the public network 412. Moreover, the acquisition tier 406 may communicate with the operations and management tier 408 via the public network 412. In a particular embodiment, elements of the application tier 404, including, but not limited to, a client gateway 450, may communicate directly with the client-facing tier 402.
As illustrated in FIG. 6, the client-facing tier 402 may communicate with user equipment via a private access network 466, such as an Internet Protocol Television (IPTV) access network. In an illustrative embodiment, modems, such as a first modem 414 and the modem 122 may be coupled to the private access network 466. The client-facing tier 402 may communicate with a first representative media device 416 via the first modem 414. The client-facing tier 402 has similar characteristics to the service provider tier 102 of FIG. 1. Like reference numerals designate similar elements in the drawing figures.
In a particular embodiment, the client-facing tier 402 may be coupled to the modems 414, 122 via fiber optic cables. Alternatively, the modems 414 and 122 may be digital subscriber line (DSL) modems that are coupled to one or more network nodes via twisted pairs, and the client-facing tier 402 may be coupled to the network nodes via fiber-optic cables. Each set-top box device 416, 124 may process data received via the private access network 466, via an IPTV software platform, such as Microsoft® TV IPTV Edition. The media device 124, 416 may include a user interface for IPTV on a display 126, 418, for instance. The set-top boxes 416, 124 may transmit the data 484 to the external display device 418, 126 for displaying content, such as a broadcast program or event, for instance. The first set-top box device 416 may communicate with a remote control 428.
In an illustrative embodiment, the client-facing tier 402 may include a client-facing tier (CFT) switch 430 that manages communication between the client-facing tier 402 and the private access network 466 and between the client-facing tier 402 and the private network 410. The switch 430 may act as a transmitter to send the content and/or locator code data to the media device. The means for transmitting the locator code data to the media device may include the switch 430.
The CFT switch 430 may also be coupled to a terminal server 434 that provides terminal devices with a connection point to the private network 410. In a particular embodiment, the CFT switch 430 may also be coupled to a video-on-demand (VOD) server 436 that stores or provides VOD content imported by the IPTV system 400.
As illustrated in FIG. 6, the application tier 404 may communicate with both the private network 410 and the public network 412. The application tier 404 may include a first application tier (APP) switch 438 and a second APP switch 440. In a particular embodiment, the first APP switch 438 may be coupled to the second APP switch 440. The first APP switch 438 may be coupled to an application server 442 and to an OSS/BSS gateway 444. In a particular embodiment, the application server 442 may provide applications to the set-top box devices 416, 124 via the private access network 466, which enable the set-top box devices 416, 124 to provide functions, such as display, messaging, processing of IPTV data and VOD material, etc. In a particular embodiment, the OSS/BSS gateway 444 includes operation systems and support (OSS) data, as well as billing systems and support (BSS) data. In one embodiment, the OSS/BSS gateway 444 may provide or restrict access to an OSS/BSS server 464 that stores operations and billing systems data. The BSS may contain or access the watched program log information, for usage billing purposes, for example.
Further, the second APP switch 440 may be coupled to a domain controller 446 that provides web access, for example, to users via the public network 412. For example, the domain controller 446 may provide remote web access to IPTV account information via the public network 412, which users may access using their personal computers 468. The second APP switch 440 may be coupled to a subscriber and system store 448 that includes account information, such as account information that is associated with users who access the system 400 via the private network 410 or the public network 412. In a particular embodiment, the application tier 404 may also include a client gateway 450 that communicates data directly with the client-facing tier 402. In this embodiment, the client gateway 450 may be coupled directly to the CFT switch 430. The client gateway 450 may provide user access to the private network 410 and the tiers coupled thereto.
In a particular embodiment, the set-top box devices 416, 124 may access the IPTV system 400 via the private access network 466, using information received from the client gateway 450. In this embodiment, the private access network 466 may provide security for the private network 410. User devices may access the client gateway 450 via the private access network 466, and the client gateway 450 may allow such devices to access the private network 410 once the devices are authenticated or verified. Similarly, the client gateway 450 may prevent unauthorized devices, such as hacker computers or stolen set-top box devices from accessing the private network 410, by denying access to these devices beyond the private access network 466.
For example, when the first representative set-top box device 416 accesses the system 400 via the private access network 466, the client gateway 450 may verify subscriber information by communicating with the subscriber and system store 448 via the private network 410, the first APP switch 438, and the second APP switch 440. Further, the client gateway 450 may verify billing information and status by communicating with the OSS/BSS gateway 444 via the private network 410 and the first APP switch 438. In one embodiment, the OSS/BSS gateway 444 may transmit a query across the first APP switch 438, to the second APP switch 440, and the second APP switch 440 may communicate the query across the public network 412 to the OSS/BSS server 464. After the client gateway 450 confirms subscriber and/or billing information, the client gateway 450 may allow the set-top box device 416 access to IPTV content and VOD content. If the client gateway 450 cannot verify subscriber information for the set-top box device 416, e.g., because it may be connected to an unauthorized twisted pair, the client gateway 450 may block transmissions to and from the set-top box device 416 beyond the private access network 466.
As indicated in FIG. 6, the acquisition tier 406 includes an acquisition tier (AQT) switch 452 that communicates with the private network 410. The AQT switch 452 may also communicate with the operations and management tier 408 via the public network 412. In a particular embodiment, the AQT switch 452 may be coupled to a live acquisition server 454 that receives television or movie content, for example, from a broadcast service 456. In a particular embodiment during operation of the IPTV system, the live acquisition server 454 may acquire television or movie content. The live acquisition server 454 may transmit the television or movie content to the AQT switch 452, and the AQT switch 452 may transmit the television or movie content to the CFT switch 430 via the private network 410.
Further, the television or movie content may be transmitted to the video content servers 480, where it may be encoded, formatted, stored, or otherwise manipulated and prepared for communication to the set-top box devices 416, 124. The CFT switch 430 may communicate the television or movie content (and the locator code data and the index display data) to the modems 414, 122 via the private access network 466. The set-top box devices 416, 124 may receive the television or movie content via the modems 414, 122, and may transmit the television or movie content to the display devices 418, 126. In an illustrative embodiment, video or audio portions of the television or movie content may be streamed to the set-top box devices 416, 124.
In an example, non-limiting embodiment, each set-top box device 416, 124 may receive content data 484, which may include video content and/or audio content or portions thereof, from the client-facing tier 402 via the private access network 466. The content data 484 may be associated with at least one program, such as a broadcast program itself. Multiple programs may be broadcast through the content data 484 at any given time, each with their own program content data.
Further, the AQT switch may be coupled to a video-on-demand importer server 458 that stores television or movie content received at the acquisition tier 406 and communicates the stored content to the VOD server 436 at the client-facing tier 402 via the private network 410. Additionally, at the acquisition tier 406, the video-on-demand (VOD) importer server 458 may receive content from one or more VOD sources outside the IPTV system 400, such as movie studios and programmers of non-live content. The VOD importer server 458 may transmit the VOD content to the AQT switch 452, and the AQT switch 452, in turn, may communicate the material to the CFT switch 430 via the private network 410. The VOD content may be stored at one or more servers, such as the VOD server 436.
When users issue requests for VOD content via the set-top box devices 416, 124, the requests may be transmitted over the private access network 466 to the VOD server 436, via the CFT switch 430. Upon receiving such requests, the VOD server 436 may retrieve the requested VOD content and transmit the content to the set-top box devices 416,124 across the private access network 466, via the CFT switch 430. The set-top box devices 416, 124 may transmit the VOD content to the display devices 418, 126. In an illustrative embodiment, video or audio portions of VOD content may be streamed to the set-top box devices 416, 124.
FIG. 6 further illustrates that the operations and management tier 408 may include an operations and management tier (OMT) switch 460 that conducts communication between the operations and management tier 408 and the public network 412. In the embodiment illustrated by FIG. 6, the OMT switch 460 is coupled to a TV2 server 462. Additionally, the OMT switch 460 may be coupled to an OSS/BSS server 464 and to a simple network management protocol (SNMP) monitor server 478 that monitors network devices within or coupled to the IPTV system 400. In a particular embodiment, the OMT switch 460 may communicate with the AQT switch 452 via the public network 412.
In an illustrative embodiment, the live acquisition server 454 may transmit the television or movie content to the AQT switch 452, and the AQT switch 452, in turn, may transmit the television or movie content to the OMT switch 460 via the public network 412. In this embodiment, the OMT switch 460 may transmit the television or movie content to the TV2 server 462 for display to users accessing the user interface at the TV2 server 462. For example, a user may access the TV2 server 462 using the personal computer (PC) 468 coupled to the public network 412.
Computer Architecture
FIG. 7 shows a diagrammatic representation of a machine in the example form of a computer system 500 within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a digital video recorder (DVR), a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a handheld device, a portable audio/video player (Portable Media Player—PMP), a cellular telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example computer system 500 includes a processor 502 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 504 and a static memory 506, which communicate with each other via a bus 508. The main memory 504 and/or the static memory 506 may be used to store the recorded programs, and other data or information discussed herein. In an additional embodiment, the data may be stored in volatile memory.
The computer system 500 may further include a video display unit 510 (e.g., a television, a liquid crystal display (LCD) or a cathode ray tube (CRT)) on which to display broadcast or other programs, for example. The computer system 500 also includes an alphanumeric input device 512 (e.g., a keyboard or a remote control), a user interface (UI) navigation device 514 (e.g., a remote control, or a mouse), a disk drive unit 516, a signal generation device 518 (e.g., a speaker) and a network interface device 520.
The input device 512 and/or the navigation device 514 (e.g., the remote control) may include a processor (not shown), and a memory (not shown).
The disk drive unit 516 includes a machine-readable medium 522 on which is stored one or more sets of instructions and data structures (e.g., software 524) embodying or utilized by any one or more of the methodologies or functions described herein. The software 524 may also reside, completely or at least partially, within the main memory 504 and/or within the processor 502 during execution thereof by the computer system 500, the main memory 504 and the processor 502 also constituting machine-readable media.
The software 524 and/or the data stream 184 from the content provider may further be transmitted or received over a network 526 (e.g., a television cable provider) via the network interface device 520 utilizing any one of a number of well-known transfer protocols (e.g., broadcast transmissions, HTTP).
While the machine-readable medium 522 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention, or that is capable of storing, encoding or carrying data structures utilized by or associated with such a set of instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media, and carrier wave signals.
Although an embodiment of the present invention has been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

## Claims

1. A server device comprising:
a memory to store instructions; and
a processor coupled to the memory, wherein the processor, responsive to executing the instructions, performs operations comprising:
directing a set-top box to record a first plurality of media programs for storage at the set-top box responsive to receiving recording requests from the set-top box;
extracting index data from a second plurality of media programs stored at a provider network, wherein the index data comprises searchable data associated with video frames of the second plurality of media programs;
receiving a search request from the set-top box to perform a search of the index data;
searching the index data according to the search request to generate search results, wherein the searching is constrained to a portion of the second plurality of media programs that correspond to the first plurality of media programs that are stored at the set-top box, wherein the search results comprise index display data and locator code data, wherein the index display data identifies a plurality of segments of the second plurality of media programs and provides an order of presentation of the plurality of segments, wherein the locator code data identifies a plurality of locations of the plurality of segments in the second plurality of media programs, and wherein the order of presentation of the plurality of segments is based on relevance of each of the plurality of segments according to matches of search criteria in the search request;
comparing first content from the first plurality of media programs stored at the set-top box with second content from the second plurality of media programs stored at the provider network for the plurality of segments identified by the searching to determine a plurality of time shifts between the first plurality of media programs and the second plurality of media programs for the plurality of segments;
correcting the index display data and the locator code data for the plurality of segments according to the plurality of time shifts, wherein the correcting of the locator code data synchronizes the locator code data to the plurality of segments of the first plurality of media programs stored at the set-top box; and
transmitting the corrected index display data and the corrected locator code data to the set-top box, wherein the set-top box generates an index page for user selection and presentation of the plurality of segments identified by the searching from the first plurality of media programs stored at the set-top box according to the corrected index display data and the corrected locator code data, wherein the index page comprises a pictorial index created at the set-top box based on command information transmitted by the server device, and wherein the pictorial index comprises thumbnail images generated by extracting video frames associated with the first plurality of media programs stored at the set-top box.

2. The server device of claim 1, wherein the comparing further comprises comparing two segments of the plurality of segments from each of the first plurality of media programs stored at the set-top box and the second plurality of media programs stored at the provider network to determine the plurality of times shifts.

3. The server device of claim 1, wherein the comparing further comprises determining a time warp between the first plurality of media programs and the second plurality of media programs for the plurality of segments and wherein the correcting of the index display data and the locator code data is further according to the time warp.

4. The server device of claim 1, wherein the comparing further comprises comparing first audio from the first plurality of media programs stored at the set-top box with second audio from the second plurality of media programs stored at the provider network and audio matching to determine the plurality of times shifts between the first plurality of media programs and the second plurality of media programs for the plurality of segments.

5. The server device of claim 4, wherein the set-top box receives the first plurality of media programs at a first bandwidth and wherein the locator code data is transmitted to the set-top box at a second bandwidth that is lower than a first bandwidth.

6. A method comprising:
extracting, by a server device comprising a processor, index data from a first plurality of media programs stored at a provider network, wherein the index data comprises searchable data associated with video frames of the first plurality of media programs;
directing, by the server device, a set-top box to record a second plurality of media programs for storage at the set-top box responsive to receiving recording requests from the set-top box;
searching, by the server device, the index data according to a search request to generate search results, wherein the searching is constrained to a portion of the first plurality of media programs that correspond to the second plurality of media programs that are stored at the set-top box, wherein the search results comprise index display data and locator code data, wherein the index display data identifies a plurality of segments of the first plurality of media programs and provides an order of presentation of the plurality of segments, wherein the locator code data identifies a plurality of locations of the plurality of segments in the first plurality of media programs, and wherein the order of presentation of the plurality of segments is based on relevance of each of the plurality of segments according to matches of search criteria in the search request;
comparing, by the server device, first content from the second plurality of media programs stored at the set-top box with second content from the first plurality of media programs stored at the provider network for the plurality of segments identified by the searching to determine a plurality of time shifts between the first plurality of media programs and the second plurality of media programs for the plurality of segments;
correcting, by the server device, the index display data and the locator code data for the plurality of segments according to the plurality of time shifts, wherein the correcting of the locator code data synchronizes the locator code data to the plurality of segments of the first plurality of media programs stored at the set-top box; and
transmitting, by the server device, the corrected index display data and the corrected locator code data to the set-top box, wherein the set-top box generates an index page for user selection and presentation of the plurality of segments identified by the searching from the first plurality of media programs stored at the set-top box according to the corrected index display data and the corrected locator code data, wherein the index page comprises a pictorial index created at the set-top box based on command information transmitted by the server device, and wherein the pictorial index comprises thumbnail images generated by extracting video frames associated with the first plurality of media programs stored at the set-top box.

7. The method of claim 6, wherein the comparing further comprises comparing two segments of the plurality of segments from each of the first plurality of media programs stored at the provider network and the second plurality of media programs stored at the set-top box to determine the plurality of times shifts.

8. The method of claim 6, wherein the comparing further comprises determining a time warp between the first plurality of media programs and the second plurality of media programs for the plurality of segments and wherein the correcting of the index display data and the locator code data is further according to the time warp.

9. The method of claim 6, wherein the plurality of segments comprises one of video content, audio content, or image content.

10. The method of claim 6, wherein the index data comprises one of text information associated with the first plurality of media programs and pictorial information associated with the first plurality of media programs.

11. A non-transitory machine-readable medium comprising instructions, which when executed by a processor performs operations, comprising:
extracting, by a server device comprising a processor, index data from a first plurality of media programs stored at a provider network, wherein the index data comprises searchable data associated with video frames of the first plurality of media programs;
directing, by the server device, a set-top box to record a second plurality of media programs for storage at the set-top box responsive to receiving recording requests from the set-top box;
searching, by the server device, the index data according to a search request to generate search results, wherein the searching is constrained to a portion of the first plurality of media programs that correspond to the second plurality of media programs that are stored at the set-top box, wherein the search results comprise index display data and locator code data, wherein the index display data identifies a plurality of segments of the first plurality of media programs and provides an order of presentation of the plurality of segments, wherein the locator code data identifies a plurality of locations of the plurality of segments in the first plurality of media programs, and wherein the order of presentation of the plurality of segments is based on relevance of each of the plurality of segments according to matches of search criteria in the search request;
comparing, by the server device, first content from the second plurality of media programs stored at the set-top box with second content from the first plurality of media programs stored at the provider network for the plurality of segments identified by the searching to determine a plurality of time shifts between the first plurality of media programs and the second plurality of media programs for the plurality of segments;
correcting, by the server device, the index display data and the locator code data for the plurality of segments according to the plurality of time shifts, wherein the correcting of the locator code data synchronizes the locator code data to the plurality of segments of the first plurality of media programs stored at the set-top box; and
transmitting, by the server device, the corrected index display data and the corrected locator code data to the set-top box, wherein the set-top box generates an index page for user selection and presentation of the plurality of segments identified by the searching from the first plurality of media programs stored at the set-top box according to the corrected index display data and the corrected locator code data, wherein the index page comprises a pictorial index created at the set-top box based on command information transmitted by the server device, and wherein the pictorial index comprises thumbnail images generated by extracting video frames associated with the first plurality of media programs stored at the set-top box.

12. The non-transitory machine-readable medium of claim 11, wherein the comparing further comprises comparing first audio from the first plurality of media programs stored at the provider network with second audio from the second plurality of media programs stored at the set-top box and audio matching to determine the plurality of times shifts between the first plurality of media programs and the second plurality of media programs for the plurality of segments.

13. The non-transitory machine-readable medium of claim 11, wherein the extracting further comprises identifying that media programs of the first plurality of media programs correspond to one of video content, audio content, or image content.

14. The non-transitory machine-readable medium of claim 11, wherein the comparing further comprises comparing two segments of the plurality of segments from each of the first plurality of media programs stored at the provider network and the second plurality of media programs stored at the set-top box to determine the plurality of times shifts.

15. The non-transitory machine-readable medium of claim 11, wherein the comparing further comprises determining a time warp between the first plurality of media programs and the second plurality of media programs for the plurality of segments and wherein the correcting of the index display data and the locator code data is further according to the time warp.

16. The non-transitory machine-readable medium of claim 11, wherein the locator code data is transmitted over an internet protocol television access network and transmitted along with an electronic program guide.