| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module media.mojom; |
| |
| import "mojo/public/mojom/base/shared_memory.mojom"; |
| |
| // Used by audio streams for realtime-ish data transfer. ReadWriteAudioDataPipe |
| // is used for output streams and ReadOnlyAudioDataPipe is used for input |
| // streams, see AudioDeviceThread, AudioSyncReader, and AudioInputSyncWriter. |
| // |socket| is a base::SyncSocket used for signaling and |shared_memory| is used |
| // for the actual audio data. |
| // |
| // When using a pull model, the code pulling the data writes |n| (an unsigned |
| // 32 bit sequence number) to the socket, and the source from which data is |
| // pulled writes a buffer to |shared_memory| and writes |n| back to signal that |
| // it finished writing. Then the process continues with |n+1|. This model is |
| // used to get data for playout. |
| // |
| // When using a push model, the code pushing data writes a buffer to |
| // |shared_memory| and writes |n| to the socket. When the other side finished |
| // reading the buffer, it writes |n| to the socket to signal that the memory is |
| // safe to write to again. |shared_memory| may have room for several buffers, |
| // in which case the next buffer can be pushed without waiting for the previous |
| // one to be consumed. This model used is to deliver microphone data to a |
| // consumer. |
| struct ReadWriteAudioDataPipe { |
| mojo_base.mojom.UnsafeSharedMemoryRegion shared_memory; |
| handle<platform> socket; |
| }; |
| |
| struct ReadOnlyAudioDataPipe { |
| mojo_base.mojom.ReadOnlySharedMemoryRegion shared_memory; |
| handle<platform> socket; |
| }; |