U.S. patent application number 15/365123 was filed with the patent office on 2017-06-22 for arrangement for synchronizing media files with portable devices.
The applicant listed for this patent is MICROSOFT TECHNOLOGY LICENSING, LLC. Invention is credited to Dennis Kiilerich, Andrew Silverman.
Application Number | 20170177692 15/365123 |
Document ID | / |
Family ID | 40624765 |
Filed Date | 2017-06-22 |
United States Patent
Application |
20170177692 |
Kind Code |
A1 |
Kiilerich; Dennis ; et
al. |
June 22, 2017 |
ARRANGEMENT FOR SYNCHRONIZING MEDIA FILES WITH PORTABLE DEVICES
Abstract
Arrangements are provided which improve the efficiency of the
synchronization process. The same ensure that synchronizations of
large quantities of content can be completed with a minimum of
delay. One method prioritizes the various tasks that are to be
performed prior to synchronization. Another method initiates
dependent tasks while parsing a synchronization tasks list. Yet
another method allows modification of an in-process synchronization
operation to allow new synchronization tasks to be accomplished
within the context of the same process, negating the need to
restart synchronization.
Inventors: |
Kiilerich; Dennis; (Seattle,
WA) ; Silverman; Andrew; (Redmond, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
MICROSOFT TECHNOLOGY LICENSING, LLC |
Redmond |
WA |
US |
|
|
Family ID: |
40624765 |
Appl. No.: |
15/365123 |
Filed: |
November 30, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14468142 |
Aug 25, 2014 |
9544369 |
|
|
15365123 |
|
|
|
|
12031708 |
Feb 15, 2008 |
8818941 |
|
|
14468142 |
|
|
|
|
60987079 |
Nov 11, 2007 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
H04N 21/4126 20130101;
G06F 16/60 20190101; G06F 16/4387 20190101; H04N 21/8113 20130101;
G06F 16/40 20190101; G06F 16/273 20190101; G06F 16/9574 20190101;
G06F 16/70 20190101; H04N 21/4825 20130101; Y10S 707/913 20130101;
H04L 67/1095 20130101 |
International
Class: |
G06F 17/30 20060101
G06F017/30; H04L 29/08 20060101 H04L029/08; H04N 21/81 20060101
H04N021/81; H04N 21/41 20060101 H04N021/41; H04N 21/482 20060101
H04N021/482 |
Claims
1-20. (canceled)
21. A content playback device comprising: one or more processors;
and a computer-readable medium storing instructions which when
executed by the processors cause the processors to: at least
partially synchronize a first plurality of content items stored on
the computer-readable medium and a second plurality of content
items stored on a content management device by performing a list of
tasks; during the synchronization, detect a user-directed addition,
deletion or modification of a content item in one of the first or
second plurality of content items; and responsive to the detecting,
dynamically modify the task list to add, delete or modify the
content item, respectively, in the other of the first or second
plurality of content items.
22. The content playback device of claim 21, the computer-readable
medium further comprising instructions that cause the processors
to: continue the synchronization of the first plurality of content
items and the second plurality of content items such that the
synchronization includes the user-directed addition, deletion or
modification of the content item.
23. The content playback device of claim 21 wherein at least a
portion of the first plurality of content items is organized into
at least a first container and at least a portion of the second
plurality of content items is organized into at least a second
container, each of the containers being defined by action of a
filter on a media library.
24. The content playback device of claim 23, the instructions for
dynamically modifying the task list further comprise instructions
that cause the processor to: detect a change in one of the first
container or the second container wherein the change corresponds to
one of the user-directed addition, deletion or modification of the
content item in one of the first or the second plurality of content
items.
25. The content playback device of claim 24, the computer-readable
medium further comprising instructions that cause the processors
to: modify the task list to respectively add, delete or modify the
content item corresponding to the user-directed addition, deletion
or modification.
26. The content playback device of claim 25, wherein the
instructions for modifying the task list further comprise
instructions that cause the processors to: alter status information
regarding work remaining for completion of the synchronization; and
continue the synchronization until required synchronization tasks
from the task list are completed.
27. The content playback device of claim 21, wherein the
instructions for detecting a user-directed addition, deletion or
modification of a content item cause the processor to: detect
multiple user-directed additions, deletions or modifications of
multiple content items in the first or the second plurality of
content items during the synchronization.
28. The content playback device of claim 27, wherein the
instructions for detecting multiple user-directed additions,
deletions or modifications of multiple content items cause the
processor to: detect multiple drag-and-drop operations
corresponding to one or more of the first plurality of content
items and the second plurality of content items.
29. The content playback device of claim 27, wherein the
instructions for detecting multiple user-directed additions,
deletions or modifications of multiple content items cause the
processors to: add multiple tasks to the task list of the
synchronization without commencing a new synchronization process,
wherein each of the added multiple tasks corresponds to a
respective one of the multiple user-directed additions, deletions
and modifications.
30. The content playback device of claim 21, wherein the
instructions for synchronizing the first plurality of content items
and the second plurality of content items cause the processors to:
prioritize processing by initiating dependent tasks.
31. A method comprising: synchronizing, by a processor, a first
plurality of content items organized into at least a first
container and a second plurality of content items organized into at
least a second container based on an internal work flow; detecting,
by the processor, at least one change in at least one of the first
container and the second container during the synchronization;
responsive to the detection, adding, by the processor, a task to
the internal work flow; and responsive to the addition of the task,
altering, by the processor, status information regarding work
remaining for completion of the synchronization.
32. The method of claim 31, further comprising: continuing, by the
processor, the synchronization until the internal work flow is
completed.
33. The method of claim 31, wherein the synchronizing based on the
internal work flow further comprises: transferring, updating and
deleting, by the processor, files to or from one of the first
container and the second container.
34. The method of claim 31, further comprising: dynamically
creating and maintaining, by the processor, the internal work flow
such that new tasks can be added thereto; and receiving, by the
processor from a producer monitoring a media library associated
with the first and second containers, the new tasks for adding to
the internal work flow.
35. The method of claim 31, wherein synchronizing the first
plurality of content items and the second plurality of content
items further comprises: reviewing the new tasks added to the
internal work flow; identifying a synchronization action capable of
being immediately performed such that none of the new tasks pending
in the internal work flow are prerequisite for the performance of
the synchronization action; and performing the synchronization
action.
36. The method of claim 35, wherein synchronizing the first
plurality of content items and the second plurality of content
items further comprises: moving a pointer to a next task in the
internal work flow.
37. A content management device comprising: one or more processors;
and a computer-readable medium storing instructions which when
executed by the processors cause the processors to: execute a
synchronization process based on a task list, the synchronization
process synchronizes a first plurality of content items organized
into at least a first container and a second plurality of content
items organized into at least a second container; detect at least
one change occurring in at least one of the first container and the
second container during the synchronization process; responsive to
the detection, add a task to the task list; and responsive to the
addition of the task, alter status information regarding work
remaining for completion of the synchronization process.
38. The content management device of claim 37 wherein the first
plurality of content items are stored on the computer-readable
medium.
39. The content management device of claim 37 wherein the
instructions for detecting at least one change cause the processor
to: detect multiple changes executed via multiple drag-and-drop
processes; and add multiple tasks to the task list of the
synchronization process without commencing a new synchronization
process, wherein each of the multiple tasks corresponds to a
respective one of the multiple changes.
40. The content management device of claim 39, wherein the
instructions for executing the synchronization process cause the
processor to: review tasks added to the task list; determine when a
synchronization action is capable of being immediately performed
with no prerequisite tasks pending in the task list; performing the
synchronization action; and moving a pointer to a next task in the
task list.
Description
STATEMENT OF RELATED APPLICATIONS
[0001] This application is a continuation of U.S. application Ser.
No. 14/468,142, field Aug. 25, 2014, entitled, "ARRANGEMENT FOR
SYNCHRONIZING MEDIA FILES WITH PORTABLE DEVICES" which is a
continuation of U.S. application Ser. No. 12/031,708, filed Feb.
15, 2008, now U.S. Pat. No. 8,818,941 issued Aug. 26, 2014,
entitled "ARRANGEMENT FOR SYNCHRONIZING MEDIA FILES WITH PORTABLE
DEVICES" which claims the benefit of U.S. Provisional Patent
Application Ser. No. 60/987,079, filed Nov. 11, 2007, entitled
"Arrangement For Synchronizing Media Files With Portable Devices,"
which are both incorporated herein by reference in their
entirety.
BACKGROUND
[0002] Current systems and methods that perform synchronization of
content items between computers and portable storage or playback
devices have certain disadvantages. For example, one difficulty is
the length of the synchronization procedure. Synchronization
procedures may be delayed, e.g., by bandwidth limitations for the
input/output process as determined by the USB or other connection
protocol. A similar limitation pertains to the processor speed. For
example, if a file requires conversion before being transferred
from a computer to a portable player, the conversion slows and/or
delays the synchronization process considerably. A related
limitation concerns when a file requires download to a local
personal computer prior to synchronization on a device, which is
often the case with digital music listed in a local catalog but
actually stored on an internet web store for download on-demand.
The download requires completion before the file can be
transferred.
[0003] Another type of limitation is seen when a user's media
content library exceeds the storage capacity of the portable
player. Current systems for choosing which items to synchronize,
and which to avoid, including smart playlists (i.e., rule-based
selection mechanisms like "All songs in my library where genre does
not equal `Christmas`"), are generally complicated and confusing to
many users.
[0004] A further type of limitation relates to the cumbersome
nature of current synchronization procedures, i.e., a user must
indicate or build a list of desired changes, e.g., items to
synchronize, and then must start the procedure. As such procedures
only commence upon user command, synchronization procedures are
limited to occurring only at user-specified times or at the time of
initial device connection. Some systems have allowed for a degree
of spontaneous synchronization--synchronization may begin for some
content types as soon as new content requiring synchronization is
detected. In these systems, however, any currently-running
synchronization must be completed or aborted before initiating a
new synchronization, resulting in a less-than-optimum method.
[0005] Yet another type of limitation relates to the
synchronization process itself: users generally need to have
content items to be synchronized stored on their computer in some
local location. Thus, content items generally occupy valuable
storage space on a user system.
SUMMARY
[0006] The arrangement improves the efficiency of the
synchronization process. The same ensures that synchronizations of
large quantities of content can be completed with a minimum of
delay. This is accomplished in various ways. One way is to
prioritize the various tasks that are to be performed prior to
synchronization. Another way is to initiate dependent tasks. Yet
another way is to allow other content to synchronize in the
meantime, increasing the efficiency of the limited transmission
bandwidth.
[0007] In another example, a method is provided which allows a user
to select content items for synchronization in simple and intuitive
ways, using natural organizational units of given types of media,
here termed "containers".
[0008] In another example, a method is provided which performs
automatic or "live" synchronization, in which a user's library is
continually monitored for changes to the set of content the user
has indicated should be synchronized, e.g., containers.
Synchronization with the portable device then occurs immediately,
and continuously, until the synchronization engine determines that
there are no items left to be synchronized. If a synchronization is
already in-process, any new synchronization tasks may be added to,
or removed from, the currently-synchronizing work flow, obviating
the need for a separate synchronization process to commence.
[0009] In another example, a method is provided that allows content
to be placed on a portable player without the intermediate step of
having to place content (and occupy storage space within) a user
media content library, such as on a user's personal computer. For
example, using this arrangement, a user may place a CD of music
onto a portable player without having to store the "ripped" music
on the user's computer, which saves memory or hard disk space.
[0010] This Summary is provided to introduce a selection of
concepts in a simplified form. The concepts are further described
in the Detailed Description section. Elements or steps other than
those described in this Summary are possible, and no element or
step is necessarily required. This Summary is not intended to
identify key features or essential features of the claimed subject
matter, nor is it intended for use as an aid in determining the
scope of the claimed subject matter. The claimed subject matter is
not limited to implementations that solve any or all disadvantages
noted in any part of this disclosure.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] FIG. 1 illustrates a simplified functional block diagram of
an exemplary arrangement in which embodiments of the method may be
implemented, including a synchronization engine.
[0012] FIG. 2 illustrates a simplified functional block diagram of
an exemplary communication environment in which the methods
described herein may be implemented or used.
[0013] FIG. 3 is a flowchart illustrating certain aspects of a
synchronization method.
[0014] FIG. 4 is a flowchart illustrating more detailed aspects of
a step within the synchronization method of FIG. 3.
[0015] FIG. 5 illustrates an exemplary user interface on a content
management device of a media library by which a user may take
advantage of the synchronization arrangement.
[0016] FIG. 6 illustrates an exemplary user interface on a content
management device representing a content playback device by which a
user may take advantage of the synchronization arrangement.
[0017] FIGS. 7(A) and 7(B) are flowcharts illustrating more
detailed aspects of a step within the synchronization method of
FIG. 3.
[0018] FIGS. 8(A) and 8(B1)-(B5) and 8(C1)-(C5) illustrate a series
of time-sequenced block diagrams showing the status of the
arrangement after sequential steps are performed.
[0019] FIG. 9 is a flowchart illustrating certain aspects of a
synchronization method performed by the arrangement.
[0020] FIG. 10 shows an exemplary external drive.
[0021] FIG. 11 is a simplified functional block diagram of an
exemplary configuration of an operating environment in which the
synchronization arrangement may be implemented or used.
DETAILED DESCRIPTION
[0022] The following definitions are used in this description.
[0023] "Content items" (elements 120, 120', and 120'' of FIG. 2),
"items of content", or just "content" are files corresponding to
music, movies, television shows, pictures, video clips, etc. The
terms represent any commercial or non-commercial stored digital
content. Examples include but are not limited to digital media
content (such as audio files, video files, image files, multimedia
files, playlists and the like). Content items may also include
podcasts, which are generally episodic content made up of
individual content files, plus an RSS-standard XML file that
defines the series and the context, order, and description of the
content of the related episodes. Content items may exist in any
known or later developed format or combination thereof, and may be
protected by one or more enforceable intellectual property rights
of one or more third parties, such as copyrights, patent rights,
trademark rights, or trade secret rights.
[0024] A "content playback device" (element 200 of FIG. 1) is any
device that can play content items. Some ability to manage the
content items thereon is usually accorded, such as the ability to
delete a content item or to add to or modify a playlist. However,
in many cases, such functionality is minimal as users prefer to
manage their content on a device where the content items may be
more easily visualized, such as a "content management device"
described below. An exemplary content playback device is a portable
music or media player.
[0025] A "content management device" (element 100 of FIG. 1) is any
device whose primary function is to control and manage content
items. A content management device may also play back content
items. An exemplary content management device is a personal
computer. A content management device may also be, e.g., a mobile
phone, on which content items may be downloaded and played back or
synchronized to another device.
[0026] "Synchronization" (alternatively elements 600 or 700 of FIG.
3), occurring via a synchronization link (such as link 150 of FIG.
1), refers to the act of making two sets of content items
correspond to each other, one set of content items on each of two
different devices, whether content management devices or content
playback devices. The two sets need not be identical; rather, the
correspondence is generally to add or delete content items on both,
or to manage content items on both. In many cases, content is
managed on a content management device and the managed content is
periodically synchronized with a content playback device that the
user carries as part of the user's daily routine. In many cases,
content management devices can store much more than content
playback devices, and thus it is a subset of content items on a
content management device that is synchronized with a content
playback device. Content management devices may also synchronize
with content management devices--this may occur, e.g., if a user
synchronizes content downloaded from an online service to a mobile
phone, and then synchronizes the mobile phone to a portable media
player. Synchronization may be partial; that is, only a portion of
the content on one device may be synchronized to another device.
This may occur, e.g., when only certain playlists are synchronized.
In the current arrangement, this type of partial synchronization is
performed by the use of containers. The synchronization procedure
may be automatic or manual, though several embodiments of the
arrangement described here employ automatic or live
synchronization. In this sense, "automatic" or "live"
synchronization means a synchronization process that occurs without
specific user initiation of the same. "Automatic" or "live"
synchronization also refers here to one in which, if a
synchronization is in process and the user or another process
causes a new item to require synchronization, then the new item can
be added to the queue of the currently-running synchronization,
i.e., there is no need to finish the currently-running
synchronization process and start a new one in order to accommodate
synchronization of the new item. Synchronization may also occur if
a user has a content library stored online and which is accessed
by, e.g., a web application. In this case, the synchronization may
be directly from the online library (or other non-content
management device site, such as an external drive) to a content
playback device. While the term "synchronization" refers to data
and information flowing in both directions between a content
management device and a content playback device, the term often
relates to simply downloading items from a content management
device to a content playback device.
[0027] "Online service" (e.g., element 310 of FIG. 2) refers to a
repository of content items which is connected to a network and
which may be used to download content items or store chosen content
items. In many cases, the online service is an internet storefront
from which is downloaded music, videos, television shows, podcasts,
video games, or other digital content items.
[0028] A "playlist" is a collection of media files to be played
back in a given order as determined by the user.
[0029] A "container" (elements 102, 102', 104, 104', 106, and 106'
of FIG. 1) refers to a natural organizational unit of a given type
of media, and is one or a group of content items generally defined
by the action of a filter on the media library (element 130 of FIG.
1). For example, for music content items such as songs, pertinent
container types may include albums, artists, and genres. For
podcasts, pertinent container types may include the podcast series
object itself, as the podcast is made up of a series of related by
distinct episodes, similar to a television series. Of course,
variations may be seen, e.g., podcasts produced by a particular
author or originator. For television shows, pertinent container
types may include a season or a series. In many cases, containers
may be defined by use of pre-existing metatags, such as ID3 tags.
In other cases, containers may be defined or customized by users,
e.g., such as is the case with playlists. For photos or videos,
pertinent container types may include date of capture or the folder
in which they are stored. Container definitions may be stored by
the content management device, so that future changes in the user's
collection, such as addition of new content or removal of old
content which matches the selected containers, is automatically
synchronized with (or removed from) the portable player without
further user interaction.
[0030] Finally, a "container" may be "associated" with a content
playback device when the same is the subject of an operation that
transfers, copies, or otherwise causes the content items in the
container to be placed onto the content playback device. This may
be performed by a simple drag-and-drop operation or by any number
of other such similar procedures.
[0031] Turning to the drawings, where like numerals designate like
components or steps, FIG. 1 illustrates an exemplary content
management device 100 connected to a content playback device 200
using a synchronization link 150. The content management device 100
includes a content management application 105, part of which is a
synchronization engine 110. The content management application 105
controls how the content management device 100 interacts, controls,
modifies, and adds and removes content items. The content
management device 100 has stored thereon a set of content items
120, shown in FIG. 1 as content item 1, content item 2, . . . ,
content item I, . . . , up to content item N. The content items 120
are associated with metadata, such as ID3 tags, that in many cases
provide identifying or other bibliographic information about the
content items. The metadata may be stored as part of each content
item's file. The collection of all the content items 120 is
referred to as a media library 130.
[0032] Using the metadata or other such information, one or more
containers 102, 104, 106 (corresponding to containers 1, 2, and 3)
may be defined, created, or generated. The containers 102, 104, 106
may be formed by the action of a filter on a content media library
130, and may be formed automatically or in a custom fashion. The
containers may generally include content items in a "natural"
organization unit. For example, one container may include all songs
by a particular artist, or all songs from an album. Another
container may include all shows from a television series, or all
shows for that series from a given season. Another container may
include all podcasts from a chosen publisher. Another container may
include all songs of a given genre.
[0033] The content management application may automatically create
numerous such containers according to a predefined scheme, and the
scheme may be updated periodically. For example, containers may be
created that correspond to, for music, any and all albums, any and
all artists, and any and all genres represented.
[0034] Custom containers, which may be formed on the basis of user
input, may be created in either a passive or an active sense. In
the former, containers may be formed such as "most played". In the
latter, containers may be formed such as "highest rated". Custom
containers may also incorporate complicated filtering schemes,
e.g., all alternative music of the 1980s from British bands.
[0035] FIG. 1 also shows a synchronization link 150. The
synchronization link 150 may be wired, such as a USB cable, or
wireless, such as an IR link, Bluetooth, or 802.11 wifi. Any other
wired or wireless scheme, current or later-developed, may also be
employed.
[0036] FIG. 1 also shows an exemplary content playback device. The
content playback device 200 includes a content playback application
205, which controls and management the content items 120' as well
as their modification and playback. The content playback
application 205 typically is occupied with controlling playback,
but some modification capabilities may also be provided and
performed, such as an ability to add an item to a playlist, alter
its rating, delete the item, and so on. The content items 120' may
be the same as content items 120, or may be a subset thereof.
Generally, items 120 that are organized into containers 102, 104,
and 106 and for which the containers have been involved in a
drag-and-drop operation onto the content playback device 200,
described below, are also present on the content playback device
200 as items 120'. The content items 120' may similarly be
organized into containers 102', 104', and 106', and may be played
back according to their placement in those containers, or may be
played back in any other way, such as using playlists. The
collection of all the content items 120' is referred to as a media
library 130'. The user controls operation of the content playback
device 200 by manipulation of items on a screen 207 having a user
interface.
[0037] FIG. 2 illustrates another view of the arrangement of FIG.
1, emphasizing the communications environment. Again, a content
management device 100, here shown as a laptop, is connected via the
synchronization link 150 to a content playback device, here shown
as a portable media player. The content items 120 and 120' are
shown on each, respectively. The content management device 100
includes an external drive 125. The external drive 125 may be,
e.g., an internal or external hard drive or CD/DVD-ROM drive. The
external drive 125 may be a partition on the hard drive within the
laptop or even a different folder, and may even be stored content
accessible by a wired or wireless network. In general, the external
drive 125 is separate from a main media content library.
[0038] The content management device 100 may be connected to a
network 300 via a wired link 114 or a wireless link 108. The
content playback device 200 may also be connected to the network
300 via a link; a wireless link 112 is shown, although a wired link
is also possible (not shown). An exemplary online service 310 is
shown within the network, the same generally includes a set of
content items 120'', which the user may purchase and download
either immediately or perform a download-on-demand later, at a time
of the user's convenience.
[0039] FIG. 3 is a flowchart illustrating certain exemplary
methods. Details of these methods are described in the following
figures.
[0040] First, an initial optional step is shown of creating a media
library 130 (step 400). In many cases, a media library will already
have been created.
[0041] A next step is to create containers (step 450). As noted
above, containers may be generated in a number of ways, such as by
the action of a filter on the media library 130. In more detail, as
shown in FIG. 4, containers may be created (step 450) via analysis
of metadata and automatic creation of containers (step 452), via
user customization (step 454), and/or via analysis of user data
(step 456), such as number of times a given content item has been
played. A combination of all of these steps may also be performed.
User history, which may be analyzed using an intelligent network,
e.g., an expert system, may also be used to develop containers that
may be especially pertinent to the user.
[0042] Referring back to FIG. 3, a next step is to select
containers for synchronization (step 500). One way of performing
this step is to "drag-and-drop" the containers onto an icon of the
content playback device 200. In this way, the virtual object (of
the container) is clicked-on and then dragged on top of another
virtual object (the icon of the content playback device). This
action associates the container with the content playback device
200. This association generally continues until a contrary
operation is performed, such as the user dragging-and-dropping the
container off of or away from the content playback device. The
drag-and-drop operation can of course be replaced with any number
of user operations that may serve to associate the container with
the content playback device 200.
[0043] FIG. 5 illustrates a user interface that may be employed to
carry out such steps. A user interface 458 for the media library
130 is shown along with icons for display of music 460, videos 462,
pictures 464, and podcasts 466. In FIG. 5, it is presumed that the
music icon has been selected, although an analogous description may
apply for the other icons. Within the music interface, icons are
shown for display of all artists 470, all albums 472, and all songs
468. Other icons may be provided as desired. For example, album
covers 474 are also displayed, along with a summary of the total
file size and playing time of all songs 482. The individual playing
time for a given song is shown in column 476 adjacent the song
title. Adjacent the playing time column may be a heart or the like
to indicate a favorable rating 477 for the given song. Additional
hearts may be provided to indicate even more favorable ratings, and
any other such rating scheme may also be employed. Finally, column
478 indicates that the song has been synchronized with the content
playback device.
[0044] A content playback device or portable media player icon 480
is displayed in FIG. 5, and it is by dragging icons onto the icon
480 that containers are selected and associated. In particular, the
dragged icon represents metadata, and all content items with that
metadata are then filtered and scheduled for synchronization with
the content playback device. The drag operation creates rules based
on what type of item is dragged. In this way, synchronization rules
are derived without users needing to know anything about them. For
example, if a user drags an artist icon onto icon 480, then an
artist container is created, and all songs by that artist will be
synchronized. If a user drags an album icon onto icon 480, then an
album container is created, and all songs in that album will be
synchronized. If a user drags a heart icon onto icon 480, then a
favorable rating container is created, and all songs with favorable
ratings will be synchronized. Various other containers are
possible. For example, in an interface where genres are displayed,
if a user drags a genre icon onto icon 480, then a genre container
is created, and all songs with that genre will be synchronized.
[0045] By clicking on the content playback device icon, or via an
analogous procedure, the content items on the content playback
device may be displayed. Referring to FIG. 6, a user interface 458'
is displayed that allows the user to view the contents of the media
library 130' of the content playback device. Icons are shown for
display of music 460', videos 462', pictures 464', and podcasts
466'. In FIG. 6, it is presumed that the music icon has been
selected, although an analogous description may apply for the other
icons. Within the music interface, icons are shown for display of
all artists 470', all albums 472', and all songs 468'. As above,
album covers 474' are also displayed, along with a summary of the
total file size and playing time of all songs 482'. The individual
playing time for a given song is shown in column 476' adjacent the
song title. Adjacent the playing time column may be a heart or the
like to indicate a favorable rating 477' for the given song.
Additional hearts may be provided to indicate even more favorable
ratings, and any other such rating scheme may also be employed.
Finally, column 478' indicates that the song has been synchronized
with the content playback device. In some user interfaces, this or
other columns may be hidden, especially as songs on the content
playback device have generally all undergone some level of
synchronization. However, in some cases, where content items are
placed on the content playback device without storage on the
content management device, as described below, then a different
icon (or no icon) may be displayed.
[0046] A number of containers 484-488 are also displayed on the
left-hand-side of the interface of FIG. 6. These containers
represent the containers that the user has associated with the
content playback device 200, such as via a drag-and-drop operation.
In FIG. 6, the container 484 is a genre container for alternative
music, the container 485 is an album container for Album 10, the
container 486 is a playlist container for a Roadtrip Playlist, the
container 487 is an artist container for Artist 1, and the
container 488 is a track container containing all the music items
simply listed and playable by track.
[0047] Following the association operation, a synchronization step
may occur. The arrangement provide several types of synchronization
operations, which may be employed separately or in combination.
[0048] In one type of synchronization operation, a live or
automatic synchronization of containers may occur (step 600).
Referring to FIG. 7(A), in this type of synchronization operation,
synchronization begins without the need for a specific user
initiation, i.e., the user need not press any sort of "BEGIN
SYNCHRONIZATION" button or the like. In this way, synchronization
may occur whenever needed, and thus can efficiently consume
resources whenever available, rather than having to wait for a user
command. Of course, a user initiation is not intended to be
precluded by the arrangement, and the like may be provided as a
user option. In this connection, a "STOP SYNCHRONIZATION" button
may be provided, the same serving to stop all synchronizations, no
matter the method used to accomplish the synchronization, including
the methods described here. This button may be toggled to either
stop or begin synchronizations as desired by the user.
[0049] Live synchronization may be accomplished in at least one of
three ways, which may also occur in various combinations. In one
way, a synchronization operation may simply occur periodically
(step 602). In this way, synchronization occurs every few minutes
or on any other schedule as determined by the content management
device or user. In a second way, a synchronization operation occurs
whenever the content management device 100 detects a change in a
container 102 (step 604). For example, if a content item 120 is
added to a container 102, and the container 102 is associated with
the content playback device 200, then a synchronization operation
may occur as soon as is feasible, e.g., immediately or soon
thereafter, without user initiation. In the same way, if a
drag-and-drop operation is performed on a container, again a
synchronization operation may occur as soon as is feasible.
[0050] In a third way, and referring in addition to FIG. 7(B), a
currently-running synchronization operation may be modified when
the content management device 100 detects a change in a container
102 (step 606). In this example, a synchronization operation is
being performed (step 608), and a modification is made to a
container 102 and detected by the synchronization engine or content
management application (step 610). For example, the user may choose
additional content items 120, drop them on the content playback
device 200, and the synchronization engine 110 modifies an internal
work flow or task list (step 612) to add the new tasks, i.e., add
the new item(s) that require synchronization. In this arrangement
the internal work flow or task list is generated, created and
maintained in a dynamic fashion, such that new tasks can be added
conveniently. In any case, the modification to the internal work
flow or task list may entail altering the status information
regarding how much work is remaining. In any case, the
synchronization process is continued (step 614) until all required
synchronization actions have been completed. It should be noted
that multiple such additions to a synchronization process may
occur, e.g., multiple drag-and-drop operations or multiple
alterations to content items within synchronized containers, and
each change results in the addition of tasks to the task list or
work flow of the currently-running synchronization operation; no
new synchronization operation need be commenced.
[0051] In another type of synchronization operation, and referring
to FIGS. 8(A) and 8(B1)-(B5) and 8(C1)-(C5), synchronization is
performed using prioritized processing and initiation of dependent
tasks (step 700). In particular, the arrangement allows for a
producer/consumer model in the synchronization engine where the
same is responsible for consuming incoming tasks in an, e.g., FIFO
system. Tasks may include transferring, updating, and deleting
files to or from the content playback device. The tasks are
provided by a producer which is, e.g., monitoring the media library
for items that need the above actions performed. The producer may
also monitor the content playback device for the same.
[0052] As tasks are added to a work queue, the synchronization
engine reviews them and determines when an action is capable of
being immediately performed, where "immediately performed" means,
for example, that a transfer can occur without any prerequisite
tasks first being performed on the content item. If it is, the
action is performed and a pointer moves to the next task. If the
action is not capable of being immediately performed, then the
synchronization engine queues a new task of higher priority that is
necessary before the initial action can be performed, i.e., a
prerequisite task. The pointer is reset to, e.g., the beginning of
the queue. Once either of the tasks is performed, the pointer moves
to the next item and repeats the process. If resources are
available to take action on the next task, the next task is
performed; otherwise, it moves on to the next item in the queue. In
this way, increased efficiency is obtained in use of limited I/O
bandwidth and/or CPU capabilities.
[0053] In certain versions of the above arrangement, it is noted
that the entire work queue may be reviewed or re-evaluated to
ensure that the highest priority tasks are performed first, and
that the performance of all the tasks is done in a manner to
minimize the overall synchronization time.
[0054] Referring in particular to the exemplary FIGS. 8(B1) and
8(C1), a synchronization engine 110 includes a transfer module 702
having an associated content item slot 702', a download module 704
having associated content item slots 704', 704'', and 704''', and a
conversion module 706 having an associated content item slot 706'.
The differing numbers of content item slots refer to the differing
number of processes that can be contemporaneously performed. In
this exemplary arrangement, only one content item can be
transferred, from a content management device to a content playback
device, at a time, so only one content item slot is provided. Three
content items can be downloaded at a time, so three content item
slots are provided. Only one content item can be converted at a
time, such as in format or bitrate, so only one content item slot
is provided. It should be noted that the number of slots is
generally variable, and can be determined by the arrangement
on-the-fly, e.g., by analysis of CPU function. If a processor is
running slowly, then less slots may be provided, and vice-versa for
a relatively unoccupied processor.
[0055] FIG. 8(C1) shows a list of the files 711-714 to be
synchronized, as well as a pointer 715 to the first task to be
performed. In FIG. 8(C1), it is noted that the pointer 715 points
to a task that has not yet begun to be performed. Also in these
figures, for clarity while the pointer is pointing at particular
content items, it is understood that the pointer would typically
point to the first of a series of tasks to be performed to, e.g.,
transfer the content items. Having the pointer point to the content
item itself is a shorthand employed for clarity's sake.
[0056] In the example of FIGS. 8(B1) and 8(C1), content item A
needs to be converted to a format compatible with the content
playback device, B and C need to be downloaded from an online
service such as a web store, and D can be transferred immediately.
The files are queued in the order above and as shown in FIG.
8(C1).
[0057] As the synchronization engine 110 reaches content item A
(element 711), the same determines that a conversion is necessary
before the transfer of the item 711 can occur. Consequently a
conversion task is queued ahead of the transfer of the item 711,
and this transfer is marked as dependent on the conversion. In FIG.
8(B2), the item 711 has been moved to a conversion module and
parentheses surround content item A in FIG. 8(C2) to indicate that
the same has a task that requires completion prior to transfer. The
conversion of item 711 can begin immediately, even though only one
item can be converted at a time, as no items are currently being
converted by the conversion module 706.
[0058] The transfer of content item B (item 712) may then begin;
however, the synchronization engine 110 determines that a download
is necessary before the transfer of the item 712 can occur.
Consequently a download task is queued ahead of the transfer of the
item 712, and this transfer is marked as dependent on the
conversion. In FIG. 8(B3), the item 712 has been moved to a
download module and parentheses surround content item B in FIG.
8(C3) to indicate that the same has a task that requires completion
prior to transfer. The download of item 712 can begin immediately,
as three items can be downloaded at a time, and as no items are
currently being downloaded by the download module 704.
[0059] The transfer of content item C (item 713) may then begin;
however, the synchronization engine 110 determines that a download
is necessary before the transfer of the item 713 can occur.
Consequently a download task is queued ahead of the transfer of the
item 713, and this transfer is marked as dependent on the
conversion. In FIG. 8(B4), the item 713 has been moved to a
download module and parentheses surround content item C in FIG.
8(C4) to indicate that the same has a task that requires completion
prior to transfer. The download of item 713 can begin immediately,
as three items can be downloaded at a time, and only one item is
currently being downloaded by the download module 704.
[0060] The transfer of content item D (item 714) may then begin; in
this case, the transfer of the item 714 can begin immediately, as
no items are currently being transferred by the transfer module 702
and the item 714 requires no pre-processing.
[0061] At this step in the sequence four tasks are happening
contemporaneously. When the conversion of content item A, or the
download of content item B or C, is completed, their respective
transfers are re-attempted. It may be found that yet another task
is prerequisite to the transfer, e.g., it may be that content item
B or C has to be converted, in which case another prerequisite task
is queued ahead of the same's transfer.
[0062] If a content item E (not shown) were now introduced to the
queue but required conversion, its conversion would be queued ahead
of its transfer, but since there are no free conversion slots, the
conversion itself would be delayed until a free resource was
available. Similarly, if two more downloads were required, the
first would start immediately while the second would be delayed
until one of the three active downloads completed.
[0063] In alternative arrangements, the availability of resources
(e.g., for conversion, download, etc.) may be self-adjusting based
on past experience, network utilization, etc.
[0064] In another aspect of the method and user interface, as may
be seen by comparing FIGS. 5 and 6, a background image 459 may be
displayed on the interface for the content playback device 200. The
background image 459 may be the same as a background image
displayed on the screen 207 of the content playback device 200,
although the image 459 may be reproduced as more of a watermark, in
order to ensure legibility of the user interface. In particular,
the user may customize the background image seen when navigating
the contents of the content playback device using the device's user
interface. For example, a personal photo may be seen which has been
previously synchronized with the device. When viewing the contents
of the device using the interface of FIG. 6, the same background
image may be seen (though it may be resized or tiled or stretched
as appropriate and desired). By keeping the pictures the same, the
user is provided with a valuable customization. The user is also
provided with a cognitive link that indicates to the user that they
are currently viewing the contents of their device, as opposed to
viewing the media library contents of, e.g., their personal
computer.
[0065] In another aspect of the arrangement, content items 120 may
be synchronized to the content playback device 200 without adding
the content item files to the user's media library 130. In
particular, users may desire to place content items 120 directly on
a content playback device 200 as part of media library 130' but
without occupying space in their main media library 130. For
example, many news items, lectures, podcasts, are only listened to
once, and thus permanent storage is unnecessary and may be
undesirable. Another example may be a data CD full of music files
or the like, which are archived and need not necessarily be stored
on the user's hard drive. Moreover, a data CD full of music files
is not always available in the same way as a hard drive generally
is. This method is further intended to encompass content items
stored in an online store and downloaded on demand directly to a
content playback device. In this way, users may, e.g., listen to an
album prior to downloading the same onto their hard drive.
[0066] In this method, the user may copy content from a
normally-offline location, e.g., external drive 125, directly onto
their content playback device. This allows the content items to be
transferred but to not clutter the user's media library 130. In one
implementation, metadata associated with the transferred files may
still be maintained in the media library 130, allowing other
functionality associated with the synchronization engine to apply
to those content items, e.g., automatic content management such as
ongoing metadata updates if the original files are altered in some
way.
[0067] Referring to FIG. 9, a method is shown to accomplish the
above. First, offline content, such as the external drive 125, is
detected (step 720). Next, either a subset of the detected offline
content may be selected to be placed on the content playback device
(step 722), or the entire contents of the detected offline content
may be selected to be placed on the content playback device (step
724). The particular files desired to be synchronized may be chosen
by review of the files on whichever disk or other source they
reside. Referring to FIG. 10, a menu such as is given for My
Computer may allow the user to navigate to the particular file or
folder and drag-and-drop the same onto the content playback device
icon. This type of operation may be used to indicate that the items
are not to be stored on the content management device. On the other
hand, dragging the items onto a content management device icon (not
shown) or anywhere on the content management device user interface
(see FIG. 5) may indicate that the items are to be added to the
media library 130. In an analogous procedure for adding items to
the content playback device, the content playback device user
interface may include a "GET OFFLINE CONTENT" button that which
selected allows the user to navigate to a file or folder and to
indicate that the same should be added to the content playback
device, bypassing the content management device.
[0068] In any case, and referring back to FIG. 9, the metadata from
the offline content may be optionally stored in the media library
of the content management device (step 726). The same may be stored
in a hidden fashion, so that various actions the user may take are
applied to the offline content on the content playback device,
while not appearing in the content management device user interface
and confusing the user. Finally, the metadata and the content items
themselves are copied, transferred, or otherwise placed onto the
content playback device (step 728).
[0069] Thus, it can be seen that the arrangements described enable
a convenient way to synchronize a content management device with a
content playback device.
[0070] FIG. 10 is a block diagram of an exemplary configuration of
an operating environment 730 (such as a client-side device or
application or a networked server or service) in which all or part
of synchronization engine 110 and/or the methods shown and
discussed in connection with the figures may be implemented or
used. Operating environment 730 is generally indicative of a wide
variety of general-purpose or special-purpose computing
environments, and is not intended to suggest any limitation as to
the scope of use or functionality of the arrangements described
herein.
[0071] As shown, operating environment 730 includes processor 732,
computer-readable media 734, and computer-executable instructions
736. One or more internal buses 740 may be used to carry data,
addresses, control signals, and other information within, to, or
from operating environment 730 or elements thereof.
[0072] Processor 732, which may be a real or a virtual processor,
controls functions of the operating environment by executing
computer-executable instructions 736. The processor may execute
instructions at the assembly, compiled, or machine-level to perform
a particular process.
[0073] Computer-readable media 734 may represent any number and
combination of local or remote devices, in any form, now known or
later developed, capable of recording, storing, or transmitting
computer-readable data, such as the above-noted computer-executable
instructions 736, including user interface functions 738 and
synchronization engine 110, and content items 120. In particular,
the computer-readable media 734 may be, or may include, a
semiconductor memory (such as a read only memory ("ROM"), any type
of programmable ROM ("PROM"), a random access memory ("RAM"), or a
flash memory, for example); a magnetic storage device (such as a
floppy disk drive, a hard disk drive, a magnetic drum, a magnetic
tape, or a magneto-optical disk); an optical storage device (such
as any type of compact disk or digital versatile disk); a bubble
memory; a cache memory; a core memory; a holographic memory; a
memory stick; a paper tape; a punch card; or any combination
thereof. The computer-readable media may also include transmission
media and data associated therewith. Examples of transmission
media/data include, but are not limited to, data embodied in any
form of wireline or wireless transmission, such as packetized or
non-packetized data carried by a modulated carrier signal.
[0074] Computer-executable instructions 736 represent any signal
processing methods or stored instructions. Generally,
computer-executable instructions 736 are implemented as software
components according to well-known practices for component-based
software development, and encoded in computer-readable media.
Computer programs may be combined or distributed in various ways.
Computer-executable instructions 736, however, are not limited to
implementation by any specific embodiments of computer programs,
and in other instances may be implemented by, or executed in,
hardware, software, firmware, or any combination thereof.
[0075] Input interface(s) 742 are any now known or later developed
physical or logical elements that facilitate receipt of input to
operating environment 730.
[0076] Output interface(s) 744 are any now known or later developed
physical or logical elements that facilitate provisioning of output
from operating environment 730.
[0077] Network interface(s) 746 represent one or more physical or
logical elements, such as connectivity devices or
computer-executable instructions, which enable communication
between operating environment 730 and external devices or services,
via one or more protocols or techniques. Such communication may be,
but is not necessarily, client-server type communication or
peer-to-peer communication. Information received at a given network
interface may traverse one or more layers of a communication
protocol stack.
[0078] Specialized hardware 748 represents any hardware or firmware
that implements functions of operating environment 730. Examples of
specialized hardware include encoder/decoders decrypters,
application-specific integrated circuits, clocks, and the like.
[0079] The methods shown and described above may be implemented in
one or more general, multi-purpose, or single-purpose processors.
Unless specifically stated, the methods described herein are not
constrained to a particular order or sequence. In addition, some of
the described methods or elements thereof can occur or be performed
concurrently.
[0080] Functions/components described herein as being computer
programs are not limited to implementation by any specific
embodiments of computer programs. Rather, such functions/components
are processes that convey or transform data, and may generally be
implemented by, or executed in, hardware, software, firmware, or
any combination thereof.
[0081] It will be appreciated that particular configurations of the
operating environment may include fewer, more, or different
components or functions than those described. In addition,
functional components of the operating environment may be
implemented by one or more devices, which are co-located or
remotely located, in a variety of ways.
[0082] Although the subject matter herein has been described in
language specific to structural features and/or methodological
acts, it is also to be understood that the subject matter defined
in the claims is not necessarily limited to the specific features
or acts described above. Rather, the specific features and acts
described above are disclosed as example forms of implementing the
claims.
[0083] It will further be understood that when one element is
indicated as being responsive to another element, the elements may
be directly or indirectly coupled. Connections depicted herein may
be logical or physical in practice to achieve a coupling or
communicative interface between elements. Connections may be
implemented, among other ways, as inter-process communications
among software processes, or inter-machine communications among
networked computers.
[0084] The word "exemplary" is used herein to mean serving as an
example, instance, or illustration. Any implementation or aspect
thereof described herein as "exemplary" is not necessarily to be
constructed as preferred or advantageous over other implementations
or aspects thereof.
[0085] As it is understood that embodiments other than the specific
embodiments described above may be devised without departing from
the spirit and scope of the appended claims, it is intended that
the scope of the subject matter herein will be governed by the
following claims.
* * * * *