#![warn(rust_2018_idioms)]
#![forbid(unsafe_code)]
pub mod default {
pub mod codecs {
#[cfg(feature = "flac")]
pub use symphonia_bundle_flac::FlacDecoder;
#[cfg(any(feature = "mp1", feature = "mp2", feature = "mp3"))]
pub use symphonia_bundle_mp3::MpaDecoder;
#[cfg(feature = "aac")]
pub use symphonia_codec_aac::AacDecoder;
#[cfg(feature = "adpcm")]
pub use symphonia_codec_adpcm::AdpcmDecoder;
#[cfg(feature = "alac")]
pub use symphonia_codec_alac::AlacDecoder;
#[cfg(feature = "pcm")]
pub use symphonia_codec_pcm::PcmDecoder;
#[cfg(feature = "vorbis")]
pub use symphonia_codec_vorbis::VorbisDecoder;
#[deprecated = "use `default::codecs::MpaDecoder` instead"]
#[cfg(any(feature = "mp1", feature = "mp2", feature = "mp3"))]
pub type Mp3Decoder = MpaDecoder;
}
pub mod formats {
#[cfg(feature = "flac")]
pub use symphonia_bundle_flac::FlacReader;
#[cfg(any(feature = "mp1", feature = "mp2", feature = "mp3"))]
pub use symphonia_bundle_mp3::MpaReader;
#[cfg(feature = "aac")]
pub use symphonia_codec_aac::AdtsReader;
#[cfg(feature = "caf")]
pub use symphonia_format_caf::CafReader;
#[cfg(feature = "isomp4")]
pub use symphonia_format_isomp4::IsoMp4Reader;
#[cfg(feature = "mkv")]
pub use symphonia_format_mkv::MkvReader;
#[cfg(feature = "ogg")]
pub use symphonia_format_ogg::OggReader;
#[cfg(feature = "aiff")]
pub use symphonia_format_riff::AiffReader;
#[cfg(feature = "wav")]
pub use symphonia_format_riff::WavReader;
#[deprecated = "use `default::formats::MpaReader` instead"]
#[cfg(any(feature = "mp1", feature = "mp2", feature = "mp3"))]
pub type Mp3Reader<'s> = MpaReader<'s>;
}
pub mod meta {
#[cfg(feature = "ape")]
pub use symphonia_metadata::ape::ApeReader;
#[cfg(feature = "id3v1")]
pub use symphonia_metadata::id3v1::Id3v1Reader;
#[cfg(feature = "id3v2")]
pub use symphonia_metadata::id3v2::Id3v2Reader;
pub use symphonia_metadata::embedded;
}
use lazy_static::lazy_static;
use symphonia_core::codecs::registry::CodecRegistry;
use symphonia_core::formats::probe::Probe;
lazy_static! {
static ref CODEC_REGISTRY: CodecRegistry = {
let mut registry = CodecRegistry::new();
register_enabled_codecs(&mut registry);
registry
};
}
lazy_static! {
static ref PROBE: Probe = {
let mut probe: Probe = Default::default();
register_enabled_formats(&mut probe);
probe
};
}
pub fn get_codecs() -> &'static CodecRegistry {
&CODEC_REGISTRY
}
pub fn get_probe() -> &'static Probe {
&PROBE
}
pub fn register_enabled_codecs(registry: &mut CodecRegistry) {
#[cfg(feature = "aac")]
registry.register_audio_decoder::<codecs::AacDecoder>();
#[cfg(feature = "adpcm")]
registry.register_audio_decoder::<codecs::AdpcmDecoder>();
#[cfg(feature = "alac")]
registry.register_audio_decoder::<codecs::AlacDecoder>();
#[cfg(feature = "flac")]
registry.register_audio_decoder::<codecs::FlacDecoder>();
#[cfg(any(feature = "mp1", feature = "mp2", feature = "mp3"))]
registry.register_audio_decoder::<codecs::MpaDecoder>();
#[cfg(feature = "pcm")]
registry.register_audio_decoder::<codecs::PcmDecoder>();
#[cfg(feature = "vorbis")]
registry.register_audio_decoder::<codecs::VorbisDecoder>();
}
pub fn register_enabled_formats(probe: &mut Probe) {
#[cfg(feature = "aac")]
probe.register_format::<formats::AdtsReader<'_>>();
#[cfg(feature = "caf")]
probe.register_format::<formats::CafReader<'_>>();
#[cfg(feature = "flac")]
probe.register_format::<formats::FlacReader<'_>>();
#[cfg(feature = "isomp4")]
probe.register_format::<formats::IsoMp4Reader<'_>>();
#[cfg(any(feature = "mp1", feature = "mp2", feature = "mp3"))]
probe.register_format::<formats::MpaReader<'_>>();
#[cfg(feature = "aiff")]
probe.register_format::<formats::AiffReader<'_>>();
#[cfg(feature = "wav")]
probe.register_format::<formats::WavReader<'_>>();
#[cfg(feature = "ogg")]
probe.register_format::<formats::OggReader<'_>>();
#[cfg(feature = "mkv")]
probe.register_format::<formats::MkvReader<'_>>();
#[cfg(feature = "ape")]
probe.register_metadata::<meta::ApeReader<'_>>();
#[cfg(feature = "id3v1")]
probe.register_metadata::<meta::Id3v1Reader<'_>>();
#[cfg(feature = "id3v2")]
probe.register_metadata::<meta::Id3v2Reader<'_>>();
}
}
pub use symphonia_core as core;