# US 10,484,698 B2 · Detecting markers in an encoded video signal

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,484,698 B2
- Document ID: US10484698B2
- Status: Granted
- Kind: B2
- Application number: 15/853,191
- Filed: 2017-12-22
- Published: 2018-05-17
- Granted: 2019-11-19
- Earliest claimed: 2015-01-06
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Yongjun Wu; Chih-Lung Lin
- Web page: https://patentgrep.com/patent/US10484698B2

## CPC

- H04N 19/436: using parallelised computational arrangements
- H04N 19/44: Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

A video decoding method is implemented by a computer having multiple parallel processing units. A stream of data elements is received, some of which encode video content. The stream comprises marker sequences, each marker sequence comprising a marker which does not encode video content. A known pattern of data elements occurs in each marker sequence. A respective part of the stream is supplied to each parallel processing unit. Each parallel processing unit processes the respective part of the stream, whereby multiple parts of the stream are processed in parallel, to detect whether any of the multiple parts matches the known pattern of data elements, thereby identifying the markers. The encoded video content is separated from the identified markers. The separated video content is decoded, and the decoded video content outputted on a display.

## Claims

### Claim 1

A computer-implemented method comprising:
determining a type of a data packet in a data stream that includes data packets and marker sequences;
detecting in the data packet one or more occurrences of a known pattern of data elements by, responsive to the type of the data packet indicating that the data packet includes encoded video content, processing in parallel different parts of the data packet with different respective parallel processing units by, for each parallel processing unit:
forming a plurality of subsequences from a respective part of the data packet, each element of the plurality of subsequences being a first value or a second value;
summing, for each subsequence, elements of said each subsequence to form a plurality of sums; and
indicating the one or more occurrences when the plurality of sums indicate one or more saturations, wherein a saturation is identified when a sum exceeds a saturation threshold; and
removing emulation prevention markers following at least some of the one or more occurrences of the known pattern of data elements in the data packet to generate a decodable version of the data packet;
decoding the encoded video content; and
outputting the decoded video content for display.

### Claim 2 (depends on 1)

The method according to claim 1 wherein the data stream includes real-time video communication.

### Claim 3 (depends on 2)

The method according to claim 2 wherein the real-time video communication includes at least one of a video call, screen sharing, or whiteboard session.

### Claim 4 (depends on 1)

The method according to claim 1 further comprising:
identifying dividing markers from the marker sequences;
separating the data packets including encoded video content from the dividing markers;
wherein the encoded video content of the data packets is decoded from the separated data packets.

### Claim 5 (depends on 1)

The method according to claim 1 further comprising determining a start of the data packet by detecting a presence of a first marker sequence in the data stream.

### Claim 6 (depends on 1)

The method according to claim 1 wherein a probability of occurrence of the known pattern of data elements in the data packet is less than the probability of occurrence of the known pattern of data elements in a different data packet that does not include encoded video content.

### Claim 7 (depends on 1)

The method according to claim 1 wherein the first value is selected to cause a saturation when summed with itself a number of times corresponding to a number of data elements in the known pattern and the second value is selected to prevent a saturation when the second value is included in the summing.

### Claim 8 (depends on 1)

The method according to claim 1 wherein the plurality of subsequences are formed by mapping each zero-valued element of the respective part of the data packet to the first value and each non-zero-valued element of the respective part of the data packet to the second value.

### Claim 9 (depends on 1)

The method according to claim 1 wherein each parallel processing unit processes the respective part of the data packet in parallel by executing a same instruction on different data sets.

### Claim 10

A system comprising:
at least one processor; and
one or more computer-readable storage media including instructions stored thereon that, responsive to execution by the at least one processor, cause the system to perform operations including:
determining a type of a data packet in a data stream that includes data packets and marker sequences;
detecting in the data packet one or more occurrences of a known pattern of data elements by, responsive to the type of the data packet indicating that the data packet includes encoded video content, processing in parallel different parts of the data packet with different respective parallel processing units by, for each parallel processing unit:
forming a plurality of subsequences from a respective part of the data packet, each element of the plurality of subsequences being a first value or a second value;
summing, for each subsequence, elements of said each subsequence to form a plurality of sums; and
indicating the one or more occurrences when the plurality of sums indicate one or more saturations, wherein a saturation is identified when a sum exceeds a saturation threshold; and
removing emulation prevention markers following at least some of the one or more occurrences of the known pattern of data elements in the data packet to generate a decodable version of the data packet;
decoding the encoded video content; and
outputting the decoded video content for display.

### Claim 11 (depends on 10)

The system according to claim 10 wherein the data stream includes real-time video communication.

### Claim 12 (depends on 10)

The system according to claim 10 wherein a probability of occurrence of the known pattern of data elements in the data packet is less than the probability of occurrence of the known pattern of data elements in a different data packet that does not include encoded video content.

### Claim 13 (depends on 10)

The system according to claim 10 wherein the first value is selected to cause a saturation when summed with itself a number of times corresponding to a number of data elements in the known pattern and the second value is selected to prevent a saturation when the second value is included in the summing.

### Claim 14 (depends on 10)

The system according to claim 10 wherein the plurality of subsequences are formed by mapping each zero-valued element of the respective part of the data packet to the first value and each non-zero-valued element of the respective part of the data packet to the second value.

### Claim 15

A video decoding device comprising:
an input configured to receive a data stream, the data stream including data packets and marker sequences;
a plurality of parallel processing units; and
a content separator module implemented at least partly in hardware of the video decoding device to:
determine a type of a data packet in a data stream that includes data packets and marker sequences;
detect in the data packet one or more occurrences of a known pattern of data elements by, responsive to the type of the data packet indicating that the data packet includes encoded video content, processing in parallel different parts of the data packet with different respective parallel processing units by, for each parallel processing unit:
forming a plurality of subsequences from a respective part of the data packet, each element of the plurality of subsequences being a first value or a second value;
summing, for each subsequence, elements of said each subsequence to form a plurality of sums; and
indicating the one or more occurrences when the plurality of sums indicate one or more saturations, wherein a saturation is identified when a sum exceeds a saturation threshold; and
remove emulation prevention markers following at least some of the one or more occurrences of the known pattern of data elements in the data packet to generate a decodable version of the data packet;
decode the encoded video content; and
output the decoded video content for display.

### Claim 16 (depends on 15)

The video decoding device according to claim 15 wherein the data stream includes real-time video communication.

### Claim 17 (depends on 15)

The video decoding device according to claim 15 wherein a probability of occurrence of the known pattern of data elements in the data packet is less than the probability of occurrence of the known pattern of data elements in a different data packet that does not include encoded video content.

### Claim 18 (depends on 15)

The video decoding device according to claim 15 wherein the first value is selected to cause a saturation when summed with itself a number of times corresponding to a number of data elements in the known pattern and the second value is selected to prevent a saturation when the second value is included in the summing.

### Claim 19 (depends on 15)

The video decoding device according to claim 15 wherein the plurality of subsequences are formed by mapping each zero-valued element of the respective part of the data packet to the first value and each non-zero-valued element of the respective part of the data packet to the second value.

### Claim 20 (depends on 15)

The video decoding device according to claim 15 wherein the emulation prevention markers are not removed following others of the one or more occurrences of the known pattern of data elements in the data packet.
