Server facilitated content distribution

Described herein are systems and methods for initiating on a first device distribution and presentation of content to a second device. A server facilitates the distribution by determining a presentation context of the second device. Based at least in part on the presentation context, the server retrieves and processes the content and provides output content to the second device for presentation. A consolidated content list may also be maintained. The consolidated content list allows the user to add content for later consumption, or access the content, regardless of the content provider supplying the content.

BACKGROUND

A wide variety of content is available to users for access electronically. This content may include television programming, audio books, music, movies, and so forth. The content may be delivered using broadcast, cable, satellite, networks such as the Internet, and so forth. Content provided via the Internet or another network may be streamed to a media device for presentation. During streaming, portions of the content are delivered while presentation of the content may be taking place.

Users may have a variety of devices to present the content on. Traditionally it has been problematic to present content on different destination devices which may be incompatible with a format of the content from a content provider. Furthermore, initiating presentation on another device has been cumbersome, typically requiring the user to manually select the content from the destination device itself.

Finally, each of the different content providers may maintain separate content lists, such as items queued for later presentation. Accessing the content on these content lists may be difficult in that the user may have to go to a particular service provider, retrieve the list, and so forth.

Certain implementations will now be described more fully below with reference to the accompanying drawings, in which various implementations or aspects are shown. However, various aspects may be implemented in many different forms and should not be construed as limited to the implementations set forth herein. Like numbers refer to like elements throughout.

DETAILED DESCRIPTION

A vast and ever growing collection of content is available for users to access. This content may include television programming, audio books, music, movies, and so forth which may be streamed from a content provider over a data network such as the Internet to a device for presentation. Users may access this content from a variety of different devices ranging from tablets, smartphones, televisions, in-vehicle entertainment systems, game consoles, portable computers, desktop computers, and so forth. A user may come across content of interest while using a first device, but may wish to consume that content on a second device. For example, the user may find a link to a video of interest while using a smartphone, but chooses to watch the video on the television. The user may also wish to save that content for later, or repeated, consumption.

Described in this disclosure are devices and methods for facilitating content distribution with a server. A user may find content of interest, or links to content of interest, using a first or access device which receives content data from a content provider server. The user may activate a bookmarklet or other function on the access device to send mark data indicative of the content to a distribution server. The bookmarklet may be configured to cause the distribution server to present the content on a second or destination device, enter the content onto a content list for later presentation, or both.

The content from the content provider may be in a format which is incompatible with presentation on the destination device. The format of a piece of content includes data encoding scheme used, sample rate, frame rate, color depth, resolution, bit rate, compression used, encryption used, and so forth. For example, the content provider may provide the content in an MPEG-4 format while the destination device may only be capable of displaying MPEG-2 format. In another example, the content provider may provide the content a format using MPEG-4 encoding with image resolution of 1920×1080 pixels and multichannel audio format while the destination device may only be capable of presenting a format where the MPEG-4 encoded images have a maximum resolution of 1920×720 and two channels of audio. In traditional systems, the content would either be unavailable for presentation on the destination device, or some additional intervention such as installation of additional codecs would be required to enable presentation of the content. As described herein, the distribution server may process the content from a first format supplied by the content provider to a second format compatible with the second device for presentation. This processing may include decryption, transcoding, transrating, transsizing, and so forth. As a result, the user may easily and seamlessly initiate presentation of content on a variety of different destination devices.

Each of the content providers may maintain individual content lists associated with user accounts. The content lists provide a storage location for data indicating one or more pieces of content which the user wishes to consume. Traditionally these lists have been isolated, such that a user searching for a particular piece of content on a content list would need to log into each content provider for which they have an account. As described below, the distribution server may maintain a consolidated content list which combines data indicative of content from several content providers. Using this functionality, the user may maintain and use a single consolidated content list which includes content from multiple content providers. This improves the user experience and ability to consume content without having to access the various content providers.

The overall user experience of consuming content is improved by the distribution server's handling of the content which enables the user to easily select and present a wide array of content on a wide array of devices. Furthermore, the ability to maintain and use the consolidated content list allows the user to easily store and consume content, regardless of the content provider which supplies the content. Instead of fussing with installation of codecs to present content or looking through the lists of content on several content providers, the user may simply enjoy the content.

Illustrative System

FIG. 1illustrates a system100for server facilitated content distribution between devices. A single user102is shown, however more than one user102may consume presented content at a given time. For example, several users102may watch a movie or television show together.

One or more devices are depicted, including an access device104. The access device104may comprise a television, a set-top box, a tablet computer, a smartphone, an in-vehicle entertainment system, a laptop computer, a desktop computer, and so forth. The access device104is configured to present one or more content references106to the user102. The presentation may include visual presentation on a display, audio presentation using a speaker, and so forth. The content references106may be icons, graphics, links, or other indicators which are based at least in part on content data108. The content data108may be received from one or more content provider servers110(1),110(2), . . . ,110(P) maintained by a content provider. The content provider server110may store one or more pieces of content112(1),112(2), . . . ,112(N) for presentation to the user102. The content data108is information which is indicative or descriptive of the content112. In some implementations the content data108may include references to the content112. These references may include a link or address which, when processed by a device may cause presentation of the content112.

The content provider server110may also include a content list module114. The content list module114is configured to store a content list comprising data indicative of one or more pieces of content112which the user102or another party has stored for consumption.

The content provider server110includes a content distribution module116. The content distribution module116is configured to provide at least a portion of the content112in one or more formats to an external device. The content distribution module116may be configured to send the content112or a portion thereof prior to presentation, to stream portions of the content112, or a combination thereof.

Returning to the access device104, the access device104may also present one or more bookmarklet controls118(1),118(2), . . . ,118(B). The bookmarklet control118may comprise a script or bookmark which is stored on a web page delivered to the access device104, or within a bookmark stored locally on the access device104. For example, the bookmarklet118may execute a script by a browser using a web browser engine executing on the access device104. The bookmarklet control118is configured to, upon receiving user input from the user102, generate mark data120. In some implementations a different bookmarklet control118may be associated with a particular content reference106. For example, the content reference106(1) which refers to a video about how to plant a coconut palm may be associated with the bookmarklet control118(1). Upon activation of the bookmarklet control118(1), mark data120(1) associated with the content reference106(1) may be generated.

The mark data120comprises information indicative of the content data108or the content112presented on the access device104. For example, the mark data120may include information such as a uniform resource identifier or uniform resource locator provided in the content data108which refers to the content112as associated with the content reference106. In another example, the user102may be watching on the access device104a portion of the content and activate the bookmarklet control118to generate the mark data120.

The mark data120may include information associated with the content data108, the user102, and an action to be taken. The information may include one or more of user account identification associated with the user102of the access device104, content identifier referring to the content112, designation of a destination device, request to add the content112to a content list, and so forth. For example, the activation of the bookmarklet control118may present the user102with a user interface on the access device104which prompts for a destination device to cause presentation on of the associated content112.

The mark data120is received by one or more distribution servers122(1),122(2), . . . ,122(D). The distribution server122may comprise a mark management module124, a content list management module126, and a content processing module130. In some implementations, the mark data120may comprise a hypertext markup language (HTML) or extensible markup language (XML) file.

The mark management module124is configured to accept and process the mark data120received from one or more of the access devices104. The mark data120may be used to indicate that one or more pieces of content112are to be added to a consolidated content list, processed for presentation on a device, or both. The mark management module124is described in more detail below with regard toFIG. 4.

The content list management module126is configured to allow the user102to manage a consolidated list of content associated with the user102, the access device104, or both. In some implementations the content list management module126may be configured to access the content list module114or content lists of one or more content provider servers110to exchange list data128.

The list data128comprises information indicative of one or more pieces of content112. The list data128may include one or more a content title, a rating of the content112, a graphic associated with the content112, a content identifier configured to allow retrieval of the content112from the content provider server110, and so forth.

The content list management module126may add or remove content112to the consolidated list based at least in part on the mark data120, the list data128or other user inputs received from the user102or other modules. The content list management module126is described in more detail below with regard toFIG. 4.

The content processing module130is configured to process input content112supplied by the content provider server110and generate output content132for distribution to one or more destination devices134(1),134(2), . . . ,134(K). The content processing module130may receive data indicative of one or more pieces of content112for processing from the mark management module124, the content list management module126, and so forth. For example, the mark management module124may receive the mark data120(1) indicating that the user102has selected the content112(1) which is indicated by content reference106(1) on the access device104is to be presented on the destination device134(1). In another example, the user102may select for presentation one of the pieces of content referenced in the consolidated content list maintained by the content list management module126.

The processing to be applied to the content112by the content processing module130is configured to enable or facilitate presentation of the resulting output content132on the destination device134. In one implementation, the processing may comprise transcoding content. For example, the content112may be supplied from the content provider server110in a first format, such as video in the MPEG-4 format as promulgated by the Motion Picture Experts Group. Continuing the example, the destination device134may lack the necessary hardware or software to present the MPEG-4 format, instead only being able to support the MPEG-2 format. The content processing module130may be configured to transcode the supplied input content112from MPEG-4 into output content132in the MPEG-2 format. This output content132may be provided to the destination device134, allowing the destination device to present the content112(or a representation thereof). The content processing module130and its operation is discussed in more depth below with regard toFIG. 4.

The output content132is based at least in part on the input content112. In some implementations, the output content132may be provided in an output format which differs from an input format of the input content112. For example, video content112may have the video removed during processing and only the audio track associated with the video may be provided in the output content132where the destination device134lacks a display device.

The destination devices134may include one or more tablets, smartphones, televisions, in-vehicle entertainment systems, game consoles, portable computers, desktop computers, and so forth. The destination devices134may act as access devices104, and vice versa. The designation of “access device” and “destination device” is used in this disclosure for illustration, and not by way of limitation. Furthermore, the access device104and the destination devices134(1)-(K) may be present at the same location or different locations. The devices may be used or accessed by different users. For example, the user102(1) may use the access device104while at work to initiate presentation of content112(1) on the destination device134(2) which is located at home and being watched by the user102(2).

The access device104, the content provider server110, the distribution server122, and the destination device134may use one or more network interfaces to communicate with one another using one or more networks coupled to those network interfaces. The networks may comprise one or more private networks, public networks such as the Internet, or a combination of both configured to transfer data between two or more devices.

FIG. 2illustrates an access device user interface200for initiating presentation of content on the destination device134or adding the content to a content list for later consumption. In some implementations the user interface200may be generated by rendering one or more HTML files on a rendering engine executing at least in part on the access device104.

In this user interface the content reference106(1) is depicted. Here, the content reference106(1) comprises an indication of video content which is available for playback. As described above, the content reference106may comprise icons, graphics, links, or other indicators of content112which are based at least in part on content data108. In some implementations the content reference106may include presentation of the content112. For example, the web page may include video which automatically begins playing.

Also illustrated is the bookmarklet control118(1) corresponding to the content reference106(1). The user102may activate the bookmarklet control118(1) by various user inputs such as touching on a touch screen, clicking with a mouse, pressing a key on a keyboard, selecting from a menu, and so forth. Upon activation, the bookmarklet control118may be configured to send the mark data120to the distribution server122.

In some implementations, the bookmarklet control118may activate a destination selection interface202. The user102may use the destination selection interface202to generate data indicative of a particular action which the user102desires the distribution server122to take after receipt of the mark data120.

The destination selection interface202may present options to the user such as “add to your content list” or indicate several different destination devices134(1)-(K). Based at least in part on user input responsive to the destination selection interface202, the mark data120may include information indicative of the selection. For example, the mark data120may include information which indicates the user102has selected to add the content to the user's102consolidated content list maintained by the content list management module126, present the content112on the destination device134(2), or both.

In some implementations the bookmarklet control118may not be specific to, or associated with, a particular content reference106. Thus, activation may provide mark data120which includes references to more than one piece of content112. For example, where the user interface200includes three pieces of content and the bookmarklet control118is implemented as a bookmark, the mark data120associated with activation may include information about all three pieces of content112(1)-(3). The mark management module124may be configured with a default action, such as adding the content112to the content list and processing the content112with the content processing module130in order to deliver output content132to a default device134.

FIG. 3illustrates a block diagram300of the content provider server110configured to provide content112for presentation. The content provider server118may comprise one or more processors302, one or more memories304, one or more input/output (“I/O”) interfaces306, and one or more communication interfaces308.

The processor302may comprise one or more cores and is configured to access and execute at least in part instructions stored in the one or more memories304. The one or more memories304comprise one or more computer-readable storage media (“CRSM”). The one or more memories304may include, but are not limited to, random access memory (“RAM”), flash RAM, magnetic media, optical media, and so forth. The one or more memories304may be volatile in that information is retained while providing power or non-volatile in that information is retained without providing power.

The one or more I/O interfaces306allow for coupling I/O devices to the content provider server118. The I/O interfaces306may comprise inter-integrated circuit (“I2C”), serial peripheral interface bus (“SPI”), universal serial bus (“USB”), RS-232, RS-432, and so forth.

The one or more communication interfaces308provide for the transfer of data between the content provider server118and other devices such as the access device104, the distribution server112, the destination device134, and so forth. The communication interfaces308may be configured to connect the content provider server118wired or wirelessly to one or more networks, such as the Internet.

In other implementations other devices or components may be coupled to or incorporated within the content provider server118. For example, digital rights management (“DRM”) devices may be provided to control access to content.

The one or more memories304may store code or program instructions for execution by the processor302to perform certain actions or functions. In some implementations at least a portion of the instructions may be stored in external memory accessible to the content provider server118, such as on another content provider server118.

These instructions in the one or more memories304may include an operating system310. The operating system310is configured to manage hardware resources such as the I/O interfaces306and provide various services to applications executing on the processor302.

The one or more memories304may also store a datastore312containing information. This information may include the content data108, one or more pieces of the content112(1)-(N), the list data128, and other data314. The other data314may include user account information which contain information associated with one or more of the users102(1),102(2), . . . ,102(U), digital rights management keys, billing information, and so forth. While the datastore312is depicted as residing in the memory304of the content provider server118, in some implementations at least a portion of the data in the datastore312may be stored on or distributed across one or more other servers118or other devices. The datastore312may comprise a database, flat file, linked list, or other data structure.

Stored in the memory304may be the user interface module316which is configured to provide a user interface for presentation to the user102. For example, the user interface module316may provide one or more web pages configured to accept input from the user102. The user interface module316may be configured to provide a graphical user interface in which the user102can select content for presentation. In some implementations other interfaces may be provided, such as an application programming interface or other device-to-device interface to facilitate interaction between the content provider server110and other devices such as the access device104, the distribution server122, the destination devices134, and so forth.

The memory304may also include the content list module114. As described above, the content list module114is configured to store and maintain a content list comprising data indicative of one or more pieces of content112which the user102or another party has stored for consumption. For example, the user102may have added particular pieces of content102to the content list for later consumption.

The memory304may also store the content distribution module116. As described above, the content distribution module116is configured to provide at least a portion of the content112in one or more formats to an external device.

The format of content indicates how content is represented as data, and the arrangement of that data. The format may be defined by an encoding scheme used, encoding bandwidth, image resolution, and so forth. A particular piece of content112may be available in several different formats from one or more content provider servers110. For example, the same piece of content112(1) may be available in a standard definition 480p version and a high definition 1080p version, while both are encoded using the MPEG-4 encoding scheme. Different formats may require different hardware or software for presentation. Hardware may include dedicated hardware decoders, while software may include software decoders or codecs.

The content distribution module116may be configured to send the content112, or a portion thereof, prior to presentation. For example, a single music track may be delivered as a single MP3 file prior to presentation. The content distribution module116may also be configured to stream the content112, where presentation takes place while portions of the content112continue to be delivered.

Other modules318may also be stored in the memory304. For example, a billing module may be configured to accept and process payment information to provide access to the content112.

FIG. 4illustrates a block diagram400of the distribution server122. The distribution server122may comprise one or more processors402, one or more memories404, one or more I/O interfaces406, and one or more communication interfaces408.

The processor402may comprise one or more cores and is configured to access and execute at least in part instructions stored in the one or more memories404. The one or more memories404comprise one or more CRSM such as described above.

The one or more I/O interfaces406, similar to those described above, allow for coupling I/O devices to the distribution server122. The I/O interfaces406may comprise I2C, SPI, USB, RS-232, RS-432, and so forth. The I/O devices may include keyboards, external memory, printers, and so forth.

The one or more communication interfaces408provide for the transfer of data between the distribution server122and other devices such as the access device104, the content provider server110, the destination devices134, and so forth. The communication interfaces408may include, but are not limited to, PANs, LANs, WLANs, WWANs, and so forth.

In other implementations other devices or components may be coupled to or incorporated within the distribution server122. For example, digital rights management (“DRM”) devices may be provided to control access to content.

The one or more memories404may store code or program instructions for execution by the processor402to perform certain actions or functions. In some implementations at least a portion of the instructions may be stored in external memory accessible to the distribution server122.

These instructions in the one or more memories404may include an operating system410. The operating system410is configured to manage hardware resources such as the I/O interfaces406and provide various services to applications executing on the processor402.

The one or more memories404may also store a datastore414containing information. This information may include one or more of the content112, the mark data120, the list data128, or the output content132. Consolidated content list data414, destination device presentation context data416, and other data418may also be stored in the datastore412. The consolidated content list data414is discussed below in more detail with regard to the mark management module124while the destination device presentation context416is discussed below in more detail with regard to the content processing module130. The datastore414may comprise a database, flat file, linked list, or other data structure.

Other data418may also be stored in the datastore412, such as digital rights management keys, billing information, and so forth. While the datastore412is depicted as residing in the memory404of the distribution server122, in some implementations at least a portion of the data in the datastore412may be stored on or distributed across one or more of the distribution servers122or other devices.

The memory404may store one or more of a user interface module420, the mark management module124, the content list management module126, or the content processing module130. The user interface module420may be configured to provide a user interface for presentation to the user102. For example, the user interface module420may provide one or more web pages configured to accept input from the user102for viewing the consolidated content list data414. In some implementations other interfaces may be provided, such as an application programming interface or other device-to-device interface to facilitate interaction between the content provider server110and other devices such as the access device104, the content provider servers110, the destination devices134, and so forth.

The mark management module124is configured to accept and process the mark data120from one or more of the access devices104. The mark management module124may be configured to parse incoming mark data120, and based at least in part on the mark data120, initiate one or more actions in the other modules of the distribution server122. For example, receipt of the mark data120which includes data to add a piece of content112to the user's102associated consolidated content list data414may result in sending the identification of the content112and the user account associated with the user102to the content list management module126. In another example, receipt of the mark data120which includes a designation of a destination device may result in sending the content identification and the destination device information to the content processing module130.

The content list management module126is configured to maintain the consolidated content list data414which provides a content list associated with a particular user account associated with the user102. The user102may create a user account and request that the content lists present on one or more content provider servers110be retrieved as the list data128and merged to form the consolidated content list data414. In some implementations the content list management module126may be configured to push list data128to one or more of the content provider servers110.

The consolidated content list data414comprises information indicative of one or more pieces of content112. The consolidated content list data414may include one or more of a content provider identifier, content identifier indicative of the particular piece of the content112, or the content data108. The content provider identifier is indicative of a particular content provider or content provider server110associated with the particular content provider. In some implementations, the content identifier may include a uniform resource identifier or uniform resource locator which comprises a deep link, such that the deep link is indicative of the content provider and the particular piece of content112.

The content list management module126may provide the consolidated content list data414, or a portion thereof, to the user102. For example, the user interface module420may provide web pages which allow the user102to login, review content items on the list, and initiate presentation on one or more of the destination devices134.

The content processing module130is configured to process input content112received from the content provider server110and generate output content132for distribution to one or more destination devices134(1),134(2), . . . ,134(K).

The processing may include decrypting, transcoding, transrating, transsizing, adapting, or otherwise altering the content in such a fashion as to provide output content132which is operable to be presented on the destination device134. Decrypting is removing encryption such as a digital rights management (“DRM”) scheme. Transcoding is the process of converting data from a first encoding scheme to a second encoding scheme. For example, video data may be converted from MPEG-2 to MPEG-4. Transrating processes the content in such a way that the encoding scheme is retained while the bit rate changes. For example, audio content encoded at a bit rate of 128 kilobits per second may be transrated down to a 64 kilobit per second bit rate. Transsizing processes the content to scale or change from a first image size to a second image size. For example, video content which is encoded in 720p may be transsized to upscale to 1080p for presentation on a corresponding 1080p device. Other alterations such as converting black-and-white images to color, color images to black-and-white, and so forth may also be provided.

The content processing module130may be configured to determine what processing to apply to the content112based at least in part on the destination device presentation context data416. The destination device presentation context data416(“presentation context data416”) provides information which is indicative of the destination device134which is to present the output content132. The presentation context data416may include device characteristics such as display hardware, content characteristics such as whether the content is video or audio, user preferences such as audio equalizer settings, and so forth. The destination device presentation context data416is discussed in more detail below with regard toFIG. 7. For example, as described below, the presentation context data416may include information that the destination device134supports a 1920×1080 display resolution, has a hardware decoder for MPEG-2 available, and so forth.

The content processing module130uses the presentation context data416to determine what format the destination device134requires in order to present the output content132. Once determined, the content processing module130may generate output content132which is consumable by the destination device134. For example, the content provider server110may provide the content112(1) in a format comprising standard definition video of 480p encoded with MPEG-4. The user102may use the access device104to send mark data120(1) requesting presentation of the content112(1) on the destination device134(1). The content processing module130may determine from the presentation context data416associated with the destination device134(1) that the destination device134(1) has a display with a native resolution of 1080p, only accepts MPEG-2 encoded data, and does not support hardware upscaling of video content. Based at least in part on this presentation context data416, the content processing module130may be configured to generate output content132(1) in which the content122(1) is transcoded into MPEG-2 and upscaled to 1080p. The output content132(1), now in a content which is operable by the destination device134(1) to present, may then be presented to the user102. From the user's102point of view, they activated the bookmarklet control118(1), perhaps selected the destination device134(1) if not previously set as a default, and were able to see the content112(1) presented on the destination device134.

The content processing module130may apply other forms of processing. In one implementation, the content processing module130may add or remove of borders such as windowboxes, letterboxes, pillarboxing, and so forth based at least in part on the presentation context data416. In another implementation captions may be added by content processing module130. For example, closed captions may be added to a video stream. The content processing module130may use machine or human translation to provide captions or additional audio, allowing the user102to experience content which is in a language unknown to the user102. For example, the user102may select content112which is in German which is processed into output content132with English subtitles or computer-generated English audio.

The content processing module130may also be configured to apply content filters such that the output content132is a subset of the input content112. For example, the user102(1) parent may activate a content filter. During processing, words present in the content112which are indicated in a profanity list are removed from the output content132which is presented on the destination device134(2) to the user102(2) child.

The processing applied by the content processing module130may also include, but is not limited to, adjusting image settings, sharpening images, modifying audio, adding transitions between pieces of content112, and so forth.

Other modules422may also be stored in the memory404. For example, a digital rights management module may be configured to apply digital rights management techniques to the output content132.

FIG. 5illustrates a block diagram500of consolidated content list data414based on list data128from different content provider servers110maintained by different content provider entities. As described above, the content list management module126may exchange data with the content list modules114of one or more of the content provider servers110. This allows the generation of the consolidated content list data414associated with a particular user account associated with the user102. The consolidated content list data414allows the user102to see in one interface content which has been selected for later presentation, regardless of which content provider is supplying the content.

In this illustration three content provider servers110(1)-(3) are depicted, each associated with a different content provider entity. Each of the content provider servers110shown here are associated with a different content provider. The user102may have different user accounts with each of these content providers. A content list502for each of the content providers indicates content which the user102or another party has designated for later consumption by the user102.

Over time, the user102has added different pieces of content112to content lists502of each of the content providers. In this illustration content list502(1) on the content provider server110(1) includes the content112titles “Tobor's Revenge” and “Burnt Sage.” Meanwhile the content provider server110(2) holds content list502(2) with the content112title “Folk Music Today.” Likewise, the content provider server110(3) holds content list502(3) which includes the content112titles “Poker Playoffs” and “Curling Finals.”

The content list management module126may be configured to access the content lists502associated with the user102and generate the consolidated content list data414. The list data128(1)-(3) may be retrieved by the distribution server122from the content list modules114(1)-(3) on the content provider servers110(1)-(3). The list data128may be processed and used to create the consolidated content list data414. The consolidated list data414may then be presented, within which the content titles are presented and available. The user102may access this single list, and select content for presentation. Once selected for presentation, the content112may be supplied by the respective content provider server110. In some implementations, the content processing module130may be used to process the content112into the output content132as described above.

FIG. 6illustrates a flow diagram600of generating the consolidated content list data414. The process may be implemented at least in part by one or more of the content list management module126on the distribution server122.

Block602receives, from the access device104, the mark data120. As described above, the mark data120is indicative of one or more pieces of content112provided by one or more content providers from the content provider servers110. For example, the user102may activate the bookmarklet control118for the content “Tobor's Revenge.”

The bookmarklet control118may be configured to add content which is currently being presented on the access device104or one of the destination devices134. In some implementation the bookmarklet control118may be configured to access information from one or more sensors of the access device104and use this to determine the content112to add to the consolidated content list data414. For example, a microphone and global positioning system receiver may be used to acquire audio and position information, respectively. Based at least in part on this information the system100may determine that the user102is at a recording of the radio show “Folk Music Today” and thus generate the mark data120for the content112resulting from the recording.

Block604adds the one or more pieces of content112to the consolidated content list data414. For example, data indicating the content112“Tobor's Revenge” and “Folk Music Today” may be added to the list.

Block606receives user input to present the one or more pieces of content112on the destination device134. For example, the user102may use the user interface presented by the user interface module420to select the presentation of “Tobor's Revenge” on the destination device134(2).

Block608causes presentation of the one or more pieces of content112on the destination device134. For example, the content112“Tobor's Revenge” may begin playing on the destination device134(2). Prior to presentation, in some implementations the content may be processed by the content processing module130of the distribution server122. This processing is discussed below with regard toFIGS. 7-10.

FIG. 7illustrates a block diagram700of the destination device context data416(“presentation context data416”). As described above, the content processing module130may process the input content112to produce output content132, with the processing based at least in part on the presentation context data416.

The presentation context data416provides information which is indicative of the destination device134which is to present the output content132. By having knowledge of the destination device134, the content processing module130may select processing which is appropriate to the destination device134, and which will result in the output content132being delivered to the destination device134which is compatible with, and capable of being presented by, the destination device134.

The presentation context data416may be retrieved from stored data in the datastore412, acquired from the destination device132, or from a combination of both. For example, a device identifier associated with the destination device134may be used to retrieve previously defined presentation context data416about that destination device134.

The presentation context data416may include one or more of device characteristics702, content characteristics704, or user preferences706. The device characteristics702provide data indicative of the hardware and software environment available on the destination device134. This data may include output hardware702(1), compatible content formats702(2), digital rights management (“DRM”) supported702(3), and other data702(V).

The output hardware702(1) data includes output hardware available for presentation on the destination device134, such as display resolution, output display color capability information, availability of hardware encoders/decoders, number of audio channels supported, and so forth. The output hardware720(1) data is indicative of the media output capabilities of the destination device134. For example, the output hardware702(1) data may indicate that the destination device134(1) has a full-color display which supports 1080p video data at 60 frames per second. Using this data, the content processing module130may ensure that compatible output content132is delivered. For example, the content processing module130would avoid attempted presentation of content112which is full-motion color video on a black-and-white electrophoretic display with a redraw rate insufficient for video.

The compatible content format data702(2) comprises information about what formats are accepted by the destination device134. For example, this may include a listing of formats such as MPEG-2, MP3, H.264, and so forth. In some implementations information about unsupported formats may be provided. By using this information, the content processing module130may determine whether transcoding is called for, and what output format to provide the output content132in.

The DRM supported data702(3) indicates what, if any, digital rights management protocols are supported and enforced. For example, the DRM supported data702(3) may indicate that the destination device134is compliant with the Marlin DRM platform created by the Marlin Developer Community. This data may be used to determine whether the device supports the DRM required by the content provider. In some implementations, the content processing module130may provide transformation from a first DRM scheme which is incompatible with the destination device134to a second DRM scheme which is compatible with the destination device134.

Other data702(V) may be provided, such as input hardware which is supported by the destination device134. For example, some content112such as games or interactive television may require input devices such as microphones, touch sensors, and so forth to properly present the content112.

The content characteristics704may include information indicative of the content, content metadata, presentation requirements, and so forth. For example, the content characteristics may indicate that the content comprises video with a multichannel audio track and is a cinematic release. The content processing module130may use this information to process the input content112such that the output content132renders in the best possible fashion available on the destination device132. Continuing the example, the content processing module130may apply psychoacoustic sound localization processing to the audio track to simulate multiple speakers from a single pair of speakers available on the destination device134.

The user preferences706indicate those presentation characteristics which the user102has defined or accepted. The user preferences706may include one or more of rating limitations706(1), presentation configuration preferences706(2), or other preferences706(P). The rating limitations706(1) may specify ratings such as those promulgated by the Motion Picture Association of America for which presentation is restricted. For example, the user102may set the rating limitation706(1) to not present content with a restricted “R” rating or higher.

The presentation configuration preferences706(2) indicate particular user settings such as audio equalizer settings, color balance preferences, and so forth. For example, the user102may configure the presentation configuration preferences706(2) such that when the content characteristics704indicate the content112to be presented is a cinematic release, that cinematic image settings be selected on the destination device134, with the cinematic image settings comprising pre-determined color balance and brightness settings.

Other user preferences706(P) may also be specified. For example, the user may specify that content which is to be rendered using a text-to-speech module should be provided with a contralto voice.

Illustrative Processes of Content Delivery

FIG. 8illustrates a flow diagram800of the interactions between the access device104, the distribution server122, the content provider server110, and the destination device134while providing content for presentation on the destination device. In this illustration, time increases down the page, as indicated by arrow802, such that operations of blocks at the top of the page may occur before operations of blocks at the bottom of the page.

Block804provides the mark data120indicate of content112which the user102wishes to add to the consolidated content list data414, present on a destination device134, or both. For example, the bookmarklet control118may generate the mark data120on the access device104.

At the distribution server112, block806requests the content112from the content provider110. In some implementations this request may include information indicative of the user account associated with the user102which has initiated the mark data120.

At the content provider server110, block808provides the indicated content112in a first format. For example, the content provider server110may deliver the content112(1) in the MPEG-4 format.

In some implementations, the distribution server122may use block810to determine the presentation context data416of the destination device134. For example, the distribution server122may query the destination device134to retrieve the presentation context data416indicating that presentation of MPEG-2 formatted content is supported. In some implementation the order of blocks806and810may be reversed.

Block812at the distribution server122provides output content132in a second format based at least in part on the presentation context data416. For example, the input content112in the MPEG-4 format may be transcoded to the MPEG-2 format and sent to the destination device134.

Block814causes the destination device134to present the output content132. In some implementations instructions may be sent to the destination device134which, when executed by a processor of the destination device134, instruct the destination device134to begin presentation of the output content134. In a further implementation, the destination device134may be configured to present a prompt requesting user approval to present the output content132. For example, a display on the destination device134may be configured to ask “do you want to watch this content?” and accept input from a remote control. Responsive to receiving data indicative of acceptance, the distribution server122may provide the output content132for presentation.

FIG. 9illustrates a flow diagram900of generating and providing the output content132to the destination device134. The process may be implemented at least in part by the distribution server122and the modules therein.

Block902receives from a first device, such as the access device104, data indicative of content112available from the content provider110for presentation. The access device104may comprise a portable computing device such as a tablet computer, smartphone, laptop, in-vehicle entertainment system, and so forth. For example, the mark management module124may receive the mark data120from the access device104. The data, such as the mark data120, may be generated at least in part by a script executing on the access device104. For example, the bookmarklet control118may utilize a bookmarklet script activated within a web browser engine executing on the access device104to generate and send the mark data120associated with the content112. As described above, the content112may comprise one or more of audio data, electronic book data, video data, or still image data.

Block904determines a first format of the content112as available from the content provider110for presentation. For example, the content processing module130may determine the input content112is in an MPEG-4 format. This determination may be made based in part on content metadata associated with the content112, an analysis of the content112as delivered to the content processing module130, and so forth.

Block906determines a presentation context of the destination device134. As described above, in one implementation, the distribution server122may send a request for presentation context data416to the destination device134, and may then receive the requested presentation context data416from the destination device. The presentation context data416is described above in more detail with regard toFIG. 7.

As described also above, in another implementation the distribution server122may lookup presentation context data416associated with the destination device134. In this implementation, the mark data120generated at least in part by the script executing on the access device104may include device identification data indicative of one or more of a manufacturer, make, or model of the access device104. The presentation context data416may be retrieved from a list of the one or more content formats compatible with presentation on the destination device134based at least in part on the device identification data. Other presentation context data416may be retrieved in this fashion as well.

In yet another implementation, the mark data120may include the presentation context data416. For example, the mark data120may include one or more of the device characteristics702, the content characteristics704, or the user preferences706.

Block908determines a second format compatible for presentation of the content with a second or destination device134. As described above, the determination may be based at least in part on the presentation context data416of the destination device134. As also described above, the presentation context data416comprises information indicative of one or more content formats compatible with presentation on the destination device134. The presentation context data416may include information indicative of the one or more media output capabilities of the second device. For example, that the destination device134supports 1080p video with a hardware-based MPEG-4 decoder.

Block910receives at least a portion of the one or more pieces of content112from the content provider110in the first format. For example, the distribution server122may send a request for data using account information associated with the user account of the user102, which results in the content provider server110sending the input content112. This retrieval may be based at least in part on the device identification.

Block912processes the one or more pieces of content112into one or more pieces of output content132based at least in part on the determined second format. For example, the input content112in the MPEG-4 format may be transcoded to the MPEG-2 format suitable for presentation on the destination device134(1).

As describe above, the processing may include transcoding the received at least a portion of the content112from the first format into a second format compatible with the presentation context of the destination device134. The processing may include the other operations discussed above, including but not limited to transsrating, transsizing, decrypting, and so forth.

In one implementation the processing may include determination of a portion of the content112supported by the presentation context of the destination device134. For example, the presentation context data416may indicate the destination device134is capable of audio output. The processing may further determine a portion of the content114unsupported by the presentation context of the destination device134. For example, the destination device134may lack a display for presenting video output. The processing may then comprise modification of the output content132to comprise the portion of the content112supported by the presentation context while discarding the portion of the content unsupported by the presentation context. For example, the output content132may comprise only the audio portion of the content112and omitting the video portion.

Block914sends at least a portion of the processed output content132to the destination device134. For example, the transcoded content in the second format may be sent using the network to the second destination device134. In one implementation the mark data120may include data indicative of the particular destination device(s)134. In this implementation, the sending may be based at least in part on the designation.

FIG. 10illustrates a flow diagram1000of generating the output content132based at least in part on one or more cost metrics. The process may be implemented at least in part by the distribution server122and the modules therein. In some implementations it may be advantageous to adjust the processing applied to the input content112based on costs associated with the processing.

Block1002receives a request to process input content112into output content132for distribution to the destination device134. Block1004determines the presentation context data of416the destination device1004.

Block1006determines one or more output content formats associated with the presentation context data416. In one implementation, block1006may determine a plurality of available formats associated with the presentation context of the destination device134. For example, the destination device134may be compatible with presenting content using the MPEG-4 format and a “Proprietary X” format.

Block1008determines, based on one or more cost metrics, a cost for processing at least a portion of the content112into the one or more available formats. For example, the content processing module130may determine that there is a financial cost of $0.04 associated with providing the output content134in the MPEG-4 output format and $0.27 associated with providing the output content in134in the “Proprietary X” output format.

The cost metrics may include one or more of license fees associated with the processing, estimated processor resources used for the processing, current system load, estimated memory usage for the processing, DRM translation fees, perceived quality of the output by the user102, fidelity of the processing, and so forth. These costs may be assessed in monetary units such as dollars, functional units such as number of processor cycles or bytes of memory consumed, or a combination thereof.

Block1010selects the output format from the plurality of available formats based at least in part on the one or more cost metrics. In one implementation, the format having the lowest cost may be selected. For example, the MPEG-4 format may be selected due to the lower cost. Selection criteria may be designated globally across all users102, by groups of users102, or by individual users102. For example, the user102(1) may choose to have processing which always results in highest fidelity of content presented regardless of the cost, while the user102(2) may choose to always have the least expensive.

Block1012processes the input content112into the output content134using the selected output format. The content processing module130may generate the output content132in the MPEG-4 format.

FIG. 11illustrates a flow diagram1100of determining a presentation context of a destination device and initiating delivery of content to that destination device. The process may be implemented at least in part by the distribution server122and the modules therein.

Block1102receives from the access device104data indicative of content112available from a content provider110for presentation. For example, the user102may activate the bookmarklet control118of the access device104to generate mark data120.

As described above, the mark data120may designate the destination device134. This designation indicates what device the content provider server110will be requested to transfer content112to, as described below.

Block1104determines a plurality of formats of the content112as available from the content provider. For example, the content provider may have available for distribution from the content provider server110the content112in the MPEG-2 and MPEG-4 formats.

Block1106determines the presentation context of the destination device134. As described above, the presentation context data416is indicative of presentation capabilities of the destination device134for presentation on the destination device134.

Block1108selects a delivery format from the plurality of formats of the content112as available from the content provider. The delivery format is selected which is operable with the presentation context of the destination device134. For example, where the destination device134only supports the MPEG-2 format, the MPEG-2 format would be selected for delivery.

Block1110initiates transfer of the content112in the selected format between the content provider server110and the destination device112. In one implementation the initiation of transfer of the content112may comprise sending to the content provider server110data configured to initiate transmission of the content in the delivery format to the destination device134. For example, XML data may be provided indicating user account credentials associated with the user, content identifier, format requested, and destination device address.

In another implementation, the initiation of the transfer of the content112may comprise sending the destination device134data configured to initiate transmission of the content112. This data may be configured to initiate the transmission in the desired delivery format from the content provider server110to the destination device134. For example, a script or link may be provided to the destination device134, which when processed by a rendering engine establishes the connection with the designated content provider server110and requests the content112for presentation.

As described above with regard toFIG. 10, the selection of the delivery format may be further based at least in part on one or more of available bandwidth between the destination device134and the content provider server110, or financial costs associated with transferring the content112using the plurality of available formats.

CONCLUSION