1. Field
Disclosed are systems and methods related to digital media playback systems, and more particularly to media playback systems having distributed elements.
2. Related Art
Digital media storage and playback systems have become increasingly common. In many instances, there are multiple devices involved in enjoying media such as music or videos. A server device may store the content of the media and include a display for viewing and speakers for listening to music. A wireless device may communicate and control the server for management of the performance of the media. When such an integrated system is employed to enjoy media, what is desirable is an improved manner in which to synchronize a status of real time performance of media between such devices.
Additional features and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The features and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth herein.
Aspects include an audio/visual (A/V) content performance system allowing remote viewing of status information on a variety of status display devices. The system can comprise an A/V content performance device operable for performing A/V content accessible from the content performance device, and a wireless network to which the performance device is operable to connect. The system comprises a status display device operable to interface with the wireless network, and initiate a request to the performance device, transmitted through the network, for status information concerning A/V content currently being performed. The performance device is operable to respond with update messages upon status changes during content performance, where the update messages convey information describing one or more changes to content playback status.
Other aspects include a method for obtaining A/V playback status at a remote device. The method can comprise requesting from an A/V performance device an indication when a real-time play status of A/V content being performed changed, and receiving the indication at a remote device over a wireless network. The method also comprises requesting, from the remote device, updated status information, receiving updated status information at the remote device, and interpreting the status information. The remote device implements one or more changes to a display at the remote device based on the interpreted status information.
In another aspect, a method applies in a network where a remote content performance or content control device communicates with a server that provides the content and/or updates of the content. The remote device sends a message to the server indicating that it is at status X and requests notification when the status has changed. X can represent any assigned status number. For example, if a user is listening to a song in a playlist, the status may be status 3 representing that the system has changed from a first status, to a second status and is now on a third status. Any status changes such as pausing, updated metadata, new images, and so forth can trigger a status change. The server receives the message but does not act on the request until a status change exists. For example, if a song ends and a new song is to begin, the status change may be incremented to status 4. The server can either simply notify the remote device of the status change at which point the remote device sends another request for the update content associated with the new status or the server may simply send the new content with instructions that that the new contents is associated with status 4. At this point, the remote device transmits another message and request that it is at status 4 and to notify the remote device when the status changes. In this manner, real-time updated information can be maintained between the server and the remote device. The remote device may perform the content or may also be a remote control for the server device to perform the content.
Still other aspects include a computer readable medium storing computer readable instructions for a method implementable in an A/V performance system. The method comprises receiving, from a remote device, a request for updates to content playback status. The request including a version number indicating status information current at the remote device. The method also comprises implementing a content playback status change, sending to the remote device an indication that the content playback status was updated, and fulfilling a request from the remote device for the updated status with information describing the updated status and an incremented version number. The method also comprises continuing with the receiving of another request for updates to content playback status. The request can include the incremented version number.
The following description is presented to enable any person skilled in the art to make and use an A/V content playback system including a source of A/V content, and one or more remotely situated devices on which status can be viewed by one or more users. Various modifications will be readily apparent to those skilled in the art based on the disclosures here, and principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Moreover, in the following description, numerous details are set forth for the purpose of explanation. However, one of ordinary skill in the art will realize from these disclosures that the invention might be practiced without the use of these specific details. In other instances, structures and processes are shown in block diagram form in order not to obscure the description of the invention with unnecessary detail. Thus, embodiments of the present invention are not to be limited to the examples shown, but encompass the widest scope consistent with the claims appended hereto.
Device 105 also communicates with a wireless access point 135, which can operate according to one or more 802.11x series protocols (e.g., 802.11g, 802.11n, and so on). Device 105 may contain an add-in card, or have an integrated MAC/PHY to enable such communication.
Device 105 provides storage for a media library that can be associated with a library manager such as iTunes; media libraries also can be accessed through wireless network 135, or by any other network to which device 105 has access. These libraries can provide content accessible to and through device 105 without any explicit interaction on the part of a user to determine in what physical location a particular item of content may be. Content can be downloaded and stored at (more broadly, locally accessible to) device 105, and device 105 also can obtain streams of content from Internet-based hosts.
Devices 140 and 141, e.g., a phone, smartphone, personal information manager, Blackberry™ or an iPhone™, also are equipped with an 802.11 MAC/PHY, for communicating with access point 135. Devices 140 and 141 can be implemented by a phone or other portable electronic device having a capability of being equipped/programmed with software/firmware enabling functionality according to examples in the following description. In addition to being able to provide status information to user(s) of devices 140 and 141, these devices also can accept status change request information from users and provide those requests to device 105; however, the present description focuses more on status updates than use of devices 140 and 141 as remote controls to device 105 or to performance nodes receiving content from device 105.
In sum, system 100 includes a device 105 capable of providing A/V content stored in media accessible to device 105 to nodes for performing such content. System 100 also includes one or more status reviewing devices 140 and 141 to which playback status can be synchronized and from what updates or changes to playback-related properties can be requested, as explained further below.
The constituent components and arrangement of same in
In
The performance device, having received the request from the controlling device to be informed of status updates, maintains an indicator that such a request is outstanding. When a status change is detected by the performance device, it can formulate a status change update message and send that message to the controlling device. The controlling device receives the update message, and interprets the contents of it, as explained in further detail with respect to the examples of
Systems also can implement a hybrid of the signal flows of
The information can be described from a context of a change to a previous status known to the controlling device (e.g., transmitting only change increments, where appropriate). However, since an amount of information required to completely describe the status generally is not large, it can be more convenient simply to retransmit all status information when any status aspect changes. Also, some status information is not amenable to incremental updating, such as track and album names. In cases where larger amounts of information, e.g., graphics, are involved, then those graphics can be transmitted only when they change, and other less data intensive status information can be retransmitted on every status change.
The example discussed with respect to
Returning now to
Depending on whether there is being implemented a signal flow according to
Where a signal flow according to
Then, method 500, if implementing a signal flow according to
In either case, method 600 includes receiving, at device 140 (and any other device requesting such updates) the update information (620), interpreting that update information (625), and implementing updates/changes according to the interpretation of the update information (630).
Interpreting 625 and implementing 630 can include using raw status or capabilities information or other information to effect UI changes or display changes, as described further with respect to
For example, Table 1 below shows information types that can be transmitted in status update messages. For example, play status can be a binary value indicating either play (1) or pause (0) (or vice versa). Likewise, support for shuffle capability or repeat capability can be indicated by respective bits, as each is either supported or not for a given item of content. For example, if an Internet-based source of content is currently being accessed, then the shuffle bit may indicate that shuffle is not presently supported. Other data can include string variables or number variables, as illustrated. Various formats for numbers can be supported, for example, total track time, and time remaining each can have separate number fields representing minutes and seconds. All such information preferably is transmitted in a pre-arranged binary format, although in other implementations, more human readable or interpretable formats can be used. For example, XML tags can be used to identify data fields, followed by values for such fields. In some cases, multiple formats can be pre-arranged, and an indication of a format for a particular message can be included with that message. Other types of messages that can be supported include system messages that can provide for updating of such formats.
Now returning to further examples of how a device receiving status update messages can interpret content in those messages,
Also apparent from the above disclosures is that device 105 provides update aggregation functionality, such that there can be multiple ways that control requests can be made or status changes can be requested or caused. For example, as described above, new content information can come from a radio station changing tracks, or album art work. By further example, commands can come from a first remote control indicating a control request, e.g., pause, skip, shuffle, or repeat a given item of A/V content. Each of inputs can be a source of/cause initiation of a status change at device 105 (i.e., controlling device 105 to change status), which in turn causes production and transmission of status update messages that can be provided to a plurality of status reviewing devices, which have made requests to receive such status update messages. Thus, status reviewing devices (e.g., device 140) also can function as sources of control requests to device 105, such that those devices also can function as remote controls, if appropriately configured. For example, a personal information manager, a laptop computer, a smartphone, an iPhone, and a Blackberry all can function as a device for receiving status updates effected from any or all of these sources.
In the above examples, various functionality and capabilities were attributed to computer 105, and such capabilities can be readily implemented by computer readable instructions stored in a computer readable medium available to a computer having one or more processing resources for executing such instructions.
Similarly, an example of a phone configured for software for communicating with computer 105, and providing user interface screens for obtaining user input concerning properties updates to A/V performance nodes was illustrated. However, a person of ordinary skill also would be able to understand based on these disclosures that other devices having wireless networking capability, and which can be programmed or otherwise configured to obtain property information from an A/V source concerning one or more remote A/V performance nodes, solicit user inputs for updating such properties, and communicate such updates to the A/V source can be used as a remote controller in accordance with these examples.
For sake of clarity, certain functionality and/or other capabilities were attributed to specific portions of a device, in some cases. However, such attribution does not imply a requirement that such functionality be implemented in that device portion, but rather as technological innovation continues variations on implementations of devices would be expected by those of ordinary skill based on these examples. For example, those of ordinary skill can make decisions concerning whether to implement a given function in hardware or as software configuring a processor, whether to use multiple different processors in a given system, one larger processor, and so on.
In another embodiment, the focus is on the server device 105 and the communication to and from that device. An example method aspect of this embodiment includes a method for synchronizing media playback status between the server device 105 and a client device 141, 140. The method includes, at the server device, receiving data from the client device 141, 140 indicating its status associated with real-time media playback and a request for notification for a change in status of the real-time media playback and waiting to act upon the received data until a change in the status of the real-time media playback exists. Upon the change in the status of the real-time media playback (which can be any change such as a new song, new movie, updated images, updated metadata provided in the middle of the performance, etc), either (1) sending an incremented status notification to the client device with data associated with the changed status or (2) sending notification to the client device of a change in status, receiving a request from the client device for the new status and transmitting the incremented status notification to the client device with data associated with the changed status.
Yet another embodiment is client device based and focuses on communications to and from the client device or remote device. An example method includes a method for synchronizing media playback status between a server device 105 and the client device 141, 140. The method includes, at the client device, transmitting data to the server device indicating a status of the client device associated with real-time media playback and a request for notification for a change in status of the real-time media playback, wherein the server device waits to act upon the received data until a change in the status of the real-time media playback exists. Upon the change in the status of the real-time media playback, either (1) receiving an incremented status notification from the server device with data associated with the changed status or (2) receiving notification from the server device of a change in status, transmitting a request from the client device for the new status and receiving the incremented status notification to the client device with data associated with the changed status.
Embodiments within the scope of the present invention may also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or combination thereof) to a computer, the computer properly views the connection as a computer-readable medium. A “tangible” computer-readable medium expressly excludes software per se (not stored on a tangible medium) and a wireless, air interface. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of the computer-readable media.
Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Computer-executable instructions also include program modules that are executed by computers in stand-alone or network environments. Generally, program modules include routines, programs, objects, components, and data structures, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps. Program modules may also comprise any tangible computer-readable medium in connection with the various hardware computer components disclosed herein, when operating to perform a particular function based on the instructions of the program contained in the medium.
Those of skill in the art will appreciate that other embodiments of the invention may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Embodiments may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Although the above description may contain specific details, they should not be construed as limiting the claims in any way. Other configurations of the described embodiments of the invention are part of the scope of this invention. Accordingly, the appended claims and their legal equivalents should only define the invention, rather than any specific examples given.
The present application is related to U.S. Pat. No. 6,728,729, the content of which are incorporated herein by reference. The present application is also related to Apple Docket Nos. P5929US1 and P5928US1. The content of each of these applications is incorporated herein by reference.