Patent ID: 12210563

In the drawings, like reference numbers generally indicate identical or similar elements. Additionally, generally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears.

DETAILED DESCRIPTION

Overview

Provided herein are system, apparatus, device, method and/or computer program product embodiments, and/or combinations and sub-combinations thereof, for implementing a flexible image repository. The flexible image repository performs delta processing to provide a subset of stored images to a subscriber device in response to an image update request. The images display in an interactive user experience furnished by a point-to-multipoint communication system that allows subscriber devices to browse available media content. The flexible image repository employs a caching layer to optimize the retrieval, update, transmission, and display of images in the user experience. The flexible image repository leverages an image repository management application that allows content managers to update the images in the image repository. The management application tags images according to a naming convention that standardizes image cataloging, allowing the flexible image repository to serve multiple platforms with differing user interfaces.

Service providers may provide services to subscribers that offer media content such as movies, television shows, news, and/or sports programming, to provide some examples. To allow subscribers to browse and interact with the media content, service providers may advance a graphical user interface that provides a dynamic, interactive, immersive user experience. In some embodiments, such a graphical user interface may include an electronic programming guide (EPG) that displays the programming and channels offered by the service provider. A subscriber may select programs and channels within the EPG to receive additional information about the selected program/channel. The user interface may also allow subscribers to initiate recordings, schedule recordings, playback previously created recordings, control playback in a variety of fashions, and perform other suitable video-on-demand functions. Subscribers may perform a variety of other functions and actions in such a user interface, as will be understood by one skilled in the relevant art(s).

The graphical user interface may incorporate a large number of rich, colorful, and expressive graphics, images, and other media files to build and present an immersive, interactive, and dynamic user experience. Such images may be static, e.g., a single, unmoving graphic, or dynamic, e.g., an animation or short movie. Images may vary according to the types of media content displayed and by the functions executed by a subscriber with respect to the media content. For example, in an EPG, an image may display in association with a channel or channels, e.g., a logo or other indicator of the source of the channel. For further example, when viewing details about a particular program, a poster may display as the background that reflects the particular program being viewed, e.g., a movie poster may display when a subscriber views the details of a movie or selects the movie for playback.

These dynamic and rich images presented in the immersive graphical user interface may require significant storage space. Some images may be large files, especially when the image has a higher resolution or is a dynamic image. Moreover, the sheer number of images used in the immersive user experience may present significant additional storage and bandwidth complexities, as a unique image may exist for each piece of media content offered by the service provider. For example, if a service provider offers a large number of movies or television programs to subscribers, each movie and program may display a unique poster when a subscriber views the program information. Moreover, different versions of the same image may be stored to accommodate various subscriber devices, screen displays, resolutions, and other suitable requirements. A subscriber may also resize the screen display, causing the image to update automatically in response.

Additionally, images may change frequently in some platforms. In one use case, new media content may become available having new images to associate with the new media content. Existing images may not exist to address the new content, and a content manager may add a new image in association with the new content. For example, additional channels may become available to display in an EPG, and a content manager may add a new image to the image repository in association with the new channel. In another use case, content managers may modify or update images associated with existing media content. For example, service providers may change images associated with media content for business, artistic, aesthetic, or other suitable reasons.

As an additional complicating factor, a service provider may offer multiple platforms, products, brands, sub-brands, etc. For example, a service provider may present a first immersive graphical user interface in association with a first platform, and a second immersive graphical user interface in association with a second platform. The available platforms may vary by geographical region, for example. While the first immersive graphical user interface and the second immersive graphical user interface may differ in many regards, both interfaces may display similar images in association with duplicative media content, EPGs, and other interface features. Thus, though a service provider may offer different platforms, a single image repository may retrieve and provide images across the differing platforms.

Legacy solutions fail to provide suitable tools that allow content managers to add, update, delete, and modify images displayed in an immersive user experience offered by a service provider. For example, storing the images in a simple file system and employing a web server to serve the images faces limitations in disk space, portability, and bandwidth usage. Such a solution also fails to service multiple platforms (providing differing graphical user interfaces) using the same image repository.

Accordingly, a need exists to implement a flexible image repository that performs delta processing to provide a subset of stored images to a subscriber device. Delta processing provides a further technical benefit in that a subscriber device may update a client-side cache of the images at a reduced bandwidth and processing cost. Accordingly, such updates may occur more frequently, e.g., each time the subscriber device powers on, according to a schedule, or upon reception of a notification from the service provider system.

An additional need exists to employ a caching layer in an image retrieval service that accesses the image repository to further optimize the retrieval and display of the images and improve the efficacy of the delta processing. A further technical benefit is realized by employing the caching layer because the image retrieval service may avoid accessing the image repository when serving images and performing delta processing, thereby reducing or eliminating an I/O bottleneck that may otherwise arise when accessing the actual disk storage. Thus, in a system having hundreds, thousands, millions, or more of subscriber devices, by storing the updated images in the caching layer at the service provider, additional accesses to the actual image repository are reduced thereby optimizing the efficiency of the system in its entirety.

A further need exists to provide a management application that tags images according to a naming convention, which allows the flexible image repository to service a multitude of subscriber devices, platforms, and user interfaces. A further technical benefit of the image repository is that by tagging images according to a specific naming convention, the image repository may service multiple platforms that use the same images but may have different access requirements, API calls, or functional behaviors. This also offers content owners additional flexibility, brand control, and customization over legacy solutions.

Exemplary Point-to-Multipoint Communication System

FIG.1illustrates a block diagram of an exemplary point-to-multipoint communication system including a service provider system offering an image retrieval service and an image repository management application, according to an embodiment of the present disclosure. Point-to-multipoint communication system100includes subscriber devices102.1through102.n, communication network104, content manager106, and service provider system110.

Subscriber devices102.1through102.nmay represent one or more personal computers, data terminal equipment, one or more telephony devices, such as one or more mobile phones or one or more mobile computing devices to provide some examples, one or more broadband media players, one or more network-controlled appliances, one or more set-top boxes, one or more wireless routers, CPEs, and/or other devices that are capable of transmitting and/or receiving video, audio, and/or data that will be apparent to those skilled in the relevant art(s) without departing from the spirit and scope of the present disclosure. Subscriber devices102.1through102.nmay allow a subscriber to interact with a dynamic, graphic-rich, interactive user interface, i.e., an immersive user experience, that allows the subscriber to browse, playback, and gather more information about media content offered by service provider system110. In one embodiment, subscriber devices102.1through102.nmay generate and render the dynamic user interface provided to the subscriber. In another embodiment, subscriber devices102.1through102.nmay passively interact with a dynamic user interface generated at service provider system110by interactive user interface112. In other embodiments, a combination of these approaches may be used, i.e., some interface components may be generated by interactive user interface112and provided to subscriber devices102.1through102.nwhile client-side components may be generated by the subscriber devices. Using the immersive user experience, a subscriber may browse and interact with the media content, view an EPG, receive additional information about desired programs/channels, initiate recordings, schedule recordings, playback previously created recordings, control playback in a variety of fashions, and perform other suitable functions related to the media content. The user experience may incorporate a large number of rich, colorful, and expressive graphics, which may require significant storage to house.

Subscriber devices102.1through102.nmay use sufficient storage, e.g., hard disks or other storage mechanisms, to store a local cache of the images and graphics used in the immersive user experience, duplicating the images stored in a centralized image repository, described below as image repository118. The images stored in this local cache may require a significant amount of disk storage, and transmitting or receiving the images may require a significant amount of bandwidth. Accordingly, subscriber devices102.1through102.nmay refrain from updating local images repository in real-time or near real-time, instead updating the local cache periodically, i.e., when an image update request occurs, to avoid interfering with content viewing and other primary functions of the media content platform. In some embodiments, such an image update request may occur when a subscriber powers on a subscriber device in subscriber devices102.1through102.n. In another embodiment, the image update request may occur in accordance with a schedule that specifies a refresh interval, e.g., once a week, once a month, etc., as configured by an administrator at service provider system110. In another embodiment, subscriber devices102.1through102.nmay receive a notification that an image update request should be conducted based on a change to image repository118conducted by content manager106via image repository management application122. For example, service provider system110may transmit such a notification to all subscriber devices102.1through102.ninforming the subscriber devices of the change and alerting the devices that an image update request should be performed as soon as possible or practical. In another embodiment, a subscriber may perform a factory reset to restore the device to its original operating conduction, and the image update request may result in the subscriber device being restored to its initial state. In each embodiment, subscriber devices102.1through102.nmay transmit the image update request to interactive user interface112and/or image retrieval service114, receive a suitable subset of images in response, and update the local cache of images to match image repository118. In so doing, image retrieval service114may perform delta processing to provide a subset of the images stored in image repository118to the subscriber device, as described in further detail in the description below accompanyingFIG.3below.

Communication network104communicatively couples service provider system110to subscriber devices102.1through102.n. Communication network104may be implemented as a wireless communication network, a wired communication network, and/or any combination thereof as will be apparent to those skilled in the relevant art(s) without departing from the spirit and scope of the present disclosure. For example, communication network104may include one or more radio networks, such as terrestrial radio frequency networks or satellite radio frequency networks, one or more coaxial cable networks, one or more fiber optic cable networks, and/or another suitable communication network.

Content manager106may be an individual interacting with service provider system110via image repository management application122. In one embodiment, content manager106may be associated with the service provider, e.g., an employee, and may be responsible for uploading, configuring, administering, etc., graphics and images in the immersive user experience provided by service provider system110. In another embodiment, content manager106may be associated with an owner of the media content offered by the service provider, and content manager106may be validated using appropriate security credentials to be able to access repository management application122. In this embodiment, content manager106may update images stored in the repository on behalf of the owner of the media content, thus dispersing the responsibility of managing the images in the image repository while offering content owners additional flexibility, brand control, and customization. In either use case, content manager106may be tasked with adding, updating, deleting, changing, etc. the images stored in image repository118and configuring associations between the images and the available media content. Content manager106may employ one or more personal computers, mobile devices, etc. to connect to image repository management application122using a suitable network such as the Internet, a local area network (LAN), a wide area network (WAN), a wireless network, a cellular network, or various other types of networks as will be understood by one skilled in the relevant art(s).

Service provider system110may provide a service offering media content to subscribers that is accessible using subscriber devices102.1through102.n. The media content may include video, audio, and/or data, such as movies, television shows, news, and/or sports programming to provide some examples. To allow subscribers to browse and interact with the media content, service provider system110may offer an immersive user experience in the form of a graphical user interface that conveys information about media content. The immersive user experience may include features such as an EPG and video-on-demand. The immersive user experience may incorporate a large number of rich, colorful, and expressive graphics, images, and other media files. Service provider system110may include interactive user interface112, image retrieval service114, cache layer116, image repository118, configuration agent120, and image repository management application122.

Interactive user interface112may present subscribers with an immersive user experience via which subscribers may access and interact with content provided by a service provider. Interactive user interface112may include an EPG, VOD features, and other functions related to the provided content. Interactive user interface112may be generated within service provider system110, generated at subscriber devices102.1through102.n, or created using a hybrid approach with interface components generated in both locations. Interactive user interface112may present rich graphics, images, and other media content as part of the user experience. For example, subscribers may view a variety of images tailored to the programs or channels being accessed or viewed. The richness of the images may present complications, however, in that image files are typically larger than textual data or other simple data forms. Thus, one skilled in the relevant art(s) will understand that bandwidth and space conservation are paramount concerns for interactive user interface112. To address these concerns, interactive user interface112may leverage image retrieval service114.

Image retrieval service114may retrieve images displayed in interactive user interface112when presenting an immersive user experience to a subscriber. Image retrieval service114may receive a request for an image in the process of displaying an immersive user experience and may provide that image to interactive user interface112. ThoughFIG.1displays image retrieval service as existing entirely within service provider system110, in some embodiments, a local version of image retrieval service114may operate on each subscriber device among subscriber devices102.1through102.nthat accesses the local cache of images. Image retrieval service114may retrieve images by adhering to a specific naming convention across all retained images, as described in further detail below. In this fashion, image retrieval service114may provide an appropriate image in response to an image request corresponding to a particular piece of media content or other facet of the immersive user interface. The image may also be specific to particular location/feature of the immersive user experience and to the image resolution and/or screen display required by a particular subscriber device among subscriber devices102.1through102.n. Additionally, the particular subscriber may resize the screen display after receiving the image and, in response, image retrieval service may resize the image or transmit an updated image to match the resized screen display.

As described above, in some embodiments, to achieve efficiency gains, a local version of the image retrieval service may access and provide the images required by the immersive user experience when rendering a user experience on subscriber device in subscriber devices102.1through102.n. In this fashion, when rendering the immersive user experience on subscriber devices102.1through102.n, image requests may be satisfied without accessing service provider system110or image repository118. One skilled in the relevant art(s) will appreciate the importance of such a bandwidth saving mechanism in a distributed system having a large number of subscriber devices.

However, in such embodiments, service provider system110needs to coordinate and synchronize local caches with changes that occur in image repository118. Thus, image retrieval service114may respond to image update requests from subscriber devices102.1through102.n. To efficiently propagate image changes to subscriber devices102.1through102.n, image retrieval service114may use delta processing to provide only a subset of the images in image repository118to a requesting subscriber device.

To perform delta processing, image retrieval service114may catalog, track, and store a last modified timestamp for each image in image repository118. The last modified timestamp may reflect the date and time of the previous change, e.g., add or update, to the image. The changes may be received from content manager106via image repository management application122. For example, if an image never changed after an initial upload, the last modified timestamp may be the date and time that content manager106uploaded the image to the repository. However, if content manager106later updated the image, e.g., uploaded a new logo for a channel that displays in an EPG to replace the old log, then the last modified timestamp may reflect the date and time of the later change.

For delta processing, the first time that a particular subscriber device among subscriber devices102.1through102.naccesses service provider system110, image retrieval service114may transmit the entirety of image repository118to the particular subscriber device for storage in the local cache. One skilled in the relevant art(s) will appreciate that such a transmission may be time consuming and put a strain on bandwidth and other system resources. Thus, such a transmission may occur as part of a general initialization/configuration routine for a particular subscriber device. When the initialization routine finalizes, the new subscriber device may store locally a last fetch timestamp relating to the completion of the initialization routine. In other embodiments, services provider system110may store the last fetch timestamp on the server-side for each of subscriber devices102.1through102.n. In one embodiment, the initialization routine may be performed in response to a factory reset. In this embodiment, when the factory reset is performed, the reset subscriber device may delete all images in the local cache and download the entirety of image repository118to return the subscriber device to an initial state.

After the initialization routine completes, subscriber devices102.1through102.nmay transmit an image update request to image retrieval service114to receive any changed images. Such an image update request may occur for a variety of reasons across several use cases, e.g., when a subscriber powers on a subscriber device, in accordance with a configured refresh interval, or in response to a notification from service provider system110. In an embodiment, where service provider system110sends notifications to all subscriber devices, the system may propagate updates to image repository118in real-time or near real-time.

When processing the image update request using delta processing, a particular subscriber device among subscriber devices102.1through102.nmay transmit a last fetch timestamp associated with the particular subscriber device to image retrieval service114with the image update request. In another embodiment, the particular subscriber device may include a unique identifier in the transmission, i.e., a subscriber identifier, and image retrieval service114may retrieve the last fetch timestamp for the particular subscriber device from server-side storage.

Image retrieval service114may compare the last fetch timestamp associated with the particular subscriber device to a tracked last modified timestamp associated with each of the images in image repository118. Image retrieval service114may include images with a last modified timestamp greater than the received last fetch timestamp in a subset of images. Thus, the subset of images includes only those images that changed from the last fetch timestamp, i.e., the time of the last image update request from that particular subscriber device.

To finalize delta processing, image retrieval service114may then transmit only the subset of images to the particular subscriber device that sent the image update request. The particular subscriber device may then refresh its local cache of the images in image repository118by replacing local images with those contained in the transmitted subset, where appropriate. The particular subscriber device may then update its last fetch timestamp to reflect the successful refresh. In this fashion, subscriber devices102.1through102.navoid the expense of receiving (and service provider system110avoids the expense of transmitting) the entirety of image repository118. Such an approach may provide a gigantic bandwidth savings in a distributed system employing hundreds, thousands, or millions of subscriber devices. Delta processing in this fashion is described in further detail below with reference toFIG.3.

Cache layer116may provide caching functions within service provider system110. Cache layer116may store and retrieve images from memory as opposed to accessing the hard-disk storage of image repository118and provide these images to image retrieval service114. Whereas the local cache used by each subscriber device allows the subscriber device to display images in the immersive user experience without accessing service provider system110, cache layer116provides an additional caching layer that further optimizes system performance by limiting trips by image retrieval service114to image repository118when satisfying image update requests. By employing cache layer116, service provider system110minimizes trips to image repository118and system performance improves. Caching at service provider system110is described in further detail below with reference toFIG.5.

Image repository118may store the images used in an immersive user experience. Image repository118may store a large number of rich, colorful, and expressive graphics. Image repository118may include both static and dynamic images. The image files may vary according to the types of media content and functions available in an immersive user experience. Each image in image repository118may be associated with a particular graphic displayed to subscribers in interactive user interface112through the use of a standardized naming convention. Image repository118store the images using, for example on a NAS, SAN, local hard drive, or other suitable storage mechanism and provide appropriate mechanisms via which the images may be accessed or served via HTTP or other suitable protocol.

Configuration agent120may provide mechanisms via which configurations may be managed, tracked, and stored that govern the behavior of service provider system110. Configuration agent120may store a variety of confirmation variables relevant to the behavior of image retrieval service114and image repository management application122. For example, configuration agent120may store information about the frequency of image updates. Configuration agent120may also store authentication credentials for content managers, such as content manager106, and other administrators.

Image repository management application122may provide content manager106with the ability to manage the images and media content stored in image repository118. Image repository management application122may allow content manager106to add new images, update existing images, delete images, and associate images with media content. Image repository management application122may allow content manager to update images across resolutions and screen display sizes. In an embodiment, image repository management application122may allow content manager106to upload additional media content, in addition to the images, and to upload and associate images with the additional media content.

When receiving a new or updated image, image repository management application122may tag the image in accordance with a naming convention. In an embodiment, image repository management application122may tag the image with a logical path that includes a client type, an image type, and an entity name. In other embodiments, image repository management application122may employ another naming convention that provides similar functionality.

The client type may specify a type of client, e.g., a CPE device, a set-top box, a mobile device, a streaming service, etc. Example client type tags may be “STB”, “MOBILE”, “STREAMINGSERVICE”, etc. In one embodiment, the client type may be defined based on the aspect ratio of the underlying client platform. In such an embodiment, a tag may be applied to multiple platforms provided the platforms share an aspect ratio. This feature allows image repository118to service various platforms and vendors.

The image type may represent an orientation of the image or platform, e.g., portrait, landscape, etc. In this fashion, image retrieval service114may differentiate which image to transmit based on the screen display size. In one embodiment, the image type may include an image size and resolution applicable to the image. For example, one channel logo image may have an image type of “GRID_16_9” and a second channel logo image may have an image type of “GRID_4_3.” The entity name may refer to a specific category of an image on a specific screen in the immersive user experiences, e.g. an EPG grid, a poster, an icon, etc.

Exemplary Subscriber Device in the Point-to-Multipoint Communication System

FIG.2illustrates a block diagram of an exemplary subscriber device200in exemplary point-to-multipoint communication system100, according to an embodiment of the present disclosure. Subscriber device200may represent an exemplary embodiment of subscriber devices102.1through102.n. As described above, subscribers may access the services offered by services providers using subscriber devices102.1through102.n, which includes set-top boxes, personal computers, data terminal equipment, one or more telephony devices, such as one or more mobile phones or one or more mobile computing devices to provide some examples, one or more broadband media players, one or more network-controlled appliances, one or more set-top boxes, one or more wireless routers, and/or other devices that are capable of transmitting and/or receiving video, audio, and/or data that will be apparent to those skilled in the relevant art(s) without departing from the spirit and scope of the present disclosure. As illustrated inFIG.2, subscriber device200includes PHY circuitry202, media access controller (MAC) circuitry204, processor circuitry206, and storage medium208.

PHY circuitry202represents an interface between a communication network, such as communication network104to provide an example, and MAC circuitry204. Generally, PHY circuitry202may modulate, encode, and/or convert an information frame to provide an information signal for transmission to the communication network. PHY circuitry202may also demodulate, decode, and/or convert an information signal received over a communication network to provide an information frame.

MAC circuitry204represents an interface between PHY circuitry202and processor circuitry206. MAC circuitry204may manage and maintain communication by coordinating access to the communication network and formatting communication in accordance with one or more communication standards or protocols. MAC circuitry204may also de-encapsulate or de-frame in accordance with the one or more communication standards or protocols.

Processor circuitry206controls the overall operation of subscriber device200. Processor circuitry206may perform functions relevant to presenting or viewing an immersive user experience, described above as interactive user interface112. In one embodiment, processor circuitry206may retrieve the images from a local cache and incorporate the images into a generated user experience. Processor circuitry206may also process user requests, process inputs made within the graphical user interface, manage and control provision of the media content once transmitted/received, control the entry into and out of a standby mode, power the device on/off, load an operating system, and/or perform other suitable processing functions related to subscriber device200. Processor circuitry206may perform actions to ensure that the local cache of images remains up-to-date with changes made in image repository118. For example, processor circuitry206may generate an appropriately formed image request update, transmit the request to service provider system110, receive an appropriate subset of images in response, and perform required updates to the local cache of images in response.

Storage medium208stores a local cache of images, various database tables or other suitable information about subscriber device200, and other information needed to perform the functions offered by the service provider system. Storage medium208may store configuration information as text files within a volatile memory, such as random access memory (RAM), and/or non-volatile memory, such as read-only memory (ROM). The RAM may be implemented in dynamic random-access memory (DRAM), a static random-access memory (SRAM), and/or a non-volatile random-access memory (NVRAM) configuration to provide some examples. Storage medium208may be organized into a database and may leverage any suitable database management system to store information. Storage medium208may store a unique identifier, i.e., a subscriber identifier, for a particular subscriber device200for purposes of identifying subscriber device200in communications with service provider system102. Storage medium208may store a local cache of the images used within an immersive graphical user interface provided by a service provider. Storage medium208may also store a last fetch timestamp for subscriber device200, reflecting the date and time of the last refresh of the local cache of images housed in storage medium208.

Exemplary Method of Performing Delta Processing to Update a Local Cache of Images on a Subscriber Device

FIG.3is a flowchart of exemplary operational steps to perform delta processing to update a local cache of images stored on a subscriber device, according to an embodiment of the present disclosure. The disclosure is not limited to this operational description. Rather, it will be apparent to ordinary persons skilled in the relevant art(s) that other operational control flows are within the scope and spirit of the present disclosure.

At operation302, image retrieval service114may perform an initial image load. In one exemplary use case, image retrieval service114may perform the initial image load for a particular subscriber device among subscriber devices102.1to102.nas part of an initialization routine during which the particular subscriber device's local cache may be constructed. Such an initial image load may occur, for example, the first time that the particular subscriber device connects to service provider system110. In response, image retrieval service114may transmit all of the images in the image repository to the subscriber device. Prior to transmitting the images, image retrieval service114may compress the images to increase the speed and efficiency of the transmission. Moreover, image retrieval service may access all of the images from cache layer116to avoid accessing image repository118. However, one skilled in the art(s) will appreciate that transmitting the entirety of the image repository in this fashion to the particular subscriber device may be a time-consuming and resource-intensive process. When the transmission completes, image retrieval service114may update the last fetch timestamp associated with the particular subscriber device to match the time that the transmission completes. In one embodiment, the last fetch timestamp may be stored on the particular subscriber device, e.g., in storage medium208, but in another embodiment, image retrieval service114may update a server-side database table that tracks the timestamps across all subscriber devices102.1through102.nwith the updated last fetch timestamp.

At operation304, interactive user interface112may receive an image update request from a particular subscriber device among subscriber devices102.1through102.n. Such an image update request may occur at suitable times after the initial loading of the images conducted in302. For example, the image update request may occur when a subscriber powers on the particular subscriber device or the image update request may occur according to a refresh interval specified in configuration agent120. The received request may include the last fetch timestamp for the particular subscriber device, or the image update request may include a unique identifier related to subscriber device, i.e., a subscriber identifier, and the last fetch timestamp may be retrieved from storage using the subscriber identifier. In either case, the last fetch timestamp indicates the last time that the particular subscriber device sent an image update request to update the local cache of images stored on the particular subscriber device.

Operations306to312are iterative and may repeat for each image in image repository118. At operation306, image retrieval service114may retrieve an image from either cache layer116or image repository118and determine the last modified timestamp associated with the image. Image retrieval service114may determine the image to examine alphabetically, sequentially, chronologically, or using another suitable methodology. The last modified timestamp may be determined by accessing metadata associated with the file, examining a database table, or using another suitable approach. The image may be retrieved from the cache layer where the cache layer includes the image and the image is not stale. This process is described in further detail below with reference toFIG.5.

At308, image retrieval service114compares the last modified timestamp associated with the image retrieved in306to the last fetch timestamp received associated with the particular subscriber device. In this fashion, image retrieval service114determines if the image changed in the server-side image repository since the last time the particular subscriber device requested an image update. If the last modified timestamp of the image is greater than the last fetch timestamp, i.e., the image needs to be transmitted, then method300may proceed to310. If the last modified timestamp is less than or equal to the last fetch timestamp, i.e., the image does not need to be transmitted to the particular subscriber device, then method300may proceed to312.

At310, image retrieval service114may add the image to the subset of images to be returned to the subscriber device. The subset of images may be tracked using any suitable method. In one embodiment, the image may be represented using a suitable array, pointer, etc., and the subset of images may be composed of pointer, lists, or other variables representing the images to be transmitted to the particular subscriber device. In another embodiment, a temporary archive of images may be stored in memory representing the subset of images and the changed image may be added to the archive.

At312, image retrieval service114determines if the image retrieved in306is the last image in the image repository. In other words, image retrieval service114determines if all images in image repository118have been checked for updates with respect to the last fetch timestamp. If the image is not the final image, then method300returns to306to process additional images in image repository118. If the image retrieved is the last image in the image repository, then method300may proceed to314.

At314, image retrieval service114may compress the subset of images determined in the iterative steps306through312. Image retrieval service114may compress the subset of image using a suitable compression algorithm or methodology. For example, where the subset of images is an archive stored in memory, image retrieval service114may zip the archive resulting in a single file to transmit. Where the subset of images includes pointers to the images to transmit, image retrieval service114may retrieve the image files from cache layer116and/or image repository118and build an appropriate archive for transmission to the particular subscriber device.

At316, image retrieval service114may transmit the compressed subset to the particular subscriber device that completed the image update request in304. The particular subscriber device may decompress the received subset. The particular subscriber device may then refresh its local cache of the images by replacing local images with those contained in the received subset. Image retrieval service114may then update the last fetch timestamp associated with the particular subscriber device and/or the particular subscriber device may update this information stored in storage medium208. In this fashion, the expense of transmitting the entirety of the image repository for each image update request may be avoided because only a compressed subset of images is transmitted by image retrieval service114and received by the particular subscriber device. Such an approach may provide a gigantic bandwidth and input/output savings in a distributed system employing hundreds, thousands, or millions of subscriber devices.

Exemplary Method to Tag Received Images

FIG.4is a flowchart of exemplary operational steps to upload an image received from an image repository management application to an image repository, according to an embodiment of the present disclosure. The disclosure is not limited to this operational description. Rather, it will be apparent to ordinary persons skilled in the relevant art(s) that other operational control flows are within the scope and spirit of the present disclosure.

At operation402, image repository management application122may receive an updated image or a new image from content manager106. The image update may be a new image for use in the interactive user experience, e.g., an image associated with a new item of content. The image update may also be an updated image that replaces a previously uploaded image. Content manager106may identify in image repository management application122media content associated with the new or updated image. Content manager106may also identify a client type, an image type, an entity name, and other suitable parameters that dictate the usage of the image within the immersive user experience. In another embodiment, image repository management application122may identify the client type, image type, and entity programmatically based on information known about content manager106, the platform on which the content manager is operating, the immersive user experience, and other known information.

At operation404, image repository management application122may tag the image according to a standardized naming convention adhered to throughout service provider system110and across platforms incorporated therein. In an embodiment, image repository management application122may build a logical path that includes a client type, image type, and entity name and tag the image using the built logical path. In an embodiment, the client type may specify the nature of the subscriber device, e.g., a CPE device, a mobile device, etc. The image type may refer to a specific category of an image on a specific screen in the immersive user experiences, e.g. an EPG grid, a channel logo, a poster, an icon, a banner, a title page, an information screen, etc. The image type may further incorporate an image size and resolution applicable to the image, e.g., the image type may embed a screen width, screen height, and resolution in the image type, separated by underscores, dashes, or other character. In one embodiment, image repository management application122may tag the file by including metadata in the image file as stored on disk or memory. In another embodiment, image repository management application122may track tagging information separately, e.g., using a database table, with reference to a unique identifier associated with the newly received image.

At operation406, image repository management application122may add the image to image repository118or update an existing image in image repository118with the new image. Image repository management application122may use any suitable file transfer protocol, e.g., HTTP, FTP, etc., to perform the file transfer or copy the image file directly to image repository in localized embodiments. Image repository management application122may also set the last modified timestamp for the image as stored on disk or in memory to the current time, i.e., the time that content manager106uploaded the image. By updating the last modified timestamp, the delta processing, described above, may identify the image as an image to be included in a subset of images transmitted in response to an image update request.

At408, image repository management application122may update cache layer116with the new image. Updating cache layer116in this fashion may store in memory the new or updated image such that subsequent image update requests performed by subscriber devices102.1through102.nmay be satisfied from cache layer116without resorting to accessing image repository118.

At410, image repository management application122may notify subscriber devices of the change to image repository118. This step may be performed in embodiments that notify subscriber devices102.1through102.nof a change to image repository118. This step may not be necessary where subscriber devices102.1through102.nsend image update requests when subscriber devices102.1through102.nare powered on or in accordance with a refresh interval. In an embodiment, image repository management application122may directly message subscriber devices102.1through102.nwith the notification. In another embodiment, image repository management application122may employ a suitable message queue, accessible by subscriber devices102.1through102.n, and post a message to the message queue. Subscriber devices102.1through102.nmay then access the message queue to determine if an image update request should be formulated and transmitted. In either case, subscriber devices102.1through102.nmay receive a notification of the change to image repository118and perform an image update request to refresh their local caches of images with the updated images.

Exemplary Method to Employ a Cache Layer

FIG.5is a flowchart of exemplary operational steps to employ a cache layer when retrieving an image from an image repository, according to an embodiment of the present disclosure. The disclosure is not limited to this operational description. Rather, it will be apparent to ordinary persons skilled in the relevant art(s) that other operational control flows are within the scope and spirit of the present disclosure.

At operation502, image retrieval service114may determine an image to retrieve. In one use case, image retrieval service114may make this determination while performing the delta processing described above with reference toFIG.3. Image retrieval service114may determine that an image needs to be added to a subset of images for transmission to a requesting subscriber device. In another use case, image retrieval service114may provide an image to a subscriber viewing interactive user interface112, i.e., image retrieval service114may be serving the image to interactive user interface112while a subscriber views an interactive user experience. In either case, image retrieval service114may identify a particular image in image repository118to provide to a subscriber or system component.

At operation504, image retrieval service114may form a caching key based on characteristics associated with the image identified in502. In one embodiment, image retrieval service114may retrieve the client type, image type, and image name associated with image from the file metadata or an appropriate database table. Image retrieval service114may then build a caching key composed of the client type, image type, and image name to be used in subsequent steps. Any suitable ordering of the fields may be used by image retrieval service114, provided the cache key is built consistently across platforms.

At506, image retrieval service114may determine if the cache key is expired in cache layer116. A cache key may be expired when the version of the image file in the cache is not up-to-date with updates made to the image repository. To make such a determination, image repository management application122may track a last modified timestamp for each image in image repository118and expose this information to image retrieval service114. Image retrieval service114may thus compare the last modified timestamp to a last modified timestamp associated with the image file in the cache layer. If the last modified timestamp from the image repository is greater than the cached version, then image retrieval service114knows that the cached version is stale. A cache key may also be expired when the cache key does not exist in the cache layer. This scenario may arise given the finite amount of memory that may be available in cache layer116. As the cache is updated, cache layer116may employ a circular buffering technique, where additions to the cache layer push out staler images, i.e., images that have not recently been accessed. If the cached version of the image is stale or non-existent, then method500proceeds to510. If the cached version of the image is up-to-date, then method500may proceed to508.

In508, image retrieval service114may retrieve the image from cache layer116and provide the cached version of the image directly from memory to interactive user interface112and/or add the image to a subset of images without accessing image repository118. Retrieving the image from the caching layer is advantageous because image retrieval service114avoids accessing image repository118. In a system with a large number of subscriber devices, accessing the image repository to retrieve the images may create an I/O bottleneck and satisfying the requests from memory avoids potential slowdowns and shortages.

In510, image retrieval service114may retrieve the image from image repository118so that the cache layer may be updated and the appropriate image transmitted or added to the subset of images. Image retrieval service114may use any suitable file transfer protocol, e.g., HTTP, FTP, etc., to access the image or copy the image file directly where image retrieval service114has direct access.

In512, image retrieval service114may refresh cache layer116with the image retrieved in510. Image retrieval service114may then retrieve the image from cache layer116and use the cached version to provide the image to interactive user interface112and/or add the image to a subset of images without accessing image repository. In this fashion, delta processing and image retrieval are further optimized and the cache layer prepared to process subsequent updates from other subscriber devices.

Exemplary Computer Systems

Various embodiments may be implemented, for example, using one or more well-known computer systems, such as computer system600shown inFIG.6. One or more computer systems600may be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof.

Computer system600may include one or more processors (also called central processing units, or CPUs), such as a processor604. Processor604may be connected to a communication infrastructure or bus606.

Computer system600may also include user input/output device(s)608, such as monitors, keyboards, pointing devices, etc., which may communicate with communication infrastructure606through user input/output interface(s)602.

One or more of processors604may be a graphics processing unit (GPU). In an embodiment, a GPU may be a processor that is a specialized electronic circuit designed to process mathematically intensive applications. The GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, etc.

Computer system600may also include a main or primary memory608, such as random access memory (RAM). Main memory608may include one or more levels of cache. Main memory608may have stored therein control logic (i.e., computer software) and/or data.

Computer system600may also include one or more secondary storage devices or memory610. Secondary memory610may include, for example, a hard disk drive612and/or a removable storage device or drive614. Removable storage drive614may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and/or any other storage device/drive.

Removable storage drive614may interact with a removable storage unit618. Removable storage unit618may include a computer usable or readable storage device having stored thereon computer software (control logic) and/or data. Removable storage unit618may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device. Removable storage drive614may read from and/or write to removable storage unit618.

Secondary memory610may include other means, devices, components, instrumentalities or other approaches for allowing computer programs and/or other instructions and/or data to be accessed by computer system600. Such means, devices, components, instrumentalities or other approaches may include, for example, a removable storage unit622and an interface620. Examples of the removable storage unit622and the interface620may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or any other removable storage unit and associated interface.

Computer system600may further include a communication or network interface624. Communication interface624may enable computer system600to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referenced by reference number628). For example, communication interface624may allow computer system600to communicate with external or remote devices628over communications path626, which may be wired and/or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and from computer system600via communication path626.

Computer system600may also be any of a personal digital assistant (PDA), desktop workstation, laptop or notebook computer, netbook, tablet, smart phone, smart watch or other wearable, appliance, part of the Internet-of-Things, and/or embedded system, to name a few non-limiting examples, or any combination thereof.

Computer system600may be a client or server, accessing or hosting any applications and/or data through any delivery paradigm, including but not limited to remote or distributed cloud computing solutions; local or on-premises software (“on-premise” cloud-based solutions); “as a service” models (e.g., content as a service (CaaS), digital content as a service (DCaaS), software as a service (SaaS), managed software as a service (MSaaS), platform as a service (PaaS), desktop as a service (DaaS), framework as a service (FaaS), backend as a service (BaaS), mobile backend as a service (MBaaS), infrastructure as a service (IaaS), etc.); and/or a hybrid model including any combination of the foregoing examples or other services or delivery paradigms.

Any applicable data structures, file formats, and schemas in computer system600may be derived from standards including but not limited to JavaScript Object Notation (JSON), Extensible Markup Language (XML), Yet Another Markup Language (YAML), Extensible Hypertext Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representations alone or in combination. Alternatively, proprietary data structures, formats or schemas may be used, either exclusively or in combination with known or open standards.

In some embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer system600, main memory608, secondary memory610, and removable storage units618and622, as well as tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as computer system600), may cause such data processing devices to operate as described herein.

Based on the teachings contained in this disclosure, it will be apparent to persons skilled in the relevant art(s) how to make and use embodiments of this disclosure using data processing devices, computer systems and/or computer architectures other than that shown inFIG.6. In particular, embodiments may operate with software, hardware, and/or operating system implementations other than those described herein.

It is to be appreciated that the Detailed Description section, and not any other section, is intended to be used to interpret the claims. Other sections can set forth one or more but not all exemplary embodiments as contemplated by the inventor(s), and thus, are not intended to limit this disclosure or the appended claims in any way.

While this disclosure describes exemplary embodiments for exemplary fields and applications, it should be understood that the disclosure is not limited thereto. Other embodiments and modifications thereto are possible, and are within the scope and spirit of this disclosure. For example, and without limiting the generality of this paragraph, embodiments are not limited to the software, hardware, firmware, and/or entities illustrated in the figures and/or described herein. Further, embodiments (whether or not explicitly described herein) have significant utility to fields and applications beyond the examples described herein.

Embodiments have been described herein with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined as long as the specified functions and relationships (or equivalents thereof) are appropriately performed. Also, alternative embodiments can perform functional blocks, steps, operations, methods, etc. using orderings different than those described herein.

References herein to “one embodiment,” “an embodiment,” “an example embodiment,” or similar phrases, indicate that the embodiment described can include a particular feature, structure, or characteristic, but every embodiment can not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of persons skilled in the relevant art(s) to incorporate such feature, structure, or characteristic into other embodiments whether or not explicitly mentioned or described herein. Additionally, some embodiments can be described using the expression “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments can be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, can also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.

The breadth and scope of this disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.