IP Library Granted Patent US 12,086,972
Granted Patent B2
US 12,086,972 · App. 17/394,268 · Granted Sep 10, 2024

Optimizing memory reads when computing video quality metrics

Inventors: Deepa Palamadai Sundar (Sunnyvale, CA); Visalakshi Vaduganathan (Fremont, CA); Harikrishna Madadi Reddy (San Jose, CA)
Assignee: META PLATFORMS, INC.
G06T7/0002G06F12/0875G06F12/0897G06F17/17H04N19/103H04N19/117H04N19/147H04N19/176H04N19/182H04N19/36H04N19/40H04N19/523H04N21/44008G06T2207/10016G06T2207/30168
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 12,086,972
App. No.
17/394,268
Granted
Sep 10, 2024
Kind
B2
Abstract

Techniques to optimize memory reads when computing a video quality metric are disclosed. In some embodiments, an application-specific integrated circuit for computing video quality metrics includes a set of caches configured to store neighbor pixel data for edge width searches of pixels comprising a frame of a video being analyzed for a video quality metric and a kernel configured to receive corresponding neighbor pixel data for pixels comprising a current processing block of the frame from a subset of the set of caches and simultaneously perform edge width searches for pixels comprising the current processing block to determine corresponding pixel edge width values used for computing the video quality metric.

Claims (29)

1. A system, comprising:

a set of caches of an application-specific integrated circuit configured to store neighbor pixel data for edge width searches of pixels comprising a frame of a video being analyzed for source video quality, comprising:

a first level cache to store pixel data comprising future neighbors and processing blocks;

a left neighbor second level directional cache to store left neighbors;

a vertical neighbor second level directional cache to store vertical neighbors; and

a right neighbor second level directional cache to store right neighbors; and

a kernel of the application-specific integrated circuit configured to retrieve corresponding neighbor pixel data for pixels comprising a current processing block of the frame from a subset of the set of caches and simultaneously perform, by processing in parallel, edge width searches in a plurality of search directions, using neighbor data from the first level cache and the second level directional caches in each of the plurality of search directions, for pixels comprising the current processing block to determine corresponding pixel edge width values used for computing a blurriness video quality metric based on pixel spread, wherein a filtering stage comprising the kernel is configured to determine the plurality of edge width search directions.

2. The system of claim 1 , wherein the plurality of second level directional caches is configured to at least in part be populated from the first level cache with pixel data comprising at least a subset of a search window of the current processing block.

3. The system of claim 1 , wherein the first level cache comprises a larger size relative to a smaller size of the plurality of second level directional caches.

4. The system of claim 1 , wherein the kernel is configured to receive corresponding neighbor pixel data simultaneously from two or more of the plurality of second level directional caches.

5. The system of claim 1 , wherein the subset comprises one or more of the plurality of second level directional caches.

6. The system of claim 1 , wherein the plurality of search directions comprises one or more diagonal search directions.

7. The system of claim 1 , wherein the set of caches is populated with output from a filtering stage comprising the kernel that is configured to smoothen frame pixel data prior to edge width searches.

8. A method, comprising:

configuring a set of caches of an application-specific integrated circuit to store neighbor pixel data for edge width searches of pixels comprising a frame of a video being analyzed for source video quality, wherein the set of caches comprises:

a first level cache to store pixel data comprising future neighbors and processing blocks;

a left neighbor second level directional cache to store left neighbors;

a vertical neighbor second level directional cache to store vertical neighbors; and

a right neighbor second level directional cache to store right neighbors; and

configuring a kernel of the application-specific integrated circuit to retrieve corresponding neighbor pixel data for pixels comprising a current processing block of the frame from a subset of the set of caches and simultaneously perform, by processing in parallel, edge width searches in a plurality of search directions, using neighbor data from the first level cache and the second level directional caches in each of the plurality of search directions, for pixels comprising the current processing block to determine corresponding pixel edge width values used for computing a blurriness video quality metric based on pixel spread, wherein a filtering stage comprising the kernel is configured to determine the plurality of edge width search directions.

9. The method of claim 8 , wherein the plurality of search directions comprises one or more diagonal search directions.

10. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:

configuring a set of caches of an application-specific integrated circuit to store neighbor pixel data for edge width searches of pixels comprising a frame of a video being analyzed for source video quality, wherein the set of caches comprises:

a first level cache to store pixel data comprising future neighbors and processing blocks;

a left neighbor second level directional cache to store left neighbors;

a vertical neighbor second level directional cache to store vertical neighbors; and

a right neighbor second level directional cache to store right neighbors; and

configuring a kernel of the application-specific integrated circuit to retrieve corresponding neighbor pixel data for pixels comprising a current processing block of the frame from a subset of the set of caches and simultaneously perform, by processing in parallel, edge width searches in a plurality of search directions, using neighbor data from the first level cache and the second level directional caches in each of the plurality of search directions, for pixels comprising the current processing block to determine corresponding pixel edge width values used for computing a blurriness video quality metric based on pixel spread, wherein a filtering stage comprising the kernel is configured to determine the plurality of edge width search directions.

11. The computer program product of claim 10 , wherein the plurality of search directions comprises one or more diagonal search directions.

Assignments (2)
CHANGE OF NAME Recorded Nov 19, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058214/0351 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2021
From: PALAMADAI SUNDAR, DEEPA; VADUGANATHAN, VISALAKSHI; REDDY, HARIKRISHNA MADADI
To: FACEBOOK, INC.
Reel/Frame 057877/0487 →
Continuity (2)
Provisional Application 63061692 · Aug 5, 2020
Related Publication 20220046254A1 · Feb 10, 2022