Pipeline architecture for analyzing multiple video streams
First Claim
1. A method of processing video data that represents one or more video streams, the method comprising:
- at a first stage of a multiple stage pipeline, providing a first application programming interface (API) through which one or more first analyzers are allowed to perform a first set of real-time analysis operations on the video data;
based on the first set of real-time analysis operations, filtering the video data to produce filtered video data, wherein the filtered video data contains a subset of the video data; and
at a second stage of the multiple stage pipeline, providing a second API through which one or more second analyzers are allowed to perform a second set of analysis operations on the filtered video data;
wherein the second set of analysis operations are more complex than the first set of analysis operations;
wherein the one or more first analyzers are one or more first analysis applications that are external to the multiple stage pipeline and are plugged into the first stage of the multiple stage pipeline via the first API;
wherein the one or more second analyzers are one or more second analysis applications that are external to the multiple stage pipeline and are plugged into the second stage of the multiple stage pipeline via the second API.
4 Assignments
0 Petitions
Accused Products
Abstract
A pipeline architecture for analyzing multiple streams of video is embodied, in part, in a layer of application program interfaces (APIs) to each stage of processing. Buffer queuing is used between some stages, which helps moderate the load on the CPU(s). Through the layer of APIs, innumerable video analysis applications can access and analyze video data flowing through the pipeline, and can annotate portions of the video data (e.g., frames and groups of frames), based on the analyses performed, with information that describes the frame or group. These annotated frames and groups flow through the pipeline to subsequent stages of processing, at which increasingly complex analyses can be performed. At each stage, portions of the video data that are of little or no interest are removed from the video data. Ultimately, “events” are constructed and stored in a database, from which cross-event and historical analyses may be performed and associations with, and among, events may be made.
24 Citations
54 Claims
-
1. A method of processing video data that represents one or more video streams, the method comprising:
-
at a first stage of a multiple stage pipeline, providing a first application programming interface (API) through which one or more first analyzers are allowed to perform a first set of real-time analysis operations on the video data; based on the first set of real-time analysis operations, filtering the video data to produce filtered video data, wherein the filtered video data contains a subset of the video data; and at a second stage of the multiple stage pipeline, providing a second API through which one or more second analyzers are allowed to perform a second set of analysis operations on the filtered video data; wherein the second set of analysis operations are more complex than the first set of analysis operations; wherein the one or more first analyzers are one or more first analysis applications that are external to the multiple stage pipeline and are plugged into the first stage of the multiple stage pipeline via the first API; wherein the one or more second analyzers are one or more second analysis applications that are external to the multiple stage pipeline and are plugged into the second stage of the multiple stage pipeline via the second API. - View Dependent Claims (2, 3)
-
-
4. A system for processing video data that represents one or more video streams, the system comprising:
-
at a first stage of a multiple stage pipeline, a first application programming interface (API) means for allowing one or more first analyzers to perform a first set of real-time analysis operations on the video data; means for filtering the video data, based on the first set of real-time analysis operations, to produce filtered video data, wherein the filtered video data contains fewer frames than the video data; and at a second stage of the multiple stage pipeline, a second API means for allowing one or more second analyzers to perform a second set of analysis operations on the filtered video data; wherein the second set of analysis operations are more complex than the first set of analysis operations; wherein the one or more first analyzers are one or more first analysis applications that are external to the multiple stage pipeline and are plugged into the first stage of the multiple stage pipeline via the first API; wherein the one or more second analyzers are one or more second analysis applications that are external to the multiple stage pipeline and are plugged into the second stage of the multiple stage pipeline via the second API.
-
-
5. A method of processing video data that represents one or more video streams, the method comprising:
-
receiving the video data at a first stage of processing of a multiple stage pipeline; at the first stage of processing, providing an application programming interface (API) designed to allow, by one or more analysis applications that are external to the multiple stage pipeline and are plugged into the first stage of the multiple stage pipeline via the API; (a) real-time analysis of frames that correspond to each video stream of the one or more video streams, and (b) reduction of the video data by removing a plurality of frames from the video data that, at the first stage, was determined to not contain content of interest; and sending remaining video data to a second stage of processing for further analysis. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44)
-
-
45. A method for analyzing video data that represents one or more video streams, the method comprising computer-implemented steps of:
-
at a first stage of processing in a multiple stage pipeline, reading, by a video analyzer application that is external to the multiple stage pipeline and that is plugged into the first stage of the multiple stage pipeline via an application programming interface (API), video data that represents one or more video streams; analyzing, by the video analyzer application, frame data that corresponds to each of the one or more video streams; and for one or more of the video streams, annotating, by the video analyzer application, at least one corresponding frame with metadata, wherein the metadata includes analytic information about the content of the frame, wherein the analytic information is generated based on analyzing the corresponding frame; and outputting, by the video analyzer application, the metadata to allow the multiple stage pipeline to provide the metadata to a second stage of processing in the multiple stage pipeline for further analysis of the frame by one or more other video analyzer applications that are external to the multiple stage pipeline and that are plugged into the second stage of the multiple stage pipeline. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52, 53)
-
-
54. A method of processing video data that represents one or more video streams, the method comprising:
-
receiving the video data at a particular stage of processing of a multiple stage pipeline; at the particular stage of processing, providing an application programming interface (API) designed to allow, by one or more analysis applications that are external to the multiple stage pipeline and are plugged into the particular stage of the multiple stage pipeline via the API; (a) analysis of a plurality of frames that correspond to each video stream of the one or more video streams, (b) reduction of the video data by removing one or more of the plurality of frames from the video data that, at the particular stage, were determined to not contain content of interest, and (c) annotation of one or more frames, of the plurality of frames, with metadata that includes analytic information about the content of the one or more frames; and sending remaining video data to a subsequent stage of the multiple stage pipeline for further analysis.
-
Specification