IP Library Granted Patent US 8,751,687
Granted Patent B2
US 8,751,687 · App. 12/771,924 · Granted Jun 10, 2014

Efficient encoding of structured data

Inventors: Alexander F. Nagy (Seattle, WA); Ashok Chandrasekaran (Redmond, WA); Kristof Roomp (Mira-sol, ES); Novia Rosalinda Wijaya (Seattle, WA)
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 8,751,687
App. No.
12/771,924
Granted
Jun 10, 2014
Kind
B2
Abstract

This document describes various techniques for efficiently sequencing structured data in a particular order to provide a sequence of data elements suitable for storage or communication. The sequence may contain values representing a number of default-value structured data elements omitted from the sequence and/or a byte length of the sequence.

Claims (34)

1. A device-implemented method comprising:

determining, via a data encoder of a device, a number of consecutive non-default-value structured data elements of a set of default-value structured data and non-default-value structured data elements forming at least a portion of a data structure and having a particular order;

determining a number of consecutive default-value structured data elements of the particular order that precede or follow consecutive non-default-value structured data elements in the particular order;

sequencing, based on the particular order, the consecutive non-default-value structured data elements;

inserting, into the sequence and adjacent to the consecutive non-default-value structured data element that the consecutive default-value data elements precede or follow, a value representing the number of consecutive non-default-value structured data elements and the number of consecutive default-value structured data elements that precede or follow the consecutive non-default-value structured data elements, the consecutive default-value structured data elements not inserted into the sequence; and

transmitting, via a data interface of the device, the sequence to an entity, the entity having access to information about the particular order, the sequence not including the consecutive default-value structured data elements.

2. The device-implemented method as recited in claim 1 , wherein the information about the particular order includes information about only a portion of the particular order.

3. The device-implemented method as recited in claim 1 , wherein the act of inserting the value inserts a bit-interleaved value, the bit interleaved value an interleaving of bits of the value representing the number of consecutive default-value structured data elements and the value representing the number of sequenced consecutive non-default-value structured data elements.

4. The device-implemented method as recited in claim 3 , further comprising interleaving bits of the value representing the number of consecutive default-value structured data elements and bits of the value representing the number of sequenced consecutive non-default-value structured data elements to provide the bit interleaved value.

5. The device-implemented method as recited in claim 1 , further comprising inserting a length value into the sequence, the length value representing a byte length of the sequence transmitted to the entity.

6. The method as recited in claim 1 , wherein the data interface of the device is a network interface or an interface to a storage device.

7. A device-implemented method comprising:

receiving, via a data interface of a device, a sequence of data elements having a particular order and a value, the data elements being non-default-value data elements of the particular order, the value representing a number of consecutive default-value data elements and a number of consecutive non-default-value data elements, the value indicating the number of consecutive default-value data elements that precede or follow the consecutive non-default-value data element in the particular order, the default-value data elements not received with the sequence;

inserting, via a data encoder of the device, default-value data elements into the sequence based on the value representing the number of consecutive default-value data elements and the number of consecutive non-default-value data elements and information about the particular order, the default-value data elements inserted adjacent to the consecutive non-default-value data elements that the consecutive default-value data elements precede or follow; and

structuring the sequence of the consecutive non-default-value data elements and consecutive default-value data elements to provide structured data.

8. The device-implemented method as recited in claim 7 , wherein the sequence of data elements does not include any default-value data elements and the value is located between the consecutive non-default-value data elements and another set of consecutive non-default-value data elements of the sequence of data elements.

9. The device-implemented method as recited in claim 7 , further comprising structuring only a portion of the sequence of data elements to provide structured data.

10. The device-implemented method as recited in claim 7 , wherein the sequence further comprises a length value representing a byte length of the sequence.

11. The device-implemented method as recited in claim 7 , wherein the value is Morton encoded, the Morton-encoded value representing the number of consecutive default-value data elements and the number of consecutive non-default-value data elements.

12. The device-implemented method as recited in claim 7 , wherein the data interface is a network interface or an interface to a storage device.

13. A device-implemented method comprising:

determining a number of non-default-value structured data elements of a data structure, the non-default-value data elements being consecutive data elements of a particular order;

determining a number of consecutive default-value structured data elements of the data structure, the consecutive default-value data elements preceding or following the consecutive non-default-value structured data elements in the particular order;

interleaving bits of a bit-value representing the number of consecutive non-default-value structured data elements and bits of a bit-value representing the number of consecutive default-value structured data elements to provide a bit interleaved value representing the number of consecutive non-default-value structured data elements and the number of consecutive default-value structured data elements;

encoding, using 7-bit encoding, the bit-interleaved value to provide a 7-bit encoded value representing the number of consecutive non-default-value structured data elements and the number of consecutive default-value structured data elements;

serializing the 7-bit encoded value; and

serializing, based on the particular order, the non-default-value structured data elements to respectively precede or follow the 7-bit encoded value representing the number of consecutive non-default-value structured data elements and the number of consecutive default-value structured data elements, the default-value structured data elements not serialized into the serialized data elements.

14. The device-implemented method as recited in claim 13 , further comprising inserting, into the serialized data elements, a length value representing a byte length of the serialized data elements.

15. The device-implemented method as recited in claim 13 , further comprising transmitting the serialized data elements through a network interface.

16. The device-implemented method as recited in claim 13 , further comprising storing the serialized data elements on a computer-readable storage medium.

17. The device-implemented method as recited in claim 13 , further comprising encoding the serialized data elements.

18. The device-implemented method as recited in claim 17 , further comprising decrementing serialized data elements having a default value of zero.

19. The device-implemented method as recited in claim 17 , further comprising encoding, using Zig-Zag encoding, serialized data elements that include signed integers.

20. The device-implemented method as recited in claim 17 , further comprising encoding, using 7-bit encoding, serialized data elements that include unsigned integers.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2010
From: NAGY, ALEXANDER F.; CHANDRASEKARAN, ASHOK; ROOMP, KRISTOF; WIJAYA, NOVIA ROSALINDA
To: MICROSOFT CORPORATION
Reel/Frame 024323/0427 →
Continuity (1)
Related Publication 20110271011A1 · Nov 3, 2011