# US 10,310,998 B2 · Direct memory access with filtering

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

- Number: US 10,310,998 B2
- Document ID: US10310998B2
- Status: Granted
- Kind: B2
- Application number: 14/788,317
- Filed: 2015-06-30
- Published: 2017-01-05
- Granted: 2019-06-04
- Earliest claimed: 2015-06-30
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Ryan Haraden; Robert Shearer; Matthew Tubbs; Adam Muff; Ashish Gupta
- Web page: https://patentgrep.com/patent/US10310998B2

## CPC

- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06T 1/60: Memory management
- H04N 23/81: for suppressing or minimising disturbance in the image signal generation
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Methods, apparatus, and computer-readable storage media are disclosed for applying filtering operations to data transferred as part of a direct memory access (DMA) operation. In one example of the disclosed technology, a system includes a processor, memory, and a direct memory access (DMA) engine coupled to the memory for reading a set of data from a selected range of read memory addresses for the memory without using the processor. A line buffer coupled to the DMA engine is configured to receive DMA read data and temporarily store a portion, but not all of the data set being read by the DMA engine in a line buffer. A digital filter is configured to apply a filtering operation to a windowed subset of the buffered portion of the data set, producing filtered data that is stored to a selected range of write memory addresses for the memory, without using the processor.

## Claims

### Claim 1

A system, comprising:
memory;
a direct memory access (DMA) engine coupled to the memory, the DMA engine including a DMA read circuit and a DMA write circuit, the DMA read circuit being configured for reading a set of data from a selected range of read memory addresses for the memory;
a filter having a window height and being configured to apply a filtering operation to a window-height subset of a buffered portion of the data set, producing filtered data, the filter being further configured to provide substitute pixels for one or more edge pixels of the set of data prior to the filtering operation;
a line buffer coupled to the DMA engine and configured to receive the read data and to temporarily store a portion but not all of the data set being read by the DMA engine as the window-height subset of the buffered portion of the data set, the line buffer including at least one more row of data than the window height; and
wherein the DMA write circuit stores the filtered data to a selected range of write memory addresses of the memory.

### Claim 2 (depends on 1)

The system of claim 1, further comprising a processor having a plurality of processor registers, and wherein the DMA read circuit is configured to read the data set directly from memory without using the processor registers, and wherein the DMA write circuit is configured to write directly to the memory without using the processor registers.

### Claim 3 (depends on 2)

The system of claim 2, wherein the processor and the DMA engine are coupled to the memory with a multi-drop bus or a plurality of point-to-point busses.

### Claim 4 (depends on 2)

The system of claim 2, further comprising an image sensor configured to detect an image and store image data corresponding to the image in the memory.

### Claim 5 (depends on 1)

The system of claim 1, wherein the filter is a spatial domain filter, the filter being further configured to apply at least one or more of the following filtering operations to the subset of the buffered portion of the data set: a bilateral filter, a joint bilateral filter, a convolution filter, or a finite impulse response filter.

### Claim 6 (depends on 1)

The system of claim 1, wherein the filter is further configured to apply the filtering operation to a 5×5 or a 3×3 pixel subset of the buffered portion of the data set.

### Claim 7 (depends on 1)

The system of claim 1, wherein the filter is further configured to skip filtering for one or more edge pixels of the set of data.

### Claim 8 (depends on 1)

The system of claim 1, wherein the data set comprises two or more tile regions, and wherein the filter is further configured to skip filtering for one or more edge pixels near a boundary of two of the two or more tile regions.

### Claim 9

A method comprising:
with a line buffer, receiving data from a direct memory access (DMA) read circuit coupled to a memory for a selected range of read memory addresses for the memory and temporarily storing a portion but not all of the received data as a window-height subset of the received data;
providing substitute pixels for at least one edge pixel of the window-height subset of data;
filtering the window-height subset with the substitute pixels, producing filtered data; and
storing the filtered data to a range of write memory addresses via a DMA write circuit.

### Claim 10 (depends on 9)

The method of claim 9, wherein the memory is coupled to a processor having a plurality of processor registers, and wherein the DMA read circuit is configured to read the data directly from the memory without using the processor registers, and wherein the DMA write circuit is configured to write directly to the memory without using the processor registers.

### Claim 11 (depends on 9)

The method of claim 9, further comprising using an image sensor to detect an image and store image data corresponding to the image in the memory.

### Claim 12 (depends on 9)

The method of claim 9, wherein the filtering comprises spatial domain filtering, the filtering further comprising applying at least one of the following operations to the window-height subset: a bilateral filter, a joint bilateral filter, a convolution filter, or a finite impulse response filter.

### Claim 13 (depends on 9)

The method of claim 9, wherein the filtering comprises applying a filtering operation to a 5×5 or a 3×3 pixel subset of the window-height subset.

### Claim 14 (depends on 9)

The method of claim 9, wherein the data set comprises two or more tile regions, and wherein the filtering comprises performing skip filtering for one or more edge pixels near a boundary of two of the two or more tile regions.

### Claim 15

An apparatus, comprising:
memory;
a direct memory access (DMA) engine coupled to the memory, the DMA engine including a DMA read circuit and a DMA write circuit, the DMA read circuit being configured to read a set of data from a selected range of read memory addresses for the memory;
a filter having a window height and being configured to apply a filtering operation to a window-height subset of a buffered portion of the data set, producing filtered data, the filter being further configured to copy pixel intensity values from neighboring pixels for one or more missing edge pixels of the set of data prior to the filtering operation;
a line buffer coupled to the DMA engine and configured to receive the read data and to temporarily store a portion but not all of the data set being read by the DMA engine as the window-height subset of the buffered portion of the data set, the line buffer including at least one more row of data than the window height; and
wherein the DMA write circuit stores the filtered data to a selected range of write memory addresses of the memory.

### Claim 16 (depends on 15)

The apparatus of claim 15, further comprising an image sensor configured to detect an image and store image data corresponding to the image in the memory.

### Claim 17 (depends on 15)

The apparatus of claim 15, wherein the filter is a spatial domain filter, the filter being further configured to apply at least one or more of the following filtering operations to the subset of the buffered portion of the data set: a bilateral filter, a joint bilateral filter, a convolution filter, or a finite impulse response filter.

### Claim 18 (depends on 15)

The apparatus of claim 15, wherein the filter is further configured to apply the filtering operation to a 5×5 or a 3×3 pixel subset of the buffered portion of the data set.

### Claim 19 (depends on 15)

The apparatus of claim 15, wherein the data set comprises two or more tile regions, and wherein the filter is further configured to skip filtering for one or more edge pixels near a boundary of two of the two or more tile regions.

### Claim 20 (depends on 15)

The apparatus of claim 15, wherein the filter is further configured to copy the pixel intensity values by combining two or more surrounding pixels.
