

This works since there is only ever a single 'virtual' stream. AudiohooksĪs they exist now audiohooks hook themselves into every audio frame that is passing through a channel. Let's take a look at impacted functionality. But what about all the media stuff that exists now? We need to be able to exchange media between two streamsĪll of this needs to be present and existing functionality needs to continue to work as expected.We need to be able to negotiate two streams.We need to be able to send a frame and have it go out a specific stream.We need to be able to know that a frame has come from a specific stream.We need to be able to add, remove, and change a stream (or streams).We need to be able to know the details about the streams.We need to be able to know what streams are present.

So what do we need to be able to do for streams? This means that there is a single very loose stream for each type of media. This pipe also carries control frames and other signaling related operations. Interfaces that need to manipulate media have injected themselves into this single pipe and have to take special care to not manipulate frames they do not need to. The negotiated formats are scoped to the entire channel as a result. Streams can also carry an identifier in the form of a name.Īsterisk currently has no explicit interface for streams and simply has a single pipe that frames are written to and read from. To simplify things streams only carry a single type of media. They can be unidirectional or bidirectional and are comprised of media formats. Streams at their core are a flow of media. Let's start with talking about what streams are.
