IP Library › Granted Patent US 7,216,289
Granted Patent B2
US 7,216,289 · App. 09/809,058 · Granted May 8, 2007

Method and apparatus for synchronizing multiple versions of digital data

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,216,289
App. No.
09/809,058
Granted
May 8, 2007
Kind
B2
Abstract

A method and system for synchronizing multiple versions of multimedia objects is provided. Each multimedia object may be identified by a unique identifier. In addition, a history graph may be generated and maintained for each object, where the history graph includes nodes that store unique identifiers and whose vectors describe the relationship between the multimedia objects. Metadata may be used to describe the transformations of objects.

Claims (114)

1. A method for synchronizing multiple versions of an object, comprising:

receiving a multimedia object having an associated unique identifier and a history comprising a plurality of nodes and a plurality of vectors defining relationships between the plurality of nodes;

assigning a new unique identifier to the multimedia object responsive to the multimedia object being modified;

updating the history of the multimedia object to include a node corresponding to the new unique identifier and a vector corresponding to the relationship between the received multimedia object and the modified multimedia object;

updating metadata associated with the vector, the metadata describing the modification performed to arrive at the multimedia object corresponding to the new unique identifier; and

storing portions of the history with the modified multimedia object, said storing comprising:

determining a threshold time based on a current time measurement;

identifying a first node and a second node in the history, the first node associated with a time before the threshold time and the second node associated with a time after the threshold time;

comparing the time associated with the first node to the threshold time;

comparing the time associated with the second node to the threshold time; and

based on said comparisons, storing the second node with the modified multimedia object, and storing the first node at a location separate from the modified multimedia object.

2. The method according to claim 1 , further comprising:

storing the associated unique identifier, the new unique identifier, the metadata and the history.

3. The method according to claim 2 , further comprising:

tracking the history of the multimedia object via the associated unique identifier, the new unique identifier, the metadata and the history.

4. A computer-readable medium having computer-executable instructions for performing the steps of:

receiving a multimedia object having an associated unique identifier and a history comprising a plurality of nodes and a plurality of vectors defining relationships between the plurality of nodes;

assigning a new unique identifier to the multimedia object responsive to the multimedia object being modified;

updating the history of the multimedia object to include a node corresponding to the new unique identifier and a vector corresponding to the relationship between the received multimedia object and the modified multimedia object;

updating metadata associated with the vector, the metadata describing the modification performed to arrive at the multimedia object corresponding to the new unique identifier; and

storing portions of the history with the modified multimedia object, said storing comprising:

determining a threshold time based on a current time measurement;

identifying a first node and a second node in the history, the first node associated with a time before the threshold time and the second node associated with a time after the threshold time;

comparing the time associated with the first node to the threshold time;

comparing the time associated with the second node to the threshold time; and

based on said comparisons, storing the second node with the modified multimedia object, and storing the first node at a location separate from the modified multimedia object.

5. The computer-readable medium according to claim 4 , having further computer-executable instructions for performing the steps of:

storing the associated unique identifier, the new unique identifier, the metadata and the history.

6. The computer-readable medium according to claim 5 , having further computer-executable instructions for performing the steps of:

tracking the history of the multimedia object via the associated unique identifier, the new unique identifier, the metadata and the history.

7. A method for synchronizing multiple versions of an object, comprising:

assigning a multimedia object a first unique identifier;

providing the multimedia object a history comprising a plurality of nodes and a plurality of vectors defining relationships between the plurality of nodes, the history having a node representing the first unique identifier of the multimedia object;

responsive to the multimedia object being modified, assigning the modified multimedia object a second unique identifier;

updating the history to include a node representing the second unique identifier of the multimedia object and to associate the node representing the first unique identifier to the node representing the second unique identifier; and

storing potions of the history with the modified multimedia object, said storing comprising:

determining a threshold time based on a current time measurement;

identifying a first node and a second node in the history, the first node associated with a time before the threshold time and the second node associated with a time after the threshold time;

comparing the time associated with the first node to the threshold time;

comparing the time associated with the second node to the threshold time; and

based on said comparisons, storing the second node with the modified multimedia object, and storing the first node at a location separate from the modified multimedia object.

8. The method according to claim 7 , further comprising associating metadata with the modified multimedia object.

9. The method according to claim 8 , wherein the metadata describes how the multimedia object differs from the modified multimedia object.

10. The method according to claim 8 , wherein the metadata describes the modification applied to the multimedia object to obtain the modified multimedia object.

11. The method according to claim 7 , further comprising storing the first and second unique identifiers in a database separate from the multimedia object and the modified multimedia object.

12. The method according to claim 7 , further comprising storing the first and second unique identifiers with the multimedia object and the modified multimedia object, respectively.

13. An operating system stored on a computer-readable medium having computer-executable instructions for performing the steps of the method of claim 7 .

14. The method according to claim 7 , wherein updating the history includes creating a vector that describes the relationship between the multimedia object associated with the first unique identifier and the modified multimedia object associated with the second unique identifier.

15. The method according to claim 14 , further comprising associating metadata with the vector, the metadata describing the modification applied to the multimedia object to obtain the modified multimedia object.

16. The method according to claim 7 , further comprising receiving the multimedia object prior to assigning the first unique identifier to the multimedia object.

17. The method according to claim 7 , wherein the multimedia object is an image.

18. The method according to claim 17 , wherein the history represents evolution of the image.

19. The method according to claim 7 , further comprising providing an application program interface for other software to retrieve or store the multimedia object or the modified multimedia object.

20. The method according to claim 19 , wherein the application program interface is configured to receive metadata associated with the multimedia object or the modified multimedia object.

21. The method according to claim 7 , wherein assigning the modified multimedia object a second unique identifier includes generating the second unique identifier by one of hashing and cyclic redundancy checking of data representing the modified multimedia object.

22. The method according to claim 7 , further comprising associating the updated history with the modified multimedia object.

23. The method according to claim 7 , wherein the history of the modified multimedia object is non-linear.

24. The method according to claim 23 , wherein the history of the modified multimedia object indicates that the object is a combination of a plurality of different multimedia objects.

25. The method according to claim 7 , wherein the history of the modified multimedia object comprises a node corresponding to a second multimedia object not related to the modified multimedia object.

26. A method for synchronizing multiple versions of an object, comprising:

assigning a multimedia object a first unique identifier;

providing the multimedia object a history comprising a plurality of nodes and a plurality of vectors defining relationships between the plurality of nodes, the history having a node representing the first unique identifier of the multimedia object;

responsive to the multimedia object being modified, assigning the modified multimedia object a second unique identifier;

updating the history to include a node representing the second unique identifier of the multimedia object and to associate the node representing the first unique identifier to the node representing the second unique identifier; and

transferring the history with the modified multimedia object, wherein transferring the history with the modified multimedia object comprises:

determining a threshold time based on a current time measurement;

identifying a first node and a second node in the history, the first node associated with a time before the threshold time and the second node associated with a time after the threshold time;

comparing the time associated with the first node to the threshold time;

comparing the time associated with the second node to the threshold time; and

transferring the history based on said comparisons, wherein the second node is transferred with the modified multimedia object, and wherein the first node is not transferred with the modified multimedia object.

27. A method for synchronizing multiple versions of an object, comprising:

receiving a multimedia object having an associated unique identifier and a history comprising a plurality of nodes and a plurality of vectors defining relationships between the plurality of nodes;

assigning a new unique identifier to the multimedia object responsive to the multimedia object being modified;

updating the history of the multimedia object to include a node corresponding to the new unique identifier and a vector corresponding to the relationship between the received multimedia object and the modified multimedia object;

updating metadata associated with the vector, the metadata describing the modification performed to arrive at the multimedia object corresponding to the new unique identifier, and

transferring the history with the modified multimedia object, said transferring comprising:

determining a threshold time based on a current time measurement;

identifying a first node and a second node in the history, the first node associated with a time before the threshold time and the second node associated with a time after the threshold time;

comparing the time associated with the first node to the threshold time;

comparing the time associated with the second node to the threshold time; and

transferring the history based on said comparisons, wherein the second node is transferred with the modified multimedia object, and wherein the first node is not transferred with the modified multimedia object.

28. A computer-readable medium having computer-executable instructions for performing the steps of:

receiving a multimedia object having an associated unique identifier and a history comprising a plurality of nodes and a plurality of vectors defining relationships between the plurality of nodes;

assigning a new unique identifier to the multimedia object responsive to the multimedia object being modified;

updating the history of the multimedia object to include a node corresponding to the new unique identifier and a vector corresponding to the relationship between the received multimedia object and the modified multimedia object;

updating metadata associated with the vector, the metadata describing the modification performed to arrive at the multimedia object corresponding to the new unique identifier, and

transferring the history with the modified multimedia object, said transferring comprising:

determining a threshold time based on a current time measurement;

identifying a first node and a second node in the history, the first node associated with a time before the threshold time and the second node associated with a time after the threshold time;

comparing the time associated with the first node to the threshold time;

comparing the time associated with the second node to the threshold time; and

transferring the history based on said comparisons, wherein the second node is transferred with the modified multimedia object, and wherein the first node is not transferred with the modified multimedia object.

29. A computer-readable medium having computer-executable instructions for performing the steps of:

assigning a multimedia object a first unique identifier;

providing the multimedia object a history comprising a plurality of nodes and a plurality of vectors defining relationships between the plurality of nodes, the history having a node representing the first unique identifier of the multimedia object;

responsive to the multimedia object being modified, assigning the modified multimedia object a second unique identifier;

updating the history to include a node representing the second unique identifier of the multimedia object and to associate the node representing the first unique identifier to the node representing the second unique identifier, and

storing portions of the history with the modified multimedia object, said storing comprising:

determining a threshold time based on a current time measurement;

identifying a first node and a second node in the history, the first node associated with a time before the threshold time and the second node associated with a time after the threshold time;

comparing the time associated with the first node to the threshold time;

comparing the time associated with the second node to the threshold time; and

based on said comparisons, storing the second node with the modified multimedia object, and storing the first node at a location separate from the modified multimedia object.

30. A computer-readable medium having computer-executable instructions for performing the steps of:

assigning a multimedia object a first unique identifier;

providing the multimedia object a history comprising a plurality of nodes and a plurality of vectors defining relationships between the plurality of nodes, the history having a node representing the first unique identifier of the multimedia object;

responsive to the multimedia object being modified, assigning the modified multimedia object a second unique identifier;

updating the history to include a node representing the second unique identifier of the multimedia object and to associate the node representing the first unique identifier to the node representing the second unique identifier, and

transferring the history with the modified multimedia object, said transferring comprising:

determining a threshold time based on a current time measurement;

identifying a first node and a second node in the history, the first node associated with a time before the threshold time and the second node associated with a time after the threshold time;

comparing the time associated with the first node to the threshold time;

comparing the time associated with the second node to the threshold time; and

transferring the history based on said comparisons, wherein the second node is transferred with the modified multimedia object, and wherein the first node is not transferred with the modified multimedia object.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2001
From: KAGLE, JONATHAN C.; ODINAK, GILAD
To: MICROSOFT CORPORATION
Reel/Frame 011764/0126 →
Continuity (1)
Related Publication 20020133515A1 · Sep 19, 2002