IP Library Granted Patent US 7,248,740
Granted Patent B2
US 7,248,740 · App. 10/418,735 · Granted Jul 24, 2007

Methods and systems for preventing start code emulation at locations that include non-byte aligned and/or bit-shifted positions

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,248,740
App. No.
10/418,735
Granted
Jul 24, 2007
Kind
B2
Abstract

Methods and systems provide approaches to start code emulation prevention at a granularity higher than the bit level. In various embodiments, start code emulation prevention can occur at locations other than data boundaries such as byte boundaries and the like. These embodiments can be used in connection with systems that do not always preserve data alignment boundaries in the data that is processed. In some systems, the described techniques can provide a basis from which decoder systems can recover in the event that data boundaries are lost.

Claims (65)

1. A method comprising:

receiving encoded data comprising at least one start code in a data stream;

recovering byte alignment based on location of a start code at a byte boundary in the received data, wherein the encoded data results from an encoder using a characteristic pattern of plural bytes as a search pattern for conducting start code emulation prevention data insertion on the encoded data to prevent start code emulation at every bit-shifted position relative to one or more byte-aligned locations;

searching, at the one or more byte-aligned locations in the received data, for a pattern of plural bytes comprising a start code emulation prevention byte for preventing start code emulation;

responsive to finding the pattern of plural bytes comprising the start code emulation prevention byte in the received data, removing the start code emulation prevention byte from the received data.

2. The method of claim 1 , wherein the encoded data comprises video data.

3. The method of claim 1 , wherein the encoded data comprises audio data.

4. The method of claim 1 , wherein the encoded data comprises audio/video data.

5. One or more computer-readable media embodying instructions which, when executed by one or more processors, cause the one or more processors to implement the method of claim 1 .

6. The method of claim 1 wherein the characteristic pattern has plural zero-value bytes and no non-zero value bytes.

7. The method of claim 1 wherein the pattern of plural bytes comprising the start code emulation prevention byte is equal to a replacement pattern used by the cacoder during the start code emulation prevention data insertion.

8. The method of claim 1 wherein the pattern of plural bytes comprising the start code emulation prevention byte comprises:

at least two bytes each equal to zero; and

the start code emulation prevention byte.

9. The method of claim 1 wherein the start code emulation prevention byte is equal to 0x03.

10. The method of claim 1 wherein the start code comprises a start code prefix.

11. The method of claim 10 wherein the start code prefix comprises a string of plural consecutive 0s.

12. The method of claim 10 wherein the start code prefix comprises a string of plural consecutive 0s followed immediately by a 1.

13. The method of claim 1 wherein the location of the start code is indcated by a string of 31 consecutive 0s followed immediately by a 1.

14. The method of claim 1 wherein the characteristic pattern has three zero-value bytes.

15. One or more computer-readable media having stored thereon computer-executable instructions for causing one or more computers to perform a method comprising:

receiving encoded data comprising at least one start code in a data stream;

recovering byte alignment based on location of a start code at a byte boundary in the received data, wherein the encoded data results from an encoder using a characteristic pattern of plural bytes as a search pattern for conducting start code emulation prevemtion data insertion on the encoded data to prevent start code emulation at every bit-shifted position relative to one or more byte-aligned locations;

searching, at the one or more byte-aligned locations in the received data, for a pattern of plural bytes comprising a start code emulation prevention byte for preventing start code emulation; and

if the pattern of plural bytes comprising the start code emulation prevention byte is found in the received data, removing the start code emulation prevehtion byte from the received data.

16. The computer-readable media of claim 15 wherein the encoded data comprises video data.

17. The computer-readable media of claim 15 wherein the characteristic pattern has plural zero-value bytes and no non-zero value bytes.

18. The computer-readable media of claim 15 wherein the pattern of plural bytes comprising the start code emulation prevention byte is equal to a replacement pattern used by the encoder during the start code emulation prevention data insertion.

19. The computer-readable media of claim 15 wherein the pattern of plural bytes comprising the start code efmuiation prevention byte comprises:

at least two bytes each equal to zero; and

the start code emulation prevention byte.

20. The computer-readable media of any of claim 15 wherein the start code emulation prevention byte is equal to 0x03.

21. The computer-readable media of claim 15 wherein the start code comprises a start code prefix.

22. The computer-readable media of claim 21 wherein the start code prefix comprises a string of plural consecutive 0s.

23. The computer-readable media of claim 21 wherein the start code prefix comprises a suing of plural consecutive 0s followed immediately by a 1.

24. The computer-readable media of claim 15 wherein the location of the start code is indicated by a string of 31 consecutive 0s followed immediately by a 1.

25. The computer-readable media of claim 15 wherein the characteristic pattern has three zero-value bytes.

26. A method comprising:

searching for one or more search patterns in data being encoded, each of the one or more search patterns including plural bytes; and

if one of the one or more search patterns is found in the data being encoded, replacing the found pattern with a replacement pattern in an encoded data stream, the replacement pattern comprising data in the found pattern along wit an emulation prevention byte for preventing start code emulation;

wherein a characteristic pattern of plural bytes is used as one of the one or more search patterns for conducting start code emulation prevention data insertion on the data being encoded to prevent start code emulation at every bit-shified position relative to one or mom byte-aligned locations, thereby facilitating recovery of byte alignment at a decoder based on location of a start code at a byte boundary.

27. The method of claim 26 wherein the encoded data comprises video data.

28. The method of claim 26 wherein the characteristic pattern has plural zero-value bytes and no non-zero value bytes.

29. The method of claim 26 wherein each of the one or more search patterns comprises at least three bytes.

30. The method of claim 29 wherein the at least three bytes comprise:

at least two bytes each equal to zero; and

a byte in which each of the byte's six most-significant bits is 0.

31. The method of claim 26 wherein the emulation prevention byte is equal to 0x03.

32. The method of claim 26 wherein the characteristic pattern of plural bytes comprises three bytes each equal to zero.

33. The method of claim 26 wherein the start code comprises a start code prefix, and wherein the start code prefix consists of two bytes each equal to 0x00 followed immediately by a byte equal to 0x01.

34. The method of claim 26 wherein the data-boundary-alignment recovery at the decoder comprises searching for a four-byte pattern consisting of a byte equal to zero followed immediately by a three-byte start code prefix at one or more bit-shifted positions relative to a byte boundary.

35. One or more computer-readable media having stored thereon computer-executable instructions for causing one or more computers to perform a method comprising:

searching for one or more search patterns in data being encoded, each of the one or more search patterns including plural bytes; and

if one of the one or more search patterns is found in the data being encoded, replacing the found pattern with a replacement pattern in an encoded data stream, the replacement pattern comprising data in the found pattern along with an emulation prevention byte for preventing start code emulation;

wherein a characteristic pattern of plural bytes is used as one of the one or more search patterns for conducting start code emulation prevention data insertion on the data being encoded to prevent start code emulation at every bit-shifted position relative to one or more byte-aligned locations, thereby facilitating recovery of byte alignment at a decoder based on location of a start code at a byte boundary.

36. The method of claim 35 wherein the encoded data comprises video data.

37. The method of claim 35 wherein the characteristic pattern has plural zero-value bytes and no non-zero value bytes.

38. The method of claim 35 wherein each of the one or more search patterns comprises at least three bytes.

39. The method of claim 38 wherein the at least three bytes comprise:

at least two bytes each equal to zero; and

a byte in which each of the byte's six most-significant bits is 0.

40. The method of claim 35 wherein the emulation prevention byte is equal to 0x03.

41. The method of claim 35 wherein the characteristic pattern of plural bytes comprises three bytes each equal to zero.

42. The method of claim 35 wherein the start code comprises a start code prefix, and wherein the start code prefix consists of two bytes each equal to 0x00 followed immediately by a byte equal to 0x01.

43. The method of claim 35 wherein the data-boundary-alignment recovery at the decoder comprises searching for a four-byte pattern consisting of a byte equal to zero followed immediately by a three-byte start code prefix at one or more bit-shifted positions relative to a byte boundary.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2003
From: SULLIVAN, GARY J.
To: MICROSOFT CORPORATION
Reel/Frame 014320/0389 →