The present invention is described in detail below with reference to the attached drawing figures, wherein:
The subject matter described herein is presented with specificity to meet statutory requirements. However, the description herein is not intended to limit the scope of this patent. Rather, it is contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Moreover, although the terms “step” and/or “block” may be used herein to connote different elements of methods employed, the terms should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described.
In general, the present invention relates to topic-centric sharing of media objects over a network. Media objects can be categorized as any form of electronic media stored in digital code (e.g., binary, hexadecimal, etc.). For example, media objects include, without limitation, digital photographs, digital audio files, digital video, digital television, etc. Embodiments should not be limited, however, to any particular type of media object, as numerous types are evident to one skilled in the art. Furthermore, while media objects are described throughout this description in the plural form, media objects, as used herein, also contemplate embodiments with a single media object (e.g, one digital photograph).
As previously stated, the media-sharing experience suffers without access to other users' media. Embodiments presented herein are directed to sharing media objects in a topic-centric fashion. Topic-centric-media sharing refers to sharing sets of media objects related to the same topic with known or unknown users. A topic can be any location, event, subject, or the like. Examples of topics include, without limitation, a wedding, rock concert, birthday, city, war, or the like. Examples of topics include events such as the lakes in America, city landmarks, the Statue of Liberty, the Grand Canyon, pets, mountaineering, or the like. The same topic, as referred to herein, should not necessarily be construed to imply an exact time, place, happening, or the like. Rather, the same topic refers to an occasion, occurrence, event, happening, or the like in which media objects are captured. For example, photographs depicting the ceremony and reception of a wedding illustrate the same topic (i.e., the wedding). Videos of opening and closing acts at a concert would also stem from the same topic.
Having briefly described a general overview of the embodiments described herein, an exemplary operating environment is described below.
Referring initially to
The invention may be described in the general context of computer code or machine-useable instructions, including computer-executable instructions such as program modules, being executed by a computer or other machine, such as a personal digital assistant (“PDA”) or other handheld device. Generally, program modules including routines, programs, objects, components, data structures, etc., refer to code that perform particular tasks or implement particular abstract data types. The invention may be practiced in a variety of system configurations, including hand-held devices, consumer electronics, general-purpose computers, more specialty computing devices, etc. The invention may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network.
With reference to
Computing device 100 typically includes a variety of computer-readable media. By way of example, and not limitation, computer-readable media may comprise Random Access Memory (RAM); Read Only Memory (ROM); Electronically Erasable Programmable Read Only Memory (EEPROM); flash memory or other memory technologies; CDROM, digital versatile disks (DVD) or other optical or holographic media; magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, carrier wave or any other medium that can be used to encode desired information and be accessed by computing device 100.
Memory 112 includes computer-storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, nonremovable, or a combination thereof. Exemplary hardware devices include solid-state memory, hard drives, optical-disc drives, etc. Computing device 100 includes one or more processors that read data from various entities such as memory 112 or I/O components 120. Presentation component(s) 116 present data indications to a user or other device. Exemplary presentation components include a display device, speaker, printing component, vibrating component, etc.
I/O ports 118 allow computing device 100 to be logically coupled to other devices including I/O components 120, some of which may be built in. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc.
Referring now to
In an embodiment, system 200 includes a client computing device 202, remote computing device 204, and a server 206 connected via a communications network 208. Both the client computing device 202 and the remote computing device 204 may be any type of computing device, such as device 100 described above with reference to
The client computing device 202 is configured to store a user's media objects. The user may upload media objects to the client computing device 202. The client computing device 202 may be configured to submit queries and requests for sets of media objects. In addition, client computing device 202 may be configured to receive data identifying sets. Furthermore, the client computing device 202 may also be configured to receive media objects pushed over the network 208 from the remote computing device 204 or the server 206. In a further embodiment, client computing device 202 pulls media objects from the remote computing device 204 or the server 206
The remote computing device 204 stores media objects other users are sharing. The remote computing device 204 may be a single computing device or multiple computing devices. In addition, the remote computing device 204 may be configured to receive media objects from the client computing device 202 or the server 206 via network 208. In an embodiment, the remote computing device 204 is further configured to receive and process queries for the media objects stored within its memory.
Various methods for uploading media objects to the client computing device 202 and the remote computing device 204 are well known to one of ordinary skill in the art. By way of example only and not limitation, media objects may be uploaded to the client computing device 202 or remote computing device 204 using a universal serial bus (“USB”) connection, wireless connection, digital subscriber line (“DSL”), Ethernet cable, mobilephone service, or the like. In an embodiment, the user may transfer digital photographs from a camera to the client computing device 202 via a USB cable. In another embodiment, the user transfers a digital video file to the client computing device 202 using a digital mobile network. Embodiments are not limited, however, to any particular method or device for uploading media objects to the client computing device 202 or the remote computing device 204.
The server 206 is configured to receive queries to locate a set of media objects related to the same topic as media objects stored on the client computing device 202. The server 206 may be an application server dedicated to running a topic-centric media sharing application. For example, the server 206 may host a web service for locating sets of media objects of the same topic as media objects on the client computing device 202. In another embodiment, the server 206 is a database server that provides database storage and lookup services. In this capacity, the server 206 may store a myriad of media objects submitted by different users. For example, the server 206 may store sets of media objects and allow the client computing device 202 access when sets are requested. The server 206 may also store pointers to address locations of media objects. Additionally, the server 206 can store parameters (such as a date, time indication, location indication, or other electronic attribute) of media objects. Specifically, a time indication may include a specific time (e.g., 9:00 am, 21:45 CST, etc.) or a quantity of time (e.g, five minutes, thirty seconds, etc.). A location indication may include any specific geographic location (e.g., a park, city, reception hall, etc.) or relative geographic location (e.g., fifty feet, one mile, etc.). Parameters may also include ranges of information. A set may include a range of specific or quantified times associated with multiple media object. For example, if the set includes three photographs taken at 1:00 am, 1:30 am, and 1:45 am, the set may include a time parameter of 1:00-1:45 am. The aforementioned parameters can be used by the client computing device 202 or the server 206 to search for relevant sets.
Each set may also include parameters identifying all of the media objects within the set. In some embodiments, parameters of the set may be assigned by the computing device storing them or by the service managing them. For example, a web site may be configured to automatically associate a set with any of the parameters shared by the media objects within the set. In an alternative embodiment, the user is prompted to designate the parameters of the set.
In one embodiment, system 200 allows a user to select media objects on the client computing device 202. The client computing device 202 then either searches the remote computing device 204 or submits a query or request to the server 206 or the remote computing device 204 for sets of media objects related to the same topic as the selected media objects. If such a set exists, the user can then associate the selected media objects with the set. If such a set does not exist, the client computing device 202 is configured to create a new set which may be stored on the client computing device 202, on the server 206, or on the remote computing device 204.
The network 208 includes any communications network along with necessary components. The network 208 includes LAN, WAN, peer-to-peer, wireless, digital mobile, DSL, the Internet, and other such networks. Such networks are well known to one skilled in the art.
As further shown in
Share software 210 may be configured to constrain a search for relevant media objects to one or more groups or relationship constraints. For example, the search can be limited to members within a group such as a messenger list, buddy list, or the like. This reduces searching computations by giving more deference to media objects shared by members within the group. Relationship constraints may include a pattern of users frequently shared with, a common location or time media objects are captured, a number of times a user is called on a phone, or other parameter.
Share software 210 may also be configured to associate media objects automatically without any explicit user action. In one embodiment, two media objects are associated with one another upon a determination that they each contain one or more parameters in common. In the same embodiment, for example, share software 210 can be configured to recognize that the two media objects are taken at the same time and location.
Additionally, subscription software 212 may operate on the client computing device 202. In general, subscription software 212 is a set of computer-readable code that, in operation, allows a user to register to receive media objects associated with one more or more sets from the remote computing device 204 or the server 206. In an embodiment, subscription software 212 is embedded within a multimedia-management program stored on the client computing device 202. Alternatively, subscription software 212 may be embedded within an operating system or an application program and provide the functionality to register remote users to receive media objects. In another embodiment, subscription software 212 is directly integrated within the operating system of the client computing device 202. This configuration would allow multiple applications within the client computing device 202 to access subscription software 212.
Subscription software 212 may be configured to constrain a registration for reception of media objects to one or more groups or relationship constraints. For example, the registration can be limited to members within a group such as a messenger list, buddy list, or the like. This allows the user to control the remote users receiving the media objects.
While
In operation, the application 302 performs multiple functions. Media objects stored on the client computing device 202 are presented to the user via a standard graphical user interface, such as the one illustrated in
The application 302 searches for sets by submitting requests or queries to the remote computing device 204 or server 206. Queries may be sent (via the transmission module 306) for processing to the server 206 to determine if a set of media objects of the same topic as the selected media objects exists. Queries may also be sent (via the transmission module 306) to the remote computing device 204 to determine if a set of media objects of the same topic as the selected media objects exists. In addition, the application 302 may submit a request to the remote computing device 204 to determine if a set of media objects relating to the same topic as the selected media objects exists.
If such a set does exist, the set's title and destination are transmitted back to the client computing device 302, wherein the user is notified of the set and given the option to associate the media objects therewith. In embodiments, the set's destination may include an internet protocol (“IP”) address, virtual-memory address, peer-to-peer network address, or other network address designating the memory locations of a located set.
In an embodiment, the application 302 transmits a request or query for sets with parameters of the selected media objects via transmission module 306 through network 208 for comparison on the server 206. Examples of parameters include time stamps, metadata, dates, locations (e.g., as specified by a global positioning system (“GPS”) device), titles, captions, or the like. One skilled in the art is aware of various electronic attributes that can be used as parameters. Accordingly, embodiments are not limited to any particular query parameter.
An issue arises, however, when the application 302 attempts to search everything connected to network 208. This could potentially include the searching of an enormous number of sets of media objects. To restrict the magnitude of searches or queries, the application 302 can be limited to search media objects shared by individuals in a group associated with the user. Examples of such groups include, without limitation, people contained in an address book, web group, buddy-list, or the like.
The association module 304 associates the selected media objects to a set of media objects upon instruction by the user. In an embodiment, the association module 304 uploads (via transmission module 306) copies of the selected media objects to a memory location on server 206 that stores pointers to all media objects within the set. In another embodiment, the association module 304 tags the selected media objects to designate affiliation with the set. It is evident to one skilled in the art that various tags exist for tagging the selected media objects. For example, the association module 304 may use tags provided by an operating system. Embodiments are not limited, however, to any specific tag, tagging method, or operating system.
The transmission module 306 is configured to transmit media objects as well as tags and pointers to the media objects. Additionally, the transmission module 206 may also transmit queries for sets of media objects. In one embodiment, the transmission module 306 transmits the selected media objects to a remote storage module where the set is located.
In operation, the set-locator module 308 performs multiple functions. In one embodiment, the set-locator module 308 searches for sets with parameters similar to the parameters of the media objects selected by the user. Searches may be conducted by submitting a query to the remote computing device 204 or the server 206. In one embodiment, the client computing device submits the query to the remote computing device via a peer-to-peer network. Other methods of submitting the request over a network—such as those delineated herein—are also possible.
The registration module 310 is configured to register the user to receive the media objects associated with sets located by the set-locator module 308. In one embodiment, registration occurs without any input from the user. In another embodiment, the user is prompted whether to receive media objects associated with the set. If the user decides to receive media objects from the set, the registration module 310 registers the user with the set using the registration module 310. The registration module 310 may be a service, application, or other set of computer-readable instructions capable of enabling the user to receive media objects associated with the set. The registration module 310 may include, without limitation, subscription buttons, really simple syndication (“RSS”) feed buttons, extensible markup language (“XML”) feed buttons, or the like. Other registration applications are well known to those skilled in the art.
The registration module 310 may be hosted on the client computing device 202, the remote computing device 204, or the server 206. If on the server 206, the user may have to submit a request from the client computing device 202 to the server 206 to register with a set. The request may include any number of registration parameters, such as user name, password, IP address, proprietary token, or the like. In an embodiment, the server 206 uses the request to authenticate the user before registering him/her to receive a set. If the registration module 310 is hosted on the remote computing device 204, the request may have to be sent across a peer-to-peer network.
Additionally, the registered users may receive newly-associated media objects to the set. In some embodiments, newly-associated media objects may be discovered by polling the remote-computing device 204 or the server 206. Various other methods for transmitting media objects to the user are well known to those skilled in the art. Examples include, without limitation, push, pull, or push-pull methods of transmission.
The presentation module is configured to notify the user of received media objects. The presentation module 312 may include any driver, application, or service for presenting the user with the received media objects. For example, presentation module 312 may include an e-mail provider, ring tone, or the like.
Referring now to
The user must then determine whether to search for sets of media objects related to the topic of the selected media objects. This is indicated at decision block 404. In an embodiment, a designated button embedded in a user interface, such as a share button 606 in
Upon initiation of a search, the application 302 searches for sets of media objects related to the same topic as the selected media objects—as indicated at block 406. In an embodiment, a search is performed by submitting a query to a remote computing device or server for sets of media objects containing parameters similar to the selected media objects. As previously mentioned, parameters of the selected media objects are compared with the parameters of the media objects within a set. In an alternative embodiment, the client computing device receives updates of sets of media objects and searches locally. In still another embodiment, the client computing device searches for an identifier media object associated with the topic. An identifier media object may be any media object identifying a topic. For instance, a bar code designating a topic may be captured on a digital photograph. Instead of searching for parameters, the client computing device could search for media objects associated with the bar code. Embodiments are not limited, however, to any particular search technique or identifier media object.
After the search, at 408, the user is presented with the search's results (including possible matching sets) and prompted to associate the selected media objects with a set. If the user wishes, the selected media objects may be associated with the set, as indicated at block 410. Association may occur by storing the selected media objects in memory (either on the client computing device or the server) designated for the matching set. Also, the selected media objects may be tagged to designate affiliation with the matching set. Moreover, pointers to the media objects may be stored to designate association.
Additionally, at 408, the user may be presented with other options. For example, the user may be presented with the option to create a new set for the selected media objects. When the user initiates such a process, the selected media objects are associated with one another using any of the aforementioned methods. The media objects may be stored either on the client computing device or uploaded to a server. Alternatively, at 408, the user may also be prompted with the option to submit another search for additional sets of shared media objects. Such a search may be conducted using any of the aforementioned methods.
In addition, the user may subscribe to a service that automatically delivers media objects once they have been associated with a set—in other words the user subscribes to a feed of media objects. This service may be managed by the server or the client computing device, and associated media objects may be delivered using a push, pull, push-pull, or similar method. In one embodiment, the user subscribes to the service specifying a desire to receive newly associated media objects of a particular set (e.g., “Jack and Jill's Wedding Reception”).
In another embodiment, the user subscribes to a multiple-feed service that searches various other services for newly-associated media objects—in other words subscribing to a feed of feeds. In this embodiment, the multiple-feed service automatically subscribes users to different sets of media objects that are sharing media objects containing a specific parameter. For example, without limitation, subscription to a multiple-feed service may subscribe a user to a myriad of sets that are sharing media objects about a topic, and automatically deliver newly-associated media objects in the those sets.
Referring now to
In general, method 500 is directed to automatically sharing newly-associated media objects. Newly-associated media objects include media objects that have just been added to a set of media objects. Method 500 begins by retrieving newly-associated media objects, as designated by block 502. Sets of newly-associated media objects may be monitored on the server side. Alternatively, such sets can also be monitored on the client side. Subsequently, a list of users to distribute the newly-associated media objects is retrieved, as illustrated at block 504. Such a list may be extracted from the server or the client computing device.
Once the list of users is retrieved, the newly-associated media objects are transmitted to the users specified in the list, as indicated at block 506. Various methods for transmitting media objects over a network are well known to one skilled in the art. For example, new photographs can instantly be e-mailed to recipient users on the list. Alternatively, the user may pull the newly-associated media objects from a server or remote computing device. Moreover, a service on the client computing device may periodically request newly-associated media objects for given sets.
Any combination of the media objects 602 can be selected by the user. In
Referring now to
Referring now to
A create button 628 initiates the process of creating a new set of related media objects to share. The selected media objects may be tagged and the respective tags may be stored on the client computing device 202 or server 206. Alternatively, the selected media objects may be transmitted (via transmission module 306) to and stored on the server 206 and stored. Other methods of storing newly created sets are well known to one skilled in the art and need not be discussed at length herein.
The present invention has been described in relation to particular embodiments, which are intended in all respects to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill in the art to which the present invention pertains without departing from its scope.
From the foregoing, it will be seen that this invention is one well adapted to attain all the ends and objects set forth above, together with other advantages which are obvious and inherent to the system and method. It will be understood that certain features and subcombinations are of utility and may be employed without reference to other features and subcombinations. This is contemplated by and is within the scope of the claims.