syntax = "proto3";
package visualdl;

message Record {

  message Image {
    bytes encoded_image_string = 4;
  }

  message Audio {
    float sample_rate = 1;
    int64 num_channels = 2;
    int64 length_frames = 3;
    bytes encoded_audio_string = 4;
    string content_type = 5;
  }

  message Embedding {
    string label = 1;
    repeated float vectors = 2;
  }

  message Embeddings {
    repeated Embedding embeddings = 1;
  }

  message bytes_embeddings {
    bytes encoded_labels = 1;
    bytes encoded_vectors = 2;
  }

  message Histogram {
    repeated double hist = 1 [packed = true];
    repeated double bin_edges = 2 [packed = true];
  }

  message PRCurve {
    repeated int64 TP = 1 [packed = true];
    repeated int64 FP = 2 [packed = true];
    repeated int64 TN = 3 [packed = true];
    repeated int64 FN = 4 [packed = true];
    repeated double precision = 5;
    repeated double recall = 6;
  }

  message Value {
    int64 id = 1;
    string tag = 2;
    int64 timestamp = 3;
    oneof one_value {
      float value = 4;
      Image image = 5;
      Audio audio = 6;
      Embeddings embeddings = 7;
      Histogram histogram = 8;
      PRCurve pr_curve = 9;
    }
  }

  repeated Value values = 1;
  //RecordMetaData meta_data = 2;
}