syntax = "proto2";

message AudioFile {
    optional bytes file_id = 1;
    optional AudioFormat format = 2;
}

message Restriction {
    optional string countries_allowed = 0x2;
    optional string countries_forbidden = 0x3;
}

message Image {
    optional bytes file_id = 0x1;
}

message ImageGroup {
    repeated Image image = 0x1;
}

message Album {
    optional bytes gid = 0x1;
    optional string name = 0x2;
    optional ImageGroup cover_group = 0x11;
}

message Artist {
    optional bytes gid = 0x1;
    optional string name = 0x2;
}

message Track {
    optional bytes gid = 1;
    optional string name = 2;
    optional sint32 duration = 0x7;
    optional Album album = 0x3;
    repeated Artist artist = 0x4;
    repeated Restriction restriction = 0xb;
    repeated AudioFile file = 0xc;
    repeated Track alternative = 0xd;
}

message Episode {
    optional bytes gid = 1;
    optional string name = 2;
    optional sint32 duration = 7;
    repeated AudioFile audio = 12;
    optional ImageGroup covers = 0x44;
}

enum AudioFormat {
    OGG_VORBIS_96 = 0;
    OGG_VORBIS_160 = 1;
    OGG_VORBIS_320 = 2;
    MP3_256 = 3;
    MP3_320 = 4;
    MP3_160 = 5;
    MP3_96 = 6;
    MP3_160_ENC = 7;
    AAC_24 = 8;
    AAC_48 = 9;
}