naiveproxy/media/mojo/interfaces/audio_data_pipe.mojom
2018-08-11 05:35:24 +00:00

29 lines
1.3 KiB
Plaintext

// 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;
// Used by audio streams for realtime-ish data transfer. Used for both input
// and output 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 AudioDataPipe {
handle<shared_buffer> shared_memory;
handle socket;
};