Most real-time signal processing applications use stream processing, a memory-efficient technique for handling large amounts of data. Stream processing divides incoming data into frames and fully processes each frame before the next one arrives. Examples of applications that use stream processing include audio enhancement, wireless baseband processing, object tracking, and radar beamforming.
The just-in-time and memory-sensitive nature of stream processing presents special challenges. Streaming algorithms must be efficient and keep up with the rate of data updates. To handle large data sets, the algorithms must also manage memory and state information, store previous data buffers only as needed, and update each buffer and state frame-by-frame.