syntax = "proto3";

package rv.data;

option cc_enable_arenas = true;
option csharp_namespace = "Pro.SerializationInterop.RVProtoData";
option swift_prefix = "RVData_";

import "uuid.proto";

message Audio {
  message SettingsDocument {
    .rv.data.Audio.OutputSetup output_setup = 1;
    .rv.data.Audio.Device monitor_device = 2;
    bool monitor_on_mains = 3;
  }

  message OutputSetup {
    .rv.data.UUID uuid = 1;
    .rv.data.Audio.Device audio_device = 2;
    repeated .rv.data.Audio.LogicalChannel logical_channels = 3;
    double audio_delay = 4;
    double master_level = 5;
    repeated .rv.data.Audio.PhysicalChannel physical_chanels = 6;
  }

  message Device {
    message Format {
      enum Type {
        TYPE_INT = 0;
        TYPE_FLOAT = 1;
      }

      uint32 sample_rate = 1;
      uint32 bit_depth = 2;
      .rv.data.Audio.Device.Format.Type type = 3;
    }

    string name = 1;
    string renderID = 2;
    uint32 input_channel_count = 3;
    uint32 output_channel_count = 4;
    repeated .rv.data.Audio.Device.Format formats = 5;
  }

  message LogicalChannel {
    message OutputChannel {
      uint32 index = 1;
      bool muted = 2;
      bool solo = 3;
      bool test_tone = 4;
    }

    .rv.data.UUID uuid = 1;
    string name = 2;
    uint32 index = 3;
    bool muted = 4;
    repeated .rv.data.Audio.LogicalChannel.OutputChannel physical_audio_channels = 5;
    bool solo = 6;
    bool test_tone = 7;
  }

  message PhysicalChannel {
    uint32 index = 1;
    bool mute_enable = 2;
    bool solo_enable = 3;
    bool tone_enable = 4;
  }

}

