1
0
mirror of https://github.com/SineVector241/VoiceCraft-MCBE_Proximity_Chat.git synced 2024-11-20 10:27:45 +00:00
VoiceCraft-MCBE_Proximity_Chat/ATL/AudioData/Interfaces/IMetaData.cs
2024-07-13 11:16:08 +10:00

354 lines
8.1 KiB
C#

using System;
using System.Collections.Generic;
namespace ATL.AudioData
{
/// <summary>
/// This Interface defines an object aimed at giving audio metadata information
/// </summary>
public interface IMetaData
{
/// <summary>
/// Available metadata formats
/// </summary>
IList<Format> MetadataFormats
{
get;
}
/// <summary>
/// Title of the track
/// </summary>
string Title
{
get;
}
/// <summary>
/// Artist
/// </summary>
string Artist
{
get;
}
/// <summary>
/// Composer
/// </summary>
string Composer
{
get;
}
/// <summary>
/// Comments
/// </summary>
string Comment
{
get;
}
/// <summary>
/// Genre
/// </summary>
string Genre
{
get;
}
/// <summary>
/// Track number
/// </summary>
ushort TrackNumber
{
get;
}
/// <summary>
/// Total track number
/// </summary>
ushort TrackTotal
{
get;
}
/// <summary>
/// Disc number
/// </summary>
ushort DiscNumber
{
get;
}
/// <summary>
/// Total disc number
/// </summary>
ushort DiscTotal
{
get;
}
/// <summary>
/// Recording date (DateTime.MinValue if field does not exist)
/// </summary>
DateTime Date
{
get;
}
/// <summary>
/// True if the provided Recording date only has Year as a valid field
/// </summary>
bool IsDateYearOnly
{
get;
}
/// <summary>
/// Original release date (DateTime.MinValue if field does not exist)
/// </summary>
DateTime OriginalReleaseDate
{
get;
}
/// <summary>
/// True if the provided Original Release date only has Year as a valid field
/// </summary>
bool IsOriginalReleaseDateYearOnly
{
get;
}
/// <summary>
/// Title of the album
/// </summary>
string Album
{
get;
}
/// <summary>
/// Rating of the track, from 0% to 100%
/// </summary>
float? Popularity
{
get;
}
/// <summary>
/// Copyright
/// </summary>
string Copyright
{
get;
}
/// <summary>
/// Language
/// </summary>
string Language
{
get;
}
/// <summary>
/// Original artist
/// </summary>
string OriginalArtist
{
get;
}
/// <summary>
/// Title of the original album
/// </summary>
string OriginalAlbum
{
get;
}
/// <summary>
/// General description
/// </summary>
string GeneralDescription
{
get;
}
/// <summary>
/// Publisher
/// </summary>
string Publisher
{
get;
}
/// <summary>
/// Publishing Date (DateTime.MinValue if field does not exist)
/// </summary>
DateTime PublishingDate
{
get;
}
/// <summary>
/// Album Artist
/// </summary>
string AlbumArtist
{
get;
}
/// <summary>
/// Conductor
/// </summary>
string Conductor
{
get;
}
/// <summary>
/// Lyricist
/// </summary>
string Lyricist
{
get;
}
/// <summary>
/// Mapping between functions (e.g. "producer") and names. Every odd field is a
/// function and every even is an name or a comma delimited list of names
/// </summary>
string InvolvedPeople
{
get;
}
/// <summary>
/// Product ID
/// </summary>
string ProductId
{
get;
}
/// <summary>
/// International Standard Recording Code (ISRC)
/// </summary>
string ISRC
{
get;
}
/// <summary>
/// Catalog Number
/// </summary>
string CatalogNumber
{
get;
}
/// <summary>
/// URL of the audio source
/// </summary>
string AudioSourceUrl
{
get;
}
/// <summary>
/// Album sort order
/// A string which should be used instead of the album name for sorting purposes
/// </summary>
string SortAlbum
{
get;
}
/// <summary>
/// Album artist sort order
/// A string which should be used instead of the album artist for sorting purposes
/// </summary>
string SortAlbumArtist
{
get;
}
/// <summary>
/// Artist sort order
/// A string which should be used instead of the artist for sorting purposes
/// </summary>
string SortArtist
{
get;
}
/// <summary>
/// Title sort order
/// A string which should be used instead of the title for sorting purposes
/// </summary>
string SortTitle
{
get;
}
/// <summary>
/// Content group description
/// Used if the sound belongs to a larger category of sounds/music.
/// For example, classical music is often sorted in different musical sections (e.g. "Piano Concerto").
/// </summary>
string Group
{
get;
}
/// <summary>
/// Series title / Movement name
/// </summary>
string SeriesTitle
{
get;
}
/// <summary>
/// Series part / Movement index
/// </summary>
string SeriesPart
{
get;
}
/// <summary>
/// Long description (may also be called "Podcast description")
/// </summary>
string LongDescription
{
get;
}
/// <summary>
/// Beats per minute
/// </summary>
int? BPM
{
get;
}
/// <summary>
/// Person or organization that encoded the file
/// </summary>
string EncodedBy
{
get;
}
/// <summary>
/// Software that encoded the file, with relevant settings if any
/// </summary>
string Encoder
{
get;
}
/// <summary>
/// Contains any other metadata field that is not represented by a getter in the above interface
/// NB1 : Use MetaDataHolder.DATETIME_PREFIX + DateTime.ToFileTime() to set dates. ATL will format them properly.
/// NB2 : when querying multi-stream files (e.g. MP4, ASF), this attribute will only return stream-independent properties of the whole file, in the first language available
/// </summary>
IDictionary<string, string> AdditionalFields
{
get;
}
/// <summary>
/// Chapters table of contents description
/// </summary>
string ChaptersTableDescription
{
get;
}
/// <summary>
/// Chapters
/// </summary>
IList<ChapterInfo> Chapters
{
get;
}
/// <summary>
/// Lyrics
/// </summary>
LyricsInfo Lyrics
{
get;
}
/// <summary>
/// List of pictures stored in the tag
/// NB : PictureInfo.PictureData (raw binary picture data) is valued
/// </summary>
IList<PictureInfo> EmbeddedPictures
{
get;
}
}
}