1. Field of the Invention
The present invention relates generally to content management, and more specifically, to preserving a user's experience with content across multiple computing devices.
2. Description of the Related Art
More and more people are using diverse hardware devices and software applications to experience content items (e.g., files or information). Many content items in the form of digital data are nowadays compatible across various computing devices (e.g., an MP3 player, a personal computer, or a PDA). For example, someone can listen to an MP3 file using a portable MP3 player as well as a personal computer or a PDA. As our computing devices such as portable communication devices become more powerful, people are presented with increasing number of computing devices to access the content items. The problem occurs when someone is accessing content item on one device, stops, and then accesses the content item from another device. Presently, there is no acceptable way to preserve the user's experience on one device.
Conventional applications generally do not store a location where the user previously stopped accessing a content item. As a result, when the user subsequently plays the same content item, the user must search manually for the previous location of the content item to avoid viewing or listening to portions of the content item previously experienced. Searching for the previous exit point of a content item is inconvenient and time-consuming for the user, especially when the content item has a long running time or when the application supports limited or no search functionality.
Some conventional applications store and retrieve previous location of the content items after accessing the content items. For example, a media player may store the location where a user left off in the previous play of an audio file. When the user subsequently accesses the same audio file, the media player continues the audio file from the previous location. Therefore, a user of the media player can continue the audio file without searching for the previous location in the audio file. But even for applications in which previous locations are stored, information indicating the previous location in a content item (hereinafter referred to as “location information”) generated by one application is not usable in a different application. The location information for applications is generally stored in a file accessible to or compatible with only the applications that generated the location information. Therefore, even when there is a file including the location information on the computing device, a user may still have to manually search for the previous location in the media file when the user accesses the content item using a different application.
It is more problematic when the same content item is accessed by different computing devices. Someone using multiple computing devices must search for previous locations of a content item where he discontinued the content item every time he changes the computing device in order to avoid repeating the portion of a content item he already experienced. When multiple computing devices are used to access the same content item, a file including the location information of the content item may not be present on the computing device that the user is attempting to use. This makes it more difficult to implement content management that allows a user to automatically continue accessing the content item from a location where the user discontinued from a prior access to the content item.
This inconvenience is not limited to time-based content item, such as audio or movie files. Users accessing static content items on different computing devices can also experience the same inconvenience. A static content item is a content item that does not incorporate time-based video or audio files and thus remains the same regardless of progress in time. An internet webpage consisting only of text and picture files is an example of the static content item. Even for such static content item, the location information can improve a user's experience and efficiency. For example, a person uses a personal computer at office to work on a static content item, in this case a MSword or Excel document, and then returns home to work on the same document using another personal computer. The reader may waste his time searching for the page or line of the document where he previously left off. The time can be saved if the user can automatically access the previous location (i.e., page and line of the document) after switching to a different computing device.
Therefore, there is a need for a content management method and device that allows a user to experience content items consistently and efficiently regardless of changes in the computing devices or applications used by the user. Further, there is a need for a content management method and device to automatically continue the content item from the location in the content item where the user previously left off.
An embodiment of the present invention provides a method of managing content item which stores location information indicating a location in a content item where a user discontinued the content item on a computing device so that the user can continue from that location when subsequently accessing the same content item. Upon discontinuing access of the content item, the location information is generated or updated by the computing device to indicate the location in the content item where the user discontinued.
The content item of the present invention includes all types of content items including both time-based content items and static content items. The time-based content items are content items that appear, update or disappear with progress of time. The time-based content items include, among other contents items, audio, video, automatically updated weather information, news, stock price updates, and auto-advancing presentations and messages. The static content items remain constant with the progress of time. The static content items include, among other content items, still photos and texts.
The computing device of the present invention refers to physical or logical devices that allow the user to access the content items. Common computing devices include personal computers, MP3 players, smart phones, PDAs, and video game consoles. Multiple computing devices can be implemented on a single device. For example, a personal computer with multiple operating systems (e.g., Microsoft Windows, and Linux) or virtual machines (e.g., VMware, and Xen) can have multiple logical computing devices on a single physical device.
The location information can be any addresses within any addressable content items. For the time-based content items, the location information can indicate, among others, the offset time from the start of the content items. For a static content item, the location information can indicate, among others, a Uniform Resource Locator (URL) address, page, paragraph, column or line of the static content item.
An application is any application program that can be operated on a computing device to access the content item. Popular applications include, video and music players (e.g., Pocket Tunes, Kinoma, Windows Media Player, RealPlayer, iTunes, PowerDVD, QuickTime, and Winamp), web browsers (e.g., NetFront, Microsoft Internet Explorer, Mozilla Firefox, and Apple Safari), image viewers (e.g., VD Image Viewer, and ADCSee), document viewers (e.g., Adobe Acrobat), and word processor applications (e.g., Documents To Go, Microsoft Word, and WordPerfect).
A location manager may be provided on the computing device to generate and retrieve the location information. The location manager in the computing device may operate in conjunction with applications on the computing device to allow users to continue the content items from the location in the content item where he previously discontinued the content item.
In one embodiment, the computing devices synchronize or update their location information using a remote server. The remote server receives the location information from a first computing device when the user discontinues the content item and sends the location information to a second computing device when the user accesses the content item on the second computing device. The remote server may include a user account database that stores the location information for each user.
In another embodiment of the present invention, the computing devices synchronize or update their location information using a peer-to-peer communication without the use of the remote server. The computing devices can store the location information on synchronization information storages provided locally on the computing devices. When the peer-to-peer communication is initiated the computing devices update their location information so that it is consistent with that of communicating computing devices.
The content item can be stored in various places. In one embodiment, the content item is stored locally on the computing device. In another embodiment, the content item is stored on the remote server. In yet another embodiment, the content item is stored on a content source provided by a third party service provider. The remote server may cache the content items provided by the third party service provider to improve access speed to the content item by the computing device.
In one embodiment, a method for preventing conflict of the location information is provided. The remote server may deny access to the content item to a computing device if the content item is already being accessed by the user on another computing device.
The features and advantages described in the specification are not all inclusive and, in particular, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter.
The embodiments of the present invention will be described below with reference to the accompanying drawings. Like reference numerals are used for like elements in the accompanying drawings.
Various content items may benefit from the present invention. Examples of content items that can benefit by accessing at a location where the user left off in previous sessions include, among other content items, video or audio files, video or audio streams, text files, emails, documents, audio books, web pages, webcasts, podcasts, e-books, and games. Content items can also be a list or history of individual files to be accessed. For example, the content items can be a playlist of MP3 files to be played, or a history of web sites visited by a web browser in a single session.
Depending on the types of content items, a “location” in the content item can refer to different attributes. In a time-based content item, the location can generally be identified by the time elapsed after the start of the content item, although other attributes such as number of frames elapsed from the first frame of the content item may also be used. In a static content item, the location can be identified by logical units of the content item, for example, pages for e-books, URL addresses for web pages, and pages or lines for documents. If the content item is a list or history of individual files to be accessed, the location can a file name, a file number or a sequential number. For example, the location can be a song number in a MP3 file playlist or a file number for a series of short clips that in combination form a movie.
In order to implement the functionality of continuing the content item from a previous session, embodiments of the present invention use the concept of “location information.” The location information may comprise various attributes that can indicate a location within a content item. For example, for a time-based content item, the location information may indicate the time elapsed after the user exits the content item in a session. For a static content item, the location information may indicate pages, columns or lines viewed by the user in a previous session. As will be explained further below, embodiments of the present invention share the location information with multiple platforms to enable the user to continue a content item from the location where the user previously left off.
For time-based content items such as video or audio streams, a real world time (e.g., year, month, date, hour, minute and second) may also be used to indicate the location where the user discontinued access to the content items. For example, when a streaming video broadcast is interrupted by the user (e.g., stop playing) or due to network traffic conditions, the location information can indicate the interrupted real world time of play (e.g., Dec. 1, 2006, 10:14:40 AM). The user may re-access the same streaming video broadcast later, and can start viewing the streaming video broadcast from the interrupted time of play.
The computing devices 100 can be various devices capable of accessing the content items. For example, the computing device 100 can be a personal computer, an MP3 player, a mobile phone, a smart phone, a PDA (Personal Digital Assistant), or a video game console. In one embodiment, the computing devices are disparate devices with different hardware and/or software configurations. For example, a computing device 100A is a laptop computer with Microsoft Windows operating system, and another computing device 100B is a PDA with Palm operating system. In another embodiment, all of the computing devices have similar software and hardware configurations. For example, the computing device 100a is a desktop computer with Microsoft Windows operating system, and the computing device 100b is a laptop computer with the same Microsoft Windows operating system.
The content items can be stored locally on the computing devices 100 or it can be accessed remotely from the remote server 240 or content sources 222 (each of the content sources 222A through 222N is generally referred to as content sources 222, all of which are collectively called remote contents 220). File storage for the computing device and the remote server is explained below in detail with reference to
In addition, the remote server 240 may convert the content items available from the content sources 222 to a format compatible with certain computing devices 100. For example, if the computing device 100A is a mobile phone, the remote server 240 may convert the HTML based contents to a WAP (Wireless Application Protocol) compatible format to allow access to the content item by the mobile phone.
Referring to
Multiple applications 310 may be provided in the computing device 100 (as shown in
The file storage 330 can be implemented by various storage devices including, a flash memory device, a hard disk, a floppy disk, and Random Access Memory (RAM). In one embodiment, the file storage 330 is integrated onto a memory device (e.g., hard disk or RAM) storing content items along with other software such as operating system files. In another embodiment, the file storage 330 is a memory device (e.g., video game cartridge) storing only certain types of content items. The file storage 330 communicates with the application through a data bus 360. The file storage 330 may store a whole content item or a portion of the content item. For a streaming content item, the file storage 330 may store only a small portion of the content item sufficient for buffering.
The communication module 340 communicates with other computing devices 100, the content sources 222, and the remote server 240 through the network 230. The communication module 340 communicates with the location manager 320 and the file storage 330 using data buses 370 and 380. The communication module 340 uses a channel 390 to communicate with the network 230.
The location manager 320 manages the location information. When the user attempts an access to the content items using the application 310, the application 310 notifies the attempt to the location manager 320 through a data bus 350. In response, the location manager 320 communicates with the remote server 240 through the communication module 340 to confirm if location information (corresponding to the user and the content item) is available from the remote server 240. The location manager 320 informs the application manager 310 of the location information obtained from the remote server 240. The location manager 320 also generates or updates the location information when the user discontinues access to the content item. The updated location information is then send to the remote server 240. The process of communicating between the location manager 320, the applications 310, the file storage 430, the content sources 222, and the remote server 240 is explained below in detail with reference to
Multiple computing devices can be implemented on a single physical device. For example, a personal computer with multiple operating systems (e.g., Microsoft Word, and Linux) or virtual machines (e.g., VMware, and Xen) can have multiple logical computing devices on a single physical device.
Referring now to
Referring to
If the location information is not available from the remote server 240, the remote server notifies unavailability to the location manager 320. In response, the location manager 320 notifies the unavailability to the application 310, which means that the content items should start from the beginning. When the user discontinues access to the content item, the application 310 notifies the location where the user discontinued access. Upon receiving the notice from the application 310, the location manager generates new location information indicating the discontinued location in the content item. The new location information is then sent to the remote server 240 for storing.
Conflict may arise when the same content is accessed by a user on different computing devices simultaneously. Referring to
In another embodiment, multiple sessions are allowed to run simultaneously on different computing devices. In this case, the maximum number of sessions that can run simultaneously may or may not be set.
In one embodiment, peer-to-peer synchronization that does not involve a remote server is used.
In the above embodiments, the content items were accessed by the same application operating on different computing devices. Most content items, however, may be viewed by more than one applications. For example, a movie file can be viewed by Windows Media Player as well as Quicktime. For such a content item that can be accessed in different applications, the location information can be used by different applications so that the user can continue from his previous session of the content item.
As recognized through the example of the computing devices and the remote server described herein, the various embodiments disclosed herein may be implemented using one or more hardware elements. In general, a hardware element may refer to any hardware structures arranged to perform certain operations. In one embodiment, for example, the hardware elements may include any analog or digital electrical or electronic elements fabricated on a substrate. The fabrication may be performed using silicon-based integrated circuit (IC) techniques, such as complementary metal oxide semiconductor (CMOS), bipolar, and bipolar CMOS (BiCMOS) techniques, for example. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. The embodiments are not limited in this context.
Various embodiments may be implemented using one or more software elements. In general, a software element may refer to any software structures arranged to perform certain operations. In one embodiment, for example, the software elements may include program instructions and/or data adapted for execution by a hardware element, such as a processor. Program instructions may include an organized list of commands comprising words, values or symbols arranged in a predetermined syntax, that when executed, may cause a processor to perform a corresponding set of operations.
The software may be written or coded using a programming language. Examples of programming languages may include C, C++, BASIC, Perl, Matlab, Pascal, Visual BASIC, JAVA, ActiveX, assembly language, machine code, and so forth. The software may be stored using any type of computer-readable media or machine-readable media. Furthermore, the software may be stored on the media as source code or object code. The software may also be stored on the media as compressed and/or encrypted data. Examples of software may include any software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. The embodiments are not limited in this context.
Some embodiments may be implemented, for example, using any computer-readable media, machine-readable media, or article capable of storing software. The media or article may include any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and/or storage unit, such as any of the examples described with reference to a memory. The media or article may comprise memory, removable or non-removable media, erasable or non-erasable media, writeable or re-writeable media, digital or analog media, hard disk, floppy disk, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various types of Digital Versatile Disk (DVD), subscriber identify module, tape, cassette, or the like. The instructions may include any suitable type of code, such as source code, object code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language, such as C, C++, Java, BASIC, Perl, Matlab, Pascal, Visual BASIC, JAVA, ActiveX, assembly language, machine code, and so forth. The embodiments are not limited in this context.
Unless specifically stated otherwise, it may be appreciated that terms such as “processing,” “computing,” “calculating,” “determining,” or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulates and/or transforms data represented as physical quantities (e.g., electronic) within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices. The embodiments are not limited in this context.
As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
Also, use of the “a” or “an” are employed to describe elements and components of embodiments of the present invention. This was done merely for convenience and to give a general sense of the embodiments of the present invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs for a system and a process for a software configured multimedia control mechanism through the disclosed principles herein. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the present invention is not limited to the precise construction and components disclosed herein and that various modifications, changes and variations which will be apparent to those skilled in the art may be made in the arrangement, operation and details of the method and apparatus of the present invention disclosed herein without departing from the spirit and scope of the invention as defined in the appended claims.