├── .gitattributes ├── .github └── workflows │ └── build-and-test.yml ├── .gitignore ├── AudioWorks ├── .editorconfig ├── AudioWorks.sln ├── AudioWorks.sln.DotSettings ├── Directory.Build.props ├── src │ ├── AudioWorks.Api │ │ ├── AssemblyInfo.cs │ │ ├── AudioAnalyzerInfo.cs │ │ ├── AudioAnalyzerManager.cs │ │ ├── AudioEncoderInfo.cs │ │ ├── AudioEncoderManager.cs │ │ ├── AudioFile.cs │ │ ├── AudioFileAnalyzer.cs │ │ ├── AudioFileEncoder.cs │ │ ├── AudioFileFormatInfo.cs │ │ ├── AudioFileManager.cs │ │ ├── AudioMetadataEncoderInfo.cs │ │ ├── AudioMetadataEncoderManager.cs │ │ ├── AudioWorks.Api.csproj │ │ ├── CoverArtExtractor.cs │ │ ├── EncodedPath.cs │ │ ├── ExtensionMethods.cs │ │ ├── ExtensionProviderWrapper.cs │ │ ├── Icon.png │ │ ├── ProgressToken.cs │ │ ├── Readme.md │ │ ├── SimpleProgress.cs │ │ ├── TaggedAudioFile.cs │ │ └── ValidatingSettingDictionary.cs │ ├── AudioWorks.Commands │ │ ├── AnalyzerCompleter.cs │ │ ├── AssemblyInfo.cs │ │ ├── AudioWorks.Commands.csproj │ │ ├── AudioWorks.Commands.format.ps1xml │ │ ├── AudioWorks.Commands.psd1 │ │ ├── AudioWorks.Commands.psm1 │ │ ├── COPYING │ │ ├── ClearAudioMetadataCommand.cs │ │ ├── CmdletLogger.cs │ │ ├── CmdletLoggerProvider.cs │ │ ├── EncoderCompleter.cs │ │ ├── ExportAudioCoverArtCommand.cs │ │ ├── ExportAudioFileCommand.cs │ │ ├── ExtensionMethods.cs │ │ ├── GetAudioAnalyzerInfoCommand.cs │ │ ├── GetAudioCoverArtCommand.cs │ │ ├── GetAudioEncoderInfoCommand.cs │ │ ├── GetAudioFileCommand.cs │ │ ├── GetAudioInfoCommand.cs │ │ ├── GetAudioMetadataCommand.cs │ │ ├── GetAudioMetadataEncoderInfoCommand.cs │ │ ├── Icon.png │ │ ├── LoggingCmdlet.cs │ │ ├── LoggingPSCmdlet.cs │ │ ├── MeasureAudioFileCommand.cs │ │ ├── MetadataFormatCompleter.cs │ │ ├── NullScope.cs │ │ ├── PublishModule.ps1 │ │ ├── RenameAudioFileCommand .cs │ │ ├── SaveAudioMetadataCommand.cs │ │ ├── SetAudioMetadataCommand.cs │ │ ├── SettingAdapter.cs │ │ └── docs │ │ │ ├── Clear-AudioMetadata.md │ │ │ ├── Export-AudioCoverArt.md │ │ │ ├── Export-AudioFile.md │ │ │ ├── Get-AudioAnalyzerInfo.md │ │ │ ├── Get-AudioCoverArt.md │ │ │ ├── Get-AudioEncoderInfo.md │ │ │ ├── Get-AudioFile.md │ │ │ ├── Get-AudioInfo.md │ │ │ ├── Get-AudioMetadata.md │ │ │ ├── Get-AudioMetadataEncoderInfo.md │ │ │ ├── Measure-AudioFile.md │ │ │ ├── Rename-AudioFile.md │ │ │ ├── Save-AudioMetadata.md │ │ │ ├── Set-AudioMetadata.md │ │ │ └── about_AudioWorks.Commands.md │ ├── AudioWorks.Common │ │ ├── AssemblyInfo.cs │ │ ├── AudioEncodingException.cs │ │ ├── AudioException.cs │ │ ├── AudioInfo.cs │ │ ├── AudioInvalidException.cs │ │ ├── AudioMetadata.cs │ │ ├── AudioMetadataInvalidException.cs │ │ ├── AudioUnsupportedException.cs │ │ ├── AudioWorks.Common.csproj │ │ ├── BoolSettingInfo.cs │ │ ├── CoverArt.cs │ │ ├── CoverArtFactory.cs │ │ ├── DateTimeSettingInfo.cs │ │ ├── IAudioFile.cs │ │ ├── ICoverArt.cs │ │ ├── ITaggedAudioFile.cs │ │ ├── ImageInvalidException.cs │ │ ├── ImageUnsupportedException.cs │ │ ├── IntSettingInfo.cs │ │ ├── LoggerManager.cs │ │ ├── Readme.md │ │ ├── SettingDictionary.cs │ │ ├── SettingInfo.cs │ │ ├── SettingInfoDictionary.cs │ │ └── StringSettingInfo.cs │ ├── AudioWorks.Extensibility │ │ ├── AssemblyInfo.cs │ │ ├── AudioAnalyzerExportAttribute.cs │ │ ├── AudioDecoderExportAttribute.cs │ │ ├── AudioEncoderExportAttribute.cs │ │ ├── AudioFilterExportAttribute.cs │ │ ├── AudioInfoDecoderExportAttribute.cs │ │ ├── AudioMetadataDecoderExportAttribute.cs │ │ ├── AudioMetadataEncoderExportAttribute.cs │ │ ├── AudioWorks.Extensibility.csproj │ │ ├── ExtensionContainer.cs │ │ ├── ExtensionContainerBase.cs │ │ ├── ExtensionProvider.cs │ │ ├── GroupToken.cs │ │ ├── IAudioAnalyzer.cs │ │ ├── IAudioDecoder.cs │ │ ├── IAudioEncoder.cs │ │ ├── IAudioFilter.cs │ │ ├── IAudioInfoDecoder.cs │ │ ├── IAudioMetadataDecoder.cs │ │ ├── IAudioMetadataEncoder.cs │ │ ├── IPrerequisiteHandler.cs │ │ ├── ISampleProcessor.cs │ │ ├── Int24.cs │ │ ├── PrerequisiteValidatorExportAttribute.cs │ │ ├── Readme.md │ │ ├── SampleBuffer.cs │ │ ├── SampleProcessor.cs │ │ └── TempFileStream.cs │ ├── Directory.Build.props │ ├── Extensions │ │ ├── .editorconfig │ │ ├── AudioWorks.Extensions.Apple │ │ │ ├── AacAudioEncoder.cs │ │ │ ├── AlacAudioDecoder.cs │ │ │ ├── AlacAudioEncoder.cs │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioBuffer.cs │ │ │ ├── AudioBufferListSingle.cs │ │ │ ├── AudioConverter.cs │ │ │ ├── AudioConverterHandle.cs │ │ │ ├── AudioFile.cs │ │ │ ├── AudioFileHandle.cs │ │ │ ├── AudioStreamBasicDescription.cs │ │ │ ├── AudioStreamPacketDescription.cs │ │ │ ├── AudioWorks.Extensions.Apple.csproj │ │ │ ├── CoreAudioHandler.cs │ │ │ ├── CoreAudioToolbox.cs │ │ │ ├── Enumerations.cs │ │ │ ├── ExtendedAudioFile.cs │ │ │ ├── ExtendedAudioFileHandle.cs │ │ │ ├── Pack.nuspec │ │ │ └── Readme.md │ │ ├── AudioWorks.Extensions.Flac │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioWorks.Extensions.Flac.csproj │ │ │ ├── Decoder │ │ │ │ ├── AudioInfoStreamDecoder.cs │ │ │ │ ├── AudioStreamDecoder.cs │ │ │ │ ├── Enumerations.cs │ │ │ │ ├── FlacAudioDecoder.cs │ │ │ │ ├── FlacAudioInfoDecoder.cs │ │ │ │ ├── FlacAudioMetadataDecoder.cs │ │ │ │ ├── Frame.cs │ │ │ │ ├── FrameFooter.cs │ │ │ │ ├── FrameHeader.cs │ │ │ │ ├── LibFlac.cs │ │ │ │ ├── MetadataStreamDecoder.cs │ │ │ │ ├── StreamDecoder.cs │ │ │ │ ├── StreamDecoderHandle.cs │ │ │ │ └── VorbisCommentToMetadataAdapter.cs │ │ │ ├── Encoder │ │ │ │ ├── Enumerations.cs │ │ │ │ ├── FlacAudioEncoder.cs │ │ │ │ ├── LibFlac.cs │ │ │ │ ├── StreamEncoder.cs │ │ │ │ └── StreamEncoderHandle.cs │ │ │ ├── FlacLibHandler.cs │ │ │ ├── Kernel32.cs │ │ │ ├── LibDl.cs │ │ │ ├── Metadata │ │ │ │ ├── CoverArtToPictureMetadataObjectAdapter.cs │ │ │ │ ├── Enumerations.cs │ │ │ │ ├── FlacAudioMetadataEncoder.cs │ │ │ │ ├── IoCallbacks.cs │ │ │ │ ├── LibFlac.cs │ │ │ │ ├── MetadataBlock.cs │ │ │ │ ├── MetadataChain.cs │ │ │ │ ├── MetadataChainHandle.cs │ │ │ │ ├── MetadataIterator.cs │ │ │ │ ├── MetadataIteratorHandle.cs │ │ │ │ ├── MetadataObject.cs │ │ │ │ ├── MetadataObjectHandle.cs │ │ │ │ ├── MetadataToVorbisCommentAdapter.cs │ │ │ │ ├── PaddingMetadataObject.cs │ │ │ │ ├── Picture.cs │ │ │ │ ├── PictureMetadataObject.cs │ │ │ │ ├── SeekTableMetadataObject.cs │ │ │ │ ├── StreamInfo.cs │ │ │ │ ├── VorbisComment.cs │ │ │ │ ├── VorbisCommentEntry.cs │ │ │ │ └── VorbisCommentMetadataObject.cs │ │ │ ├── Pack.nuspec │ │ │ ├── Readme.md │ │ │ └── runtimes │ │ │ │ ├── osx-arm64 │ │ │ │ └── native │ │ │ │ │ ├── libFLAC.dylib │ │ │ │ │ └── libogg.dylib │ │ │ │ ├── osx-x64 │ │ │ │ └── native │ │ │ │ │ ├── libFLAC.dylib │ │ │ │ │ └── libogg.dylib │ │ │ │ ├── win-x64 │ │ │ │ └── native │ │ │ │ │ └── FLAC.dll │ │ │ │ └── win-x86 │ │ │ │ └── native │ │ │ │ └── FLAC.dll │ │ ├── AudioWorks.Extensions.Id3 │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioWorks.Extensions.Id3.csproj │ │ │ ├── FrameAttribute.cs │ │ │ ├── FrameBase.cs │ │ │ ├── FrameFactory.cs │ │ │ ├── FrameFlags.cs │ │ │ ├── FrameFullText.cs │ │ │ ├── FramePicture.cs │ │ │ ├── FrameText.cs │ │ │ ├── FrameTextUserDef.cs │ │ │ ├── ID3v1.cs │ │ │ ├── IFrameDescription.cs │ │ │ ├── Id3AudioMetadataDecoder.cs │ │ │ ├── Id3AudioMetadataEncoder.cs │ │ │ ├── Id3V1ToMetadataAdapter.cs │ │ │ ├── MetadataToTagModelAdapter.cs │ │ │ ├── NativeEnumerations.cs │ │ │ ├── Pack.nuspec │ │ │ ├── Readme.md │ │ │ ├── Sync.cs │ │ │ ├── TagExtendedHeader.cs │ │ │ ├── TagHeader.cs │ │ │ ├── TagManager.cs │ │ │ ├── TagModel.cs │ │ │ ├── TagModelToMetadataAdapter.cs │ │ │ ├── TagNotFoundException.cs │ │ │ ├── TagReader.cs │ │ │ ├── TagWriter.cs │ │ │ └── TextBuilder.cs │ │ ├── AudioWorks.Extensions.Lame │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioWorks.Extensions.Lame.csproj │ │ │ ├── Encoder.cs │ │ │ ├── EncoderHandle.cs │ │ │ ├── Enumerations.cs │ │ │ ├── LameAudioEncoder.cs │ │ │ ├── LameLibHandler.cs │ │ │ ├── LibMp3Lame.cs │ │ │ ├── Pack.nuspec │ │ │ ├── Readme.md │ │ │ └── runtimes │ │ │ │ ├── osx-arm64 │ │ │ │ └── native │ │ │ │ │ └── libmp3lame.dylib │ │ │ │ ├── osx-x64 │ │ │ │ └── native │ │ │ │ │ └── libmp3lame.dylib │ │ │ │ ├── win-x64 │ │ │ │ └── native │ │ │ │ │ └── mp3lame.dll │ │ │ │ └── win-x86 │ │ │ │ └── native │ │ │ │ └── mp3lame.dll │ │ ├── AudioWorks.Extensions.Mp3 │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioWorks.Extensions.Mp3.csproj │ │ │ ├── FrameHeader.cs │ │ │ ├── FrameReader.cs │ │ │ ├── Mp3AudioInfoDecoder.cs │ │ │ ├── OptionalHeader.cs │ │ │ ├── Pack.nuspec │ │ │ └── Readme.md │ │ ├── AudioWorks.Extensions.Mp4 │ │ │ ├── AlacAtom.cs │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AtomInfo.cs │ │ │ ├── AudioWorks.Extensions.Mp4.csproj │ │ │ ├── CoverAtom.cs │ │ │ ├── EsdsAtom.cs │ │ │ ├── FreeAtom.cs │ │ │ ├── IlstAtomToMetadataAdapter.cs │ │ │ ├── ItunesAudioMetadataDecoder.cs │ │ │ ├── ItunesAudioMetadataEncoder.cs │ │ │ ├── MetadataToIlstAtomAdapter.cs │ │ │ ├── Mp4AudioInfoDecoder.cs │ │ │ ├── Mp4Model.cs │ │ │ ├── Mp4Reader.cs │ │ │ ├── Mp4Writer.cs │ │ │ ├── Pack.nuspec │ │ │ ├── Readme.md │ │ │ ├── ReverseDnsAtom.cs │ │ │ ├── SttsAtom.cs │ │ │ ├── TextAtom.cs │ │ │ ├── TrackNumberAtom.cs │ │ │ └── WritableAtom.cs │ │ ├── AudioWorks.Extensions.Opus │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioWorks.Extensions.Opus.csproj │ │ │ ├── CommentHeaderToMetadataAdapter.cs │ │ │ ├── CoverArtAdapter.cs │ │ │ ├── Encoder.cs │ │ │ ├── Enumerations.cs │ │ │ ├── LibOgg.cs │ │ │ ├── LibOpus.cs │ │ │ ├── LibOpusEnc.cs │ │ │ ├── MetadataToOpusCommentAdapter.cs │ │ │ ├── OggPacket.cs │ │ │ ├── OggPage.cs │ │ │ ├── OggStream.cs │ │ │ ├── OggStreamState.cs │ │ │ ├── OggSync.cs │ │ │ ├── OggSyncState.cs │ │ │ ├── OpusAudioEncoder.cs │ │ │ ├── OpusAudioInfoDecoder.cs │ │ │ ├── OpusAudioMetadataDecoder.cs │ │ │ ├── OpusAudioMetadataEncoder.cs │ │ │ ├── OpusCommentsHandle.cs │ │ │ ├── OpusEncoderCallbacks.cs │ │ │ ├── OpusEncoderHandle.cs │ │ │ ├── OpusLibHandler.cs │ │ │ ├── Pack.nuspec │ │ │ ├── Readme.md │ │ │ └── runtimes │ │ │ │ ├── linux-x64 │ │ │ │ └── native │ │ │ │ │ └── libopusenc.so │ │ │ │ ├── osx-arm64 │ │ │ │ └── native │ │ │ │ │ ├── libogg.dylib │ │ │ │ │ ├── libopus.dylib │ │ │ │ │ └── libopusenc.dylib │ │ │ │ ├── osx-x64 │ │ │ │ └── native │ │ │ │ │ ├── libogg.dylib │ │ │ │ │ ├── libopus.dylib │ │ │ │ │ └── libopusenc.dylib │ │ │ │ ├── win-x64 │ │ │ │ └── native │ │ │ │ │ ├── ogg.dll │ │ │ │ │ ├── opus.dll │ │ │ │ │ └── opusenc.dll │ │ │ │ └── win-x86 │ │ │ │ └── native │ │ │ │ ├── ogg.dll │ │ │ │ ├── opus.dll │ │ │ │ └── opusenc.dll │ │ ├── AudioWorks.Extensions.ReplayGain │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioWorks.Extensions.ReplayGain.csproj │ │ │ ├── Ebur128LibHandler.cs │ │ │ ├── Enumerations.cs │ │ │ ├── GroupState.cs │ │ │ ├── LibEbur128.cs │ │ │ ├── Pack.nuspec │ │ │ ├── R128Analyzer.cs │ │ │ ├── Readme.md │ │ │ ├── ReplayGainAnalyzer.cs │ │ │ ├── ReplayGainFilter.cs │ │ │ ├── StateHandle.cs │ │ │ └── runtimes │ │ │ │ ├── osx-arm64 │ │ │ │ └── native │ │ │ │ │ └── libebur128.dylib │ │ │ │ ├── osx-x64 │ │ │ │ └── native │ │ │ │ │ └── libebur128.dylib │ │ │ │ ├── win-x64 │ │ │ │ └── native │ │ │ │ │ └── ebur128.dll │ │ │ │ └── win-x86 │ │ │ │ └── native │ │ │ │ └── ebur128.dll │ │ ├── AudioWorks.Extensions.Vorbis │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioWorks.Extensions.Vorbis.csproj │ │ │ ├── CoverArtAdapter.cs │ │ │ ├── LibOgg.cs │ │ │ ├── LibVorbis.cs │ │ │ ├── LibVorbisEnc.cs │ │ │ ├── MetadataToVorbisCommentAdapter.cs │ │ │ ├── OggPackBuffer.cs │ │ │ ├── OggPacket.cs │ │ │ ├── OggPage.cs │ │ │ ├── OggStream.cs │ │ │ ├── OggStreamState.cs │ │ │ ├── OggSync.cs │ │ │ ├── OggSyncState.cs │ │ │ ├── Pack.nuspec │ │ │ ├── Readme.md │ │ │ ├── VorbisAudioEncoder.cs │ │ │ ├── VorbisAudioInfoDecoder.cs │ │ │ ├── VorbisAudioMetadataDecoder.cs │ │ │ ├── VorbisAudioMetadataEncoder.cs │ │ │ ├── VorbisBlock.cs │ │ │ ├── VorbisComment.cs │ │ │ ├── VorbisCommentToMetadataAdapter.cs │ │ │ ├── VorbisDecoder.cs │ │ │ ├── VorbisDspState.cs │ │ │ ├── VorbisEncoder.cs │ │ │ ├── VorbisInfo.cs │ │ │ ├── VorbisLibHandler.cs │ │ │ └── runtimes │ │ │ │ ├── osx-arm64 │ │ │ │ └── native │ │ │ │ │ ├── libogg.dylib │ │ │ │ │ ├── libvorbis.dylib │ │ │ │ │ └── libvorbisenc.dylib │ │ │ │ ├── osx-x64 │ │ │ │ └── native │ │ │ │ │ ├── libogg.dylib │ │ │ │ │ ├── libvorbis.dylib │ │ │ │ │ └── libvorbisenc.dylib │ │ │ │ ├── win-x64 │ │ │ │ └── native │ │ │ │ │ ├── ogg.dll │ │ │ │ │ └── vorbis.dll │ │ │ │ └── win-x86 │ │ │ │ └── native │ │ │ │ ├── ogg.dll │ │ │ │ └── vorbis.dll │ │ ├── AudioWorks.Extensions.Wave │ │ │ ├── AssemblyInfo.cs │ │ │ ├── AudioWorks.Extensions.Wave.csproj │ │ │ ├── Pack.nuspec │ │ │ ├── Readme.md │ │ │ ├── RiffReader.cs │ │ │ ├── RiffWriter.cs │ │ │ ├── WaveAudioDecoder.cs │ │ │ ├── WaveAudioEncoder.cs │ │ │ └── WaveAudioInfoDecoder.cs │ │ └── Directory.Build.props │ └── StrongName.snk └── tests │ ├── .editorconfig │ ├── AudioWorks.Api.Tests │ ├── AssemblyInfo.cs │ ├── AudioAnalyzerManagerTests.cs │ ├── AudioEncoderManagerTests.cs │ ├── AudioFileAnalyzerTests.cs │ ├── AudioFileEncoderTests.cs │ ├── AudioFileManagerTests.cs │ ├── AudioFileTests.cs │ ├── AudioMetadataEncoderManagerTests.cs │ ├── AudioWorks.Api.Tests.csproj │ ├── CoverArtExtractorTests.cs │ └── TaggedAudioFileTests.cs │ ├── AudioWorks.Commands.Tests │ ├── AssemblyInfo.cs │ ├── AudioWorks.Commands.Tests.csproj │ ├── ClearAudioMetadataTests.cs │ ├── ExportAudioCoverArtTests.cs │ ├── ExportAudioFileTests.cs │ ├── ExtensionMethods.cs │ ├── GetAudioAnalyzerInfoTests.cs │ ├── GetAudioCoverArtTests.cs │ ├── GetAudioEncoderInfoTests.cs │ ├── GetAudioFileTests.cs │ ├── GetAudioInfoTests.cs │ ├── GetAudioMetadataEncoderInfoTests.cs │ ├── GetAudioMetadataTests.cs │ ├── MeasureAudioFileTests.cs │ ├── ModuleFixture.cs │ ├── RenameAudioFileTests.cs │ ├── SaveAudioMetadataTests.cs │ └── SetAudioMetadataTests.cs │ ├── AudioWorks.Common.Tests │ ├── AssemblyInfo.cs │ ├── AudioEncodingExceptionTests.cs │ ├── AudioInfoTests.cs │ ├── AudioInvalidExceptionTests.cs │ ├── AudioMetadataInvalidExceptionTests.cs │ ├── AudioMetadataTests.cs │ ├── AudioUnsupportedExceptionTests.cs │ ├── AudioWorks.Common.Tests.csproj │ ├── CoverArtFactoryTests.cs │ ├── CoverArtTests.cs │ ├── ImageInvalidExceptionTests.cs │ ├── ImageUnsupportedExceptionTests.cs │ └── SettingInfoDictionaryTests.cs │ ├── AudioWorks.Extensibility.Tests │ ├── AssemblyInfo.cs │ ├── AudioWorks.Extensibility.Tests.csproj │ └── SampleBufferTests.cs │ ├── AudioWorks.TestUtilities │ ├── AssemblyInfo.cs │ ├── AudioWorks.TestUtilities.csproj │ ├── DataSources │ │ ├── AnalyzeGroupDataSource.cs │ │ ├── AnalyzeValidFileDataSource.cs │ │ ├── AudioAnalyzerInfoDataSource.cs │ │ ├── AudioEncoderInfoDataSource.cs │ │ ├── AudioFileFormatInfoDataSource.cs │ │ ├── AudioMetadataEncoderInfoDataSource.cs │ │ ├── EncodeValidFileDataSource.cs │ │ ├── InvalidFileDataSource.cs │ │ ├── InvalidImageFileDataSource.cs │ │ ├── RenameValidFileDataSource.cs │ │ ├── SaveMetadataUnsupportedFileDataSource.cs │ │ ├── SaveMetadataValidFileSource.cs │ │ ├── UnsupportedFileDataSource.cs │ │ ├── UnsupportedImageFileDataSource.cs │ │ ├── ValidFileDataSource.cs │ │ ├── ValidFileWithCoverArtDataSource.cs │ │ └── ValidImageFileDataSource.cs │ ├── HashUtility.cs │ ├── PathUtility.cs │ └── Serializers │ │ ├── AudioInfoSerializer.cs │ │ ├── AudioMetadataSerializer.cs │ │ └── SettingDictionarySerializer.cs │ ├── Directory.Build.props │ ├── Directory.Packages.props │ └── TestFiles │ ├── Invalid │ ├── Missing 'fmt' Chunk.wav │ ├── Not Audio Layer III.mp3 │ ├── Not FLAC Format.flac │ ├── Not MPEG Audio.m4a │ ├── Not MPEG Audio.mp3 │ ├── Not Ogg Format.ogg │ ├── Not Opus Format.opus │ ├── Not RIFF Format.wav │ ├── Not Wave Format.wav │ ├── Not an Image.bmp │ └── Unexpectedly Truncated.wav │ ├── Unsupported │ ├── Lame MP3.m4a │ ├── MS ADPCM.wav │ ├── Opus.ogg │ ├── Speex.ogg │ ├── Text.txt │ └── Vorbis.opus │ └── Valid │ ├── A-law 44100Hz Stereo.wav │ ├── ALAC 16-bit 44100Hz Mono.m4a │ ├── ALAC 16-bit 44100Hz Stereo (Covr atom - JPEG).m4a │ ├── ALAC 16-bit 44100Hz Stereo (Covr atom - PNG).m4a │ ├── ALAC 16-bit 44100Hz Stereo (Tagged).m4a │ ├── ALAC 16-bit 44100Hz Stereo.m4a │ ├── ALAC 16-bit 48000Hz Stereo.m4a │ ├── ALAC 24-bit 96000Hz Stereo.m4a │ ├── Bitmap 24-bit 1280 x 935.bmp │ ├── FLAC Level 5 16-bit 44100Hz Mono.flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (PICTURE block - JPEG).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (PICTURE block - PNG).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using COMMENT).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using ReplayGain with '+' sign).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using ReplayGain with missing 'dB').flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TOTALTRACKS).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TRACKCOUNT).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TRACKTOTAL).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using YEAR).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using defaults).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using extended DATE).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid DATE).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid ReplayGain fields).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid TRACKNUMBER).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo (Tagged using mixed-case fields).flac │ ├── FLAC Level 5 16-bit 44100Hz Stereo.flac │ ├── FLAC Level 5 16-bit 48000Hz Stereo.flac │ ├── FLAC Level 5 24-bit 96000Hz Stereo.flac │ ├── FLAC Level 5 8-bit 8000Hz Stereo.flac │ ├── Fraunhofer CBR 128 44100Hz Stereo.mp3 │ ├── Fraunhofer VBR 44100Hz Stereo (with header).mp3 │ ├── Fraunhofer VBR 44100Hz Stereo.mp3 │ ├── JPEG 24-bit 1280 x 935.jpg │ ├── LPCM 16-bit 44100Hz Mono.wav │ ├── LPCM 16-bit 44100Hz Stereo (extensible).wav │ ├── LPCM 16-bit 44100Hz Stereo.wav │ ├── LPCM 16-bit 48000Hz Stereo.wav │ ├── LPCM 24-bit 96000Hz Stereo.wav │ ├── LPCM 8-bit 8000Hz Stereo.wav │ ├── Lame CBR 128 44100Hz Stereo (APIC frame - JPEG).mp3 │ ├── Lame CBR 128 44100Hz Stereo (APIC frame - PNG).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v1 missing values).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v1).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.3 Latin1 Extended Header).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.3 Latin1).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.3 UTF16 Unsynchronised).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.3 UTF16).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.4 Latin1).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Big Endian).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Unsynchronised Frames with data length).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Unsynchronised Frames).mp3 │ ├── Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF8).mp3 │ ├── Lame CBR 128 44100Hz Stereo (no header).mp3 │ ├── Lame CBR 128 44100Hz Stereo.mp3 │ ├── Lame CBR 128 48000Hz Stereo.mp3 │ ├── Lame CBR 24 8000Hz Stereo.mp3 │ ├── Lame CBR 64 44100Hz Mono.mp3 │ ├── Lame VBR Standard 44100Hz Stereo.mp3 │ ├── Opus VBR 44100Hz Mono.opus │ ├── Opus VBR 44100Hz Stereo (PICTURE comment - JPEG).opus │ ├── Opus VBR 44100Hz Stereo (PICTURE comment - PNG).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using COMMENT).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using R128).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN with '+' sign).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN with missing 'dB').opus │ ├── Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using TOTALTRACKS).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using TRACKCOUNT).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using TRACKTOTAL).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using YEAR).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using defaults).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using extended DATE).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using invalid DATE).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using invalid TRACKNUMBER).opus │ ├── Opus VBR 44100Hz Stereo (Tagged using mixed-case fields).opus │ ├── Opus VBR 44100Hz Stereo.opus │ ├── Opus VBR 48000Hz Stereo.opus │ ├── Opus VBR 8000Hz Stereo.opus │ ├── Opus VBR 96000Hz Stereo.opus │ ├── PNG 24-bit 1280 x 935.png │ ├── QAAC TVBR 91 44100Hz Mono.m4a │ ├── QAAC TVBR 91 44100Hz Stereo (Tagged).m4a │ ├── QAAC TVBR 91 44100Hz Stereo.m4a │ ├── QAAC TVBR 91 48000Hz Stereo.m4a │ ├── QAAC TVBR 91 8000Hz Stereo.m4a │ ├── Track 1 LPCM 16-bit 44100Hz Mono.wav │ ├── Track 1 LPCM 16-bit 44100Hz Stereo.wav │ ├── Track 1 LPCM 16-bit 48000Hz Stereo.wav │ ├── Track 1 LPCM 24-bit 96000Hz Stereo.wav │ ├── Track 1 LPCM 8-bit 8000Hz Stereo.wav │ ├── Track 2 LPCM 16-bit 44100Hz Mono.wav │ ├── Track 2 LPCM 16-bit 44100Hz Stereo.wav │ ├── Track 2 LPCM 16-bit 48000Hz Stereo.wav │ ├── Track 2 LPCM 24-bit 96000Hz Stereo.wav │ ├── Track 2 LPCM 8-bit 8000Hz Stereo.wav │ ├── Track 3 LPCM 16-bit 44100Hz Mono.wav │ ├── Track 3 LPCM 16-bit 44100Hz Stereo.wav │ ├── Track 3 LPCM 16-bit 48000Hz Stereo.wav │ ├── Track 3 LPCM 24-bit 96000Hz Stereo.wav │ ├── Track 3 LPCM 8-bit 8000Hz Stereo.wav │ ├── Vorbis Quality 3 44100Hz Mono.ogg │ ├── Vorbis Quality 3 44100Hz Stereo (PICTURE comment - JPEG).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (PICTURE comment - PNG).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using COMMENT).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using ReplayGain with '+' sign).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using ReplayGain with missing 'dB').ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using TOTALTRACKS).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using TRACKCOUNT).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using TRACKTOTAL).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using YEAR).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using defaults).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using extended DATE).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using invalid DATE).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using invalid ReplayGain fields).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using invalid TRACKNUMBER).ogg │ ├── Vorbis Quality 3 44100Hz Stereo (Tagged using mixed-case fields).ogg │ ├── Vorbis Quality 3 44100Hz Stereo.ogg │ ├── Vorbis Quality 3 48000Hz Stereo.ogg │ ├── Vorbis Quality 3 8000Hz Stereo.ogg │ ├── Vorbis Quality 3 96000Hz Stereo.ogg │ └── µ-law 44100Hz Stereo.wav ├── LICENSE ├── Logo.png └── README.md /AudioWorks/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net8.0 5 | 12.0 6 | enable 7 | $(GITHUB_RUN_NUMBER) 8 | 0 9 | AudioWorks 10 | © 2018 Jeremy Herbison 11 | en-US 12 | true 13 | true 14 | $(NuspecProperties);Copyright=$(Copyright) 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Api/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Api/AudioWorks.Api.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.1.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | The primary AudioWorks API. AudioWorks is a cross-platform, multi-format audio conversion and tagging suite. 8 | Icon.png 9 | music encode decode convert export tag cover art FLAC MP3 ID3 Lame MP4 AAC Apple ALAC Ogg Vorbis Opus ReplayGain EBUR128 10 | Readme.md 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Api/ExtensionProviderWrapper.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Collections.Generic; 17 | using System.Composition; 18 | using AudioWorks.Extensibility; 19 | 20 | namespace AudioWorks.Api 21 | { 22 | static class ExtensionProviderWrapper 23 | { 24 | internal static IEnumerable>> GetFactories() 25 | where T : class => 26 | ExtensionProvider.GetFactories(); 27 | 28 | internal static IEnumerable> GetFactories(string key, string value) 29 | where T : class => 30 | ExtensionProvider.GetFactories(key, value); 31 | } 32 | } -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Api/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/AudioWorks.Api/Icon.png -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | 18 | [assembly: CLSCompliant(false)] 19 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/AudioWorks.Commands.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.1.0 5 | $(VersionPrefix).$(Revision) 6 | true 7 | false 8 | false 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/AudioWorks.Commands.psd1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/AudioWorks.Commands/AudioWorks.Commands.psd1 -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/AudioWorks.Commands.psm1: -------------------------------------------------------------------------------- 1 | # 2 | # Script module for module 'AudioWorks.Commands' 3 | # 4 | Set-StrictMode -Version Latest 5 | 6 | # Set up some helper variables to make it easier to work with the module 7 | $PSModule = $ExecutionContext.SessionState.Module 8 | $PSModuleRoot = $PSModule.ModuleBase 9 | 10 | $binaryModuleRoot = Join-Path -Path $PSModuleRoot -ChildPath 'net8.0' 11 | $binaryModulePath = Join-Path -Path $binaryModuleRoot -ChildPath 'AudioWorks.Commands.dll' 12 | 13 | $binaryModule = Import-Module -Name $binaryModulePath -PassThru 14 | 15 | # When the module is unloaded, remove the nested binary module that was loaded with it 16 | $PSModule.OnRemove = { 17 | Remove-Module -ModuleInfo $binaryModule 18 | } 19 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/CmdletLoggerProvider.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Collections.Concurrent; 17 | using System.Diagnostics.CodeAnalysis; 18 | using Microsoft.Extensions.Logging; 19 | 20 | namespace AudioWorks.Commands 21 | { 22 | sealed class CmdletLoggerProvider : ILoggerProvider 23 | { 24 | readonly ConcurrentQueue _messageQueue = new(); 25 | 26 | public ILogger CreateLogger(string? categoryName) => new CmdletLogger(_messageQueue); 27 | 28 | public void Dispose() 29 | { 30 | } 31 | 32 | internal bool TryDequeueMessage([NotNullWhen(true)] out object? result) => _messageQueue.TryDequeue(out result); 33 | } 34 | } -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/GetAudioAnalyzerInfoCommand.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Management.Automation; 17 | using AudioWorks.Api; 18 | 19 | namespace AudioWorks.Commands 20 | { 21 | [Cmdlet(VerbsCommon.Get, "AudioAnalyzerInfo"), OutputType(typeof(AudioAnalyzerInfo))] 22 | public sealed class GetAudioAnalyzerInfoCommand : LoggingCmdlet 23 | { 24 | protected override void ProcessRecord() 25 | { 26 | var result = AudioAnalyzerManager.GetAnalyzerInfo(); 27 | ProcessLogMessages(); 28 | WriteObject(result, true); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/GetAudioEncoderInfoCommand.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Management.Automation; 17 | using AudioWorks.Api; 18 | 19 | namespace AudioWorks.Commands 20 | { 21 | [Cmdlet(VerbsCommon.Get, "AudioEncoderInfo"), OutputType(typeof(AudioEncoderInfo))] 22 | public sealed class GetAudioEncoderInfoCommand : LoggingCmdlet 23 | { 24 | protected override void ProcessRecord() 25 | { 26 | var result = AudioEncoderManager.GetEncoderInfo(); 27 | ProcessLogMessages(); 28 | WriteObject(result, true); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/GetAudioMetadataEncoderInfoCommand.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Management.Automation; 17 | using AudioWorks.Api; 18 | 19 | namespace AudioWorks.Commands 20 | { 21 | [Cmdlet(VerbsCommon.Get, "AudioMetadataEncoderInfo"), OutputType(typeof(AudioMetadataEncoderInfo))] 22 | public sealed class GetAudioMetadataEncoderInfoCommand : LoggingCmdlet 23 | { 24 | protected override void ProcessRecord() 25 | { 26 | var result = AudioMetadataEncoderManager.GetEncoderInfo(); 27 | ProcessLogMessages(); 28 | WriteObject(result, true); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/AudioWorks.Commands/Icon.png -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/NullScope.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | 18 | namespace AudioWorks.Commands 19 | { 20 | sealed class NullScope : IDisposable 21 | { 22 | public void Dispose() 23 | { 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Commands/docs/Get-AudioAnalyzerInfo.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: AudioWorks.Commands.dll-Help.xml 3 | Module Name: AudioWorks.Commands 4 | online version: https://github.com/jherby2k/AudioWorks/blob/master/AudioWorks/src/AudioWorks.Commands/docs/Get-AudioAnalyzerInfo.md 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-AudioAnalyzerInfo 9 | 10 | ## SYNOPSIS 11 | Gets information about the available audio analyzers. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-AudioAnalyzerInfo [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | The Get-AudioAnalyzerInfo cmdlet gets objects that describe the audio analyzers currently loaded and available for use with the Measure-AudioFile cmdlet. 21 | 22 | ## EXAMPLES 23 | 24 | ### Example 1 25 | ```powershell 26 | PS C:\> Get-AudioAnalyzerInfo 27 | ``` 28 | 29 | ## PARAMETERS 30 | 31 | ### CommonParameters 32 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 33 | 34 | ## INPUTS 35 | 36 | ## OUTPUTS 37 | 38 | ### AudioWorks.Api.AudioAnalyzerInfo 39 | ## NOTES 40 | 41 | ## RELATED LINKS 42 | 43 | [AudioWorks Wiki](https://github.com/jherby2k/AudioWorks/wiki) 44 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Common/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Common/AudioWorks.Common.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.1.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Public types used by the AudioWorks API. AudioWorks is a cross-platform, multi-format audio conversion and tagging suite. 8 | Readme.md 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Common/BoolSettingInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Common 17 | { 18 | /// 19 | /// Describes a setting which can be either true or false. 20 | /// 21 | /// 22 | public sealed class BoolSettingInfo : SettingInfo 23 | { 24 | /// 25 | /// Initializes a new instance of the class. 26 | /// 27 | public BoolSettingInfo() 28 | : base(typeof(bool)) 29 | { 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Common/DateTimeSettingInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | 18 | namespace AudioWorks.Common 19 | { 20 | /// 21 | /// Describes a date and time setting. 22 | /// 23 | /// 24 | public sealed class DateTimeSettingInfo : SettingInfo 25 | { 26 | /// 27 | /// Initializes a new instance of the class. 28 | /// 29 | public DateTimeSettingInfo() 30 | : base(typeof(DateTime)) 31 | { 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Common/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | This is a dependency of AudioWorks, a cross-platform, multi-format audio conversion and tagging suite. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) instead of this package directly. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## Main Types 10 | 11 | The main types provided by this library are: 12 | 13 | * `AudioInfo` 14 | * `AudioMetadata` 15 | * `CoverArt` 16 | * `SettingDictionary` 17 | * `SettingInfoDictionary` 18 | 19 | ## Feedback 20 | 21 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Extensibility/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Extensibility/AudioWorks.Extensibility.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.1 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | The AudioWorks extension API. AudioWorks is a cross-platform, multi-format audio conversion and tagging suite. 8 | Readme.md 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Extensibility/IPrerequisiteHandler.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensibility 17 | { 18 | /// 19 | /// An extension that checks for prerequisites required by other extensions within the same assembly. 20 | /// 21 | public interface IPrerequisiteHandler 22 | { 23 | /// 24 | /// Performs one-time setup actions for this assembly, and indicates whether the prerequisites have been met. 25 | /// 26 | /// true if this assembly's prerequisites have been met; otherwise, false. 27 | bool Handle(); 28 | } 29 | } -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Extensibility/ISampleProcessor.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensibility 17 | { 18 | /// 19 | /// Accepts samples for processing. 20 | /// 21 | public interface ISampleProcessor 22 | { 23 | /// 24 | /// Submits samples for processing. 25 | /// 26 | /// The samples. 27 | void Submit(SampleBuffer samples); 28 | } 29 | } -------------------------------------------------------------------------------- /AudioWorks/src/AudioWorks.Extensibility/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | This is a dependency of AudioWorks, a cross-platform, multi-format audio conversion and tagging suite. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) instead of this package directly. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## Main Types 10 | 11 | The main types provided by this library are: 12 | 13 | * `IAudioDecoder` 14 | * `IAudioInfoDecoder` 15 | * `IAudioMetadataDecoder` 16 | * `IAudioEncoder` 17 | * `IAudioMetadataEncoder` 18 | * `IAudioAnalyzer` 19 | * `IAudioFilter` 20 | * `SampleBuffer` 21 | 22 | ## Feedback 23 | 24 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | true 7 | true 8 | true 9 | snupkg 10 | Jeremy Herbison 11 | 12 | AGPL-3.0-or-later 13 | https://github.com/jherby2k/AudioWorks 14 | true 15 | true 16 | ..\StrongName.snk 17 | true 18 | $(NuspecProperties);Authors=$(Authors) 19 | $(NuspecProperties);license=$(PackageLicenseExpression) 20 | $(NuspecProperties);ProjectUrl=$(PackageProjectUrl) 21 | 22 | 23 | 24 | true 25 | true 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/.editorconfig: -------------------------------------------------------------------------------- 1 | # Code analysis 2 | [*.{cs,vb}] 3 | dotnet_diagnostic.CA1062.severity = none 4 | dotnet_diagnostic.CA5393.severity = none 5 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/AudioBuffer.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Apple 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | struct AudioBuffer 22 | { 23 | internal uint NumberChannels; 24 | 25 | internal uint DataByteSize; 26 | 27 | internal nint Data; 28 | } 29 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/AudioBufferListSingle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Apple 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | struct AudioBufferListSingle 22 | { 23 | internal uint NumberBuffers; 24 | 25 | // This is difficult to marshal as an array with LibraryImport, and we only single (interlaced) buffers anyway 26 | internal AudioBuffer Buffer1; 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/AudioConverterHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Apple 19 | { 20 | sealed class AudioConverterHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | CoreAudioToolbox.AudioConverterDispose(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/AudioFileHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Apple 19 | { 20 | sealed class AudioFileHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | CoreAudioToolbox.AudioFileClose(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/AudioStreamPacketDescription.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Apple 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct AudioStreamPacketDescription 22 | { 23 | readonly long StartOffset; 24 | 25 | readonly uint VariableFramesInPacket; 26 | 27 | readonly uint DataByteSize; 28 | } 29 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/AudioWorks.Extensions.Apple.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.1 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides AAC (encoding) and Apple Lossless (encoding and decoding) functionality for AudioWorks via Apple. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/ExtendedAudioFileHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Apple 19 | { 20 | sealed class ExtendedAudioFileHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | CoreAudioToolbox.ExtAudioFileDispose(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Apple/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/AudioWorks.Extensions.Flac.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.1 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides FLAC (encoding, decoding and metadata) functionality for AudioWorks. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Decoder/Frame.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Flac.Decoder 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct Frame 22 | { 23 | internal readonly FrameHeader Header; 24 | 25 | readonly nint SubFrames; 26 | 27 | readonly FrameFooter Footer; 28 | } 29 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Decoder/FrameFooter.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Flac.Decoder 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct FrameFooter 22 | { 23 | readonly ushort Crc; 24 | } 25 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Decoder/StreamDecoderHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Flac.Decoder 19 | { 20 | sealed class StreamDecoderHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | LibFlac.StreamDecoderDelete(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Encoder/Enumerations.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensions.Flac.Encoder 17 | { 18 | enum EncoderWriteStatus 19 | { 20 | Ok 21 | } 22 | 23 | enum EncoderSeekStatus 24 | { 25 | Ok 26 | } 27 | 28 | enum EncoderTellStatus 29 | { 30 | Ok 31 | } 32 | 33 | enum EncoderState 34 | { 35 | Ok, 36 | Uninitialized, 37 | OggError, 38 | DecoderError, 39 | AudioDataMismatch, 40 | ClientError, 41 | IoError, 42 | FramingError, 43 | MemoryAllocationError 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Encoder/StreamEncoderHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Flac.Encoder 19 | { 20 | sealed class StreamEncoderHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | LibFlac.StreamEncoderDelete(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Metadata/MetadataChainHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Flac.Metadata 19 | { 20 | sealed class MetadataChainHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | LibFlac.MetadataChainDelete(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Metadata/MetadataIteratorHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Flac.Metadata 19 | { 20 | sealed class MetadataIteratorHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | LibFlac.MetadataIteratorDelete(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Metadata/MetadataObject.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | 18 | namespace AudioWorks.Extensions.Flac.Metadata 19 | { 20 | abstract class MetadataObject(MetadataType metadataType) : IDisposable 21 | { 22 | internal MetadataObjectHandle Handle { get; } = LibFlac.MetadataObjectNew(metadataType); 23 | 24 | public void Dispose() => Handle.Dispose(); 25 | } 26 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Metadata/MetadataObjectHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Flac.Metadata 19 | { 20 | sealed class MetadataObjectHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | bool _dropOwnership; 23 | 24 | protected override bool ReleaseHandle() 25 | { 26 | if (!_dropOwnership) 27 | LibFlac.MetadataObjectDelete(handle); 28 | return true; 29 | } 30 | 31 | internal void DropOwnership() => _dropOwnership = true; 32 | } 33 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Metadata/PaddingMetadataObject.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Flac.Metadata 19 | { 20 | sealed class PaddingMetadataObject : MetadataObject 21 | { 22 | internal PaddingMetadataObject(int length) 23 | : base(MetadataType.Padding) => 24 | Marshal.WriteIntPtr(Handle.DangerousGetHandle(), 8, new(length)); 25 | } 26 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Metadata/SeekTableMetadataObject.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensions.Flac.Metadata 17 | { 18 | sealed class SeekTableMetadataObject : MetadataObject 19 | { 20 | internal SeekTableMetadataObject(uint count, ulong sampleCount) 21 | : base(MetadataType.SeekTable) => 22 | LibFlac.MetadataObjectSeekTableTemplateAppendSpacedPoints(Handle, count, sampleCount); 23 | } 24 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Metadata/VorbisComment.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Flac.Metadata 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly unsafe struct VorbisComment 22 | { 23 | readonly VorbisCommentEntry Vendor; 24 | 25 | internal readonly uint Count; 26 | 27 | internal readonly VorbisCommentEntry* Comments; 28 | } 29 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Metadata/VorbisCommentEntry.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Flac.Metadata 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly unsafe struct VorbisCommentEntry 22 | { 23 | internal readonly uint Length; 24 | 25 | internal readonly byte* Entry; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | Provides FLAC (encoding, decoding and metadata) functionality for AudioWorks. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) in addition to this package. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## External Dependencies 10 | 11 | On Linux, you will need libflac. For Ubuntu 24.04: 12 | 13 | ```bash 14 | sudo apt-get install libflac12t64 15 | ``` 16 | 17 | ## Main Types 18 | 19 | The main types provided by this library are: 20 | 21 | * `FlacAudioDecoder` 22 | * `FlacAudioInfoDecoder` 23 | * `FlacAudioMetadataDecoder` 24 | * `FlacAudioEncoder` 25 | * `FlacAudioMetadataEncoder` 26 | 27 | ## Related Packages 28 | 29 | * The AudioWorks API: [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) 30 | 31 | ## Feedback 32 | 33 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/osx-arm64/native/libFLAC.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/osx-arm64/native/libFLAC.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/osx-arm64/native/libogg.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/osx-arm64/native/libogg.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/osx-x64/native/libFLAC.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/osx-x64/native/libFLAC.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/osx-x64/native/libogg.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/osx-x64/native/libogg.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/win-x64/native/FLAC.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/win-x64/native/FLAC.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/win-x86/native/FLAC.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Flac/runtimes/win-x86/native/FLAC.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Id3/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Id3/AudioWorks.Extensions.Id3.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides ID3 metadata functionality for AudioWorks. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Id3/FrameAttribute.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2020 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | 18 | namespace AudioWorks.Extensions.Id3 19 | { 20 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] 21 | sealed class FrameAttribute : Attribute 22 | { 23 | internal string FrameId { get; } 24 | 25 | internal FrameAttribute(string frameId) => FrameId = frameId; 26 | } 27 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Id3/FrameBase.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2020 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.IO; 18 | 19 | namespace AudioWorks.Extensions.Id3 20 | { 21 | public abstract class FrameBase 22 | { 23 | internal bool FileAlter { get; set; } 24 | 25 | internal string FrameId { get; } 26 | 27 | internal FrameBase(string frameId) => FrameId = frameId; 28 | 29 | internal abstract void Parse(Span frame); 30 | 31 | internal abstract void Write(Stream output); 32 | } 33 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Id3/IFrameDescription.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2020 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensions.Id3 17 | { 18 | interface IFrameDescription 19 | { 20 | string Description { get; set; } 21 | } 22 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Id3/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Id3/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | Provides ID3 metadata functionality for AudioWorks. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) in addition to this package. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## Main Types 10 | 11 | The main types provided by this library are: 12 | 13 | * `Id3AudioMetadataDecoder` 14 | * `Id3AudioMetadataEncoder` 15 | 16 | ## Related Packages 17 | 18 | * The AudioWorks API: [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) 19 | * MP3 encoding: [AudioWorks.Extensions.Lame](https://www.nuget.org/packages/AudioWorks.Extensions.Lame/) 20 | * MP3 reading: [AudioWorks.Extensions.Mp3](https://www.nuget.org/packages/AudioWorks.Extensions.Mp3/) 21 | 22 | ## Feedback 23 | 24 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Id3/TagNotFoundException.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2020 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | 18 | namespace AudioWorks.Extensions.Id3 19 | { 20 | [Serializable] 21 | public sealed class TagNotFoundException : Exception 22 | { 23 | public TagNotFoundException() 24 | { 25 | } 26 | 27 | public TagNotFoundException(string message) 28 | : base(message) 29 | { 30 | } 31 | 32 | public TagNotFoundException(string message, Exception innerException) 33 | : base(message, innerException) 34 | { 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/AudioWorks.Extensions.Lame.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides MP3 encoding functionality for AudioWorks via LAME. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/EncoderHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Lame 19 | { 20 | sealed class EncoderHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | LibMp3Lame.Close(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/Enumerations.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensions.Lame 17 | { 18 | enum VbrMode 19 | { 20 | Off, 21 | Mt, 22 | Rh, 23 | Abr, 24 | Mtrh 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/runtimes/osx-arm64/native/libmp3lame.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/runtimes/osx-arm64/native/libmp3lame.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/runtimes/osx-x64/native/libmp3lame.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/runtimes/osx-x64/native/libmp3lame.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/runtimes/win-x64/native/mp3lame.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/runtimes/win-x64/native/mp3lame.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/runtimes/win-x86/native/mp3lame.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Lame/runtimes/win-x86/native/mp3lame.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp3/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp3/AudioWorks.Extensions.Mp3.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides MP3 reading functionality for AudioWorks. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp3/OptionalHeader.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensions.Mp3 17 | { 18 | struct OptionalHeader 19 | { 20 | internal uint FrameCount { get; set; } 21 | 22 | internal uint ByteCount { get; set; } 23 | 24 | internal readonly bool Incomplete => FrameCount == 0 || ByteCount == 0; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp3/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp3/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | Provides MP3 reading functionality for AudioWorks. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) in addition to this package. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## Main Types 10 | 11 | The main types provided by this library are: 12 | 13 | * `Mp3AudioInfoDecoder` 14 | 15 | ## Related Packages 16 | 17 | * The AudioWorks API: [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) 18 | * ID3 metadata: [AudioWorks.Extensions.Id3](https://www.nuget.org/packages/AudioWorks.Extensions.Id3/) 19 | * MP3 encoding: [AudioWorks.Extensions.Lame](https://www.nuget.org/packages/AudioWorks.Extensions.Lame/) 20 | 21 | ## Feedback 22 | 23 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp4/AlacAtom.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Buffers.Binary; 18 | 19 | namespace AudioWorks.Extensions.Mp4 20 | { 21 | sealed class AlacAtom 22 | { 23 | internal byte BitsPerSample { get; } 24 | 25 | internal byte Channels { get; } 26 | 27 | internal uint SampleRate { get; } 28 | 29 | internal AlacAtom(ReadOnlySpan data) 30 | { 31 | BitsPerSample = data[53]; 32 | Channels = data[57]; 33 | SampleRate = BinaryPrimitives.ReadUInt32BigEndian(data[68..]); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp4/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp4/AtomInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensions.Mp4 17 | { 18 | sealed class AtomInfo 19 | { 20 | internal uint Start { get; } 21 | 22 | internal uint Size { get; } 23 | 24 | internal uint End => Start + Size; 25 | 26 | internal string FourCc { get; } 27 | 28 | internal AtomInfo(uint start, uint size, string fourCc) 29 | { 30 | Start = start; 31 | Size = size; 32 | FourCc = fourCc; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp4/AudioWorks.Extensions.Mp4.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides iTunes-style MP4 metadata functionality for AudioWorks. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp4/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp4/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | Provides iTunes-style MP4 metadata functionality for AudioWorks. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) in addition to this package. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## Main Types 10 | 11 | The main types provided by this library are: 12 | 13 | * `Mp4AudioInfoDecoder` 14 | * `ItunesAudioMetadataDecoder` 15 | * `ItunesAudioMetadataEncoder` 16 | 17 | ## Related Packages 18 | 19 | * The AudioWorks API: [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) 20 | * AAC (encoding) and Apple Lossless (encoding and decoding): [AudioWorks.Extensions.Apple](https://www.nuget.org/packages/AudioWorks.Extensions.Apple/) 21 | 22 | ## Feedback 23 | 24 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp4/SttsAtom.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Buffers.Binary; 18 | 19 | namespace AudioWorks.Extensions.Mp4 20 | { 21 | sealed class SttsAtom 22 | { 23 | internal uint PacketCount { get; } 24 | 25 | internal uint PacketSize { get; } 26 | 27 | internal SttsAtom(ReadOnlySpan data) 28 | { 29 | PacketCount = BinaryPrimitives.ReadUInt32BigEndian(data[16..]); 30 | PacketSize = BinaryPrimitives.ReadUInt32BigEndian(data[20..]); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Mp4/WritableAtom.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.IO; 17 | 18 | namespace AudioWorks.Extensions.Mp4 19 | { 20 | abstract class WritableAtom 21 | { 22 | internal abstract void Write(Stream output); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/AudioWorks.Extensions.Opus.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.1 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides Opus encoding and metadata functionality for AudioWorks. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/Enumerations.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | namespace AudioWorks.Extensions.Opus 17 | { 18 | enum EncoderControlRequest 19 | { 20 | SetSignal = 4000, 21 | SetBitRate = 4002, 22 | GetBitRate = 4003, 23 | SetVbr = 4006, 24 | SetVbrConstraint = 4020, 25 | SetLsbDepth = 4036, 26 | SetSerialNumber = 14006, 27 | SetHeaderGain = 14010 28 | } 29 | 30 | enum SignalType 31 | { 32 | Speech = 2048, 33 | Music = 2049 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/OggPacket.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Opus 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | unsafe struct OggPacket 22 | { 23 | internal void* Packet; 24 | 25 | internal CLong Bytes; 26 | 27 | readonly CLong BeginningOfStream; 28 | 29 | readonly CLong EndOfStream; 30 | 31 | readonly long GranulePosition; 32 | 33 | internal long PacketNumber; 34 | } 35 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/OggPage.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Opus 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly unsafe struct OggPage 22 | { 23 | internal readonly byte* Header; 24 | 25 | internal readonly CLong HeaderLength; 26 | 27 | internal readonly byte* Body; 28 | 29 | internal readonly CLong BodyLength; 30 | } 31 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/OggSyncState.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Opus 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct OggSyncState 22 | { 23 | readonly nint Data; 24 | 25 | readonly int Storage; 26 | 27 | readonly int Fill; 28 | 29 | readonly int Returned; 30 | 31 | readonly int Unsynced; 32 | 33 | readonly int HeaderBytes; 34 | 35 | readonly int BodyBytes; 36 | } 37 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/OpusCommentsHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Opus 19 | { 20 | sealed class OpusCommentsHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | LibOpusEnc.CommentsDestroy(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/OpusEncoderCallbacks.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Opus 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | unsafe struct OpusEncoderCallbacks 22 | { 23 | internal delegate* unmanaged[Cdecl] Write; 24 | 25 | internal delegate* unmanaged[Cdecl] Close; 26 | } 27 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/OpusEncoderHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2019 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.Opus 19 | { 20 | sealed class OpusEncoderHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | LibOpusEnc.Destroy(handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | Provides Opus encoding and metadata functionality for AudioWorks. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) in addition to this package. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## External Dependencies 10 | 11 | On Linux, you will need libopusenc and libebur128. For Ubuntu 24.04: 12 | 13 | ```bash 14 | sudo apt-get install libopusenc0 libebur128-1 15 | ``` 16 | 17 | ## Main Types 18 | 19 | The main types provided by this library are: 20 | 21 | * `OpusAudioInfoDecoder` 22 | * `OpusAudioMetadataDecoder` 23 | * `OpusAudioEncoder` 24 | * `OpusAudioMetadataEncoder` 25 | 26 | ## Related Packages 27 | 28 | * The AudioWorks API: [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) 29 | * ReplayGain and EBU R 128 analysis: [AudioWorks.Extensions.ReplayGain](https://www.nuget.org/packages/AudioWorks.Extensions.ReplayGain/) 30 | 31 | ## Feedback 32 | 33 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/linux-x64/native/libopusenc.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/linux-x64/native/libopusenc.so -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-arm64/native/libogg.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-arm64/native/libogg.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-arm64/native/libopus.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-arm64/native/libopus.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-arm64/native/libopusenc.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-arm64/native/libopusenc.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-x64/native/libogg.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-x64/native/libogg.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-x64/native/libopus.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-x64/native/libopus.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-x64/native/libopusenc.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/osx-x64/native/libopusenc.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x64/native/ogg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x64/native/ogg.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x64/native/opus.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x64/native/opus.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x64/native/opusenc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x64/native/opusenc.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x86/native/ogg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x86/native/ogg.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x86/native/opus.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x86/native/opus.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x86/native/opusenc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Opus/runtimes/win-x86/native/opusenc.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/AudioWorks.Extensions.ReplayGain.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides ReplayGain and EBU R 128 analysis functionality for AudioWorks. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/Enumerations.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | 18 | namespace AudioWorks.Extensions.ReplayGain 19 | { 20 | enum Ebur128Error 21 | { 22 | Success 23 | } 24 | 25 | [Flags] 26 | enum Modes 27 | { 28 | Global = 0x05, 29 | SamplePeak = 0x11, 30 | TruePeak = 0x31 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | Provides ReplayGain and EBU R 128 analysis functionality for AudioWorks. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) in addition to this package. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## External Dependencies 10 | 11 | On Linux, you will need libebur128. For Ubuntu 24.04: 12 | 13 | ```bash 14 | sudo apt-get install libebur128-1 15 | ``` 16 | 17 | ## Main Types 18 | 19 | The main types provided by this library are: 20 | 21 | * `R128Analyzer` 22 | 23 | ## Related Packages 24 | 25 | * The AudioWorks API: [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) 26 | 27 | ## Feedback 28 | 29 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/StateHandle.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using Microsoft.Win32.SafeHandles; 17 | 18 | namespace AudioWorks.Extensions.ReplayGain 19 | { 20 | sealed class StateHandle() : SafeHandleZeroOrMinusOneIsInvalid(true) 21 | { 22 | protected override bool ReleaseHandle() 23 | { 24 | LibEbur128.Destroy(ref handle); 25 | return true; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/runtimes/osx-arm64/native/libebur128.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/runtimes/osx-arm64/native/libebur128.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/runtimes/osx-x64/native/libebur128.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/runtimes/osx-x64/native/libebur128.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/runtimes/win-x64/native/ebur128.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/runtimes/win-x64/native/ebur128.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/runtimes/win-x86/native/ebur128.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.ReplayGain/runtimes/win-x86/native/ebur128.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/AudioWorks.Extensions.Vorbis.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides Ogg Vorbis encoding and metadata functionality for AudioWorks. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/OggPackBuffer.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Vorbis 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct OggPackBuffer 22 | { 23 | readonly CLong EndByte; 24 | 25 | readonly int EndBit; 26 | 27 | readonly nint Buffer; 28 | 29 | readonly nint Ptr; 30 | 31 | readonly CLong Storage; 32 | } 33 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/OggPacket.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Vorbis 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct OggPacket 22 | { 23 | readonly nint Packet; 24 | 25 | readonly CLong Bytes; 26 | 27 | readonly CLong BeginningOfStream; 28 | 29 | readonly CLong EndOfStream; 30 | 31 | readonly long GranulePosition; 32 | 33 | internal readonly long PacketNumber; 34 | } 35 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/OggPage.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Vorbis 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly unsafe struct OggPage 22 | { 23 | internal readonly byte* Header; 24 | 25 | internal readonly CLong HeaderLength; 26 | 27 | internal readonly byte* Body; 28 | 29 | internal readonly CLong BodyLength; 30 | } 31 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/OggSyncState.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Vorbis 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct OggSyncState 22 | { 23 | readonly nint Data; 24 | 25 | readonly int Storage; 26 | 27 | readonly int Fill; 28 | 29 | readonly int Returned; 30 | 31 | readonly int Unsynced; 32 | 33 | readonly int HeaderBytes; 34 | 35 | readonly int BodyBytes; 36 | } 37 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | Provides Ogg Vorbis encoding and metadata functionality for AudioWorks. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) in addition to this package. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## External Dependencies 10 | 11 | On Linux, you will need libvorbisenc and libebur128. For Ubuntu 24.04: 12 | 13 | ```bash 14 | sudo apt-get install libvorbisenc2 libebur128-1 15 | ``` 16 | 17 | ## Main Types 18 | 19 | The main types provided by this library are: 20 | 21 | * `VorbisAudioInfoDecoder` 22 | * `VorbisAudioMetadataDecoder` 23 | * `VorbisAudioEncoder` 24 | * `VorbisAudioMetadataEncoder` 25 | 26 | ## Related Packages 27 | 28 | * The AudioWorks API: [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) 29 | * ReplayGain and EBU R 128 analysis: [AudioWorks.Extensions.ReplayGain](https://www.nuget.org/packages/AudioWorks.Extensions.ReplayGain/) 30 | 31 | ## Feedback 32 | 33 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/VorbisComment.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Vorbis 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct VorbisComment 22 | { 23 | internal readonly nint UserComments; 24 | 25 | internal readonly nint CommentLengths; 26 | 27 | internal readonly int Comments; 28 | 29 | readonly nint Vendor; 30 | } 31 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/VorbisInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Runtime.InteropServices; 17 | 18 | namespace AudioWorks.Extensions.Vorbis 19 | { 20 | [StructLayout(LayoutKind.Sequential)] 21 | readonly struct VorbisInfo 22 | { 23 | readonly int Version; 24 | 25 | internal readonly int Channels; 26 | 27 | internal readonly CLong Rate; 28 | 29 | readonly CLong BitRateUpper; 30 | 31 | internal readonly CLong BitRateNominal; 32 | 33 | readonly CLong BitRateLower; 34 | 35 | readonly CLong BitRateWindow; 36 | 37 | readonly nint CodecSetup; 38 | } 39 | } -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-arm64/native/libogg.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-arm64/native/libogg.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-arm64/native/libvorbis.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-arm64/native/libvorbis.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-arm64/native/libvorbisenc.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-arm64/native/libvorbisenc.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-x64/native/libogg.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-x64/native/libogg.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-x64/native/libvorbis.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-x64/native/libvorbis.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-x64/native/libvorbisenc.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/osx-x64/native/libvorbisenc.dylib -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/win-x64/native/ogg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/win-x64/native/ogg.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/win-x64/native/vorbis.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/win-x64/native/vorbis.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/win-x86/native/ogg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/win-x86/native/ogg.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/win-x86/native/vorbis.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/Extensions/AudioWorks.Extensions.Vorbis/runtimes/win-x86/native/vorbis.dll -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Wave/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using System.Runtime.CompilerServices; 18 | 19 | [assembly: CLSCompliant(true)] 20 | 21 | [module: SkipLocalsInit] 22 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Wave/AudioWorks.Extensions.Wave.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2.0.0 5 | $(VersionPrefix).$(Revision) 6 | 2.0.0.0 7 | Provides Wave audio encoding and decoding functionality for AudioWorks. 8 | Pack.nuspec 9 | $(NuspecProperties);Configuration=$(Configuration.ToLowerInvariant()) 10 | $(NuspecProperties);Id=$(MSBuildProjectName) 11 | $(NuspecProperties);Version=$(VersionPrefix) 12 | $(NuspecProperties);Description=$(Description) 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Wave/Pack.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $Id$ 5 | $Version$ 6 | $Authors$ 7 | $Description$ 8 | $copyright$ 9 | $license$ 10 | $ProjectUrl$ 11 | $Tags$ 12 | Readme.md 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/AudioWorks.Extensions.Wave/Readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | Provides Wave audio encoding and decoding functionality for AudioWorks. 4 | 5 | You should normally consume [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) in addition to this package. 6 | 7 | More documentation is available on [the GitHub repository](https://github.com/jherby2k/AudioWorks). 8 | 9 | ## Main Types 10 | 11 | The main types provided by this library are: 12 | 13 | * `WaveAudioDecoder` 14 | * `WaveAudioInfoDecoder` 15 | * `WaveAudioEncoder` 16 | 17 | ## Related Packages 18 | 19 | * The AudioWorks API: [AudioWorks.Api](https://www.nuget.org/packages/AudioWorks.Api/) 20 | 21 | ## Feedback 22 | 23 | AudioWorks is released as open source under the [GNU Affero General Public License](https://github.com/jherby2k/AudioWorks/blob/main/LICENSE). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/jherby2k/AudioWorks). -------------------------------------------------------------------------------- /AudioWorks/src/Extensions/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | $(MSBuildThisFileDirectory)..\artifacts 7 | ..\..\StrongName.snk 8 | false 9 | false 10 | $(NoWarn);NU5100;NU5128 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /AudioWorks/src/StrongName.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/src/StrongName.snk -------------------------------------------------------------------------------- /AudioWorks/tests/.editorconfig: -------------------------------------------------------------------------------- 1 | # Code analysis 2 | [*.{cs,vb}] 3 | dotnet_diagnostic.CA1062.severity = none 4 | dotnet_diagnostic.CA1822.severity = none 5 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Api.Tests/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using AudioWorks.Common; 18 | using AudioWorks.TestUtilities.Serializers; 19 | using Xunit; 20 | using Xunit.Sdk; 21 | 22 | [assembly: CLSCompliant(false)] 23 | [assembly: CollectionBehavior(DisableTestParallelization = true)] 24 | [assembly: RegisterXunitSerializer(typeof(AudioInfoSerializer), typeof(AudioInfo))] 25 | [assembly: RegisterXunitSerializer(typeof(AudioMetadataSerializer), typeof(AudioMetadata))] 26 | [assembly: RegisterXunitSerializer(typeof(SettingDictionarySerializer), typeof(SettingDictionary))] -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Api.Tests/AudioFileTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Api.Tests/AudioFileTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Api.Tests/CoverArtExtractorTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Api.Tests/CoverArtExtractorTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Api.Tests/TaggedAudioFileTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Api.Tests/TaggedAudioFileTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Commands.Tests/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using AudioWorks.Common; 18 | using AudioWorks.TestUtilities.Serializers; 19 | using Xunit; 20 | using Xunit.Sdk; 21 | 22 | [assembly: CLSCompliant(false)] 23 | [assembly: CollectionBehavior(DisableTestParallelization = true)] 24 | [assembly: RegisterXunitSerializer(typeof(AudioInfoSerializer), typeof(AudioInfo))] 25 | [assembly: RegisterXunitSerializer(typeof(AudioMetadataSerializer), typeof(AudioMetadata))] 26 | [assembly: RegisterXunitSerializer(typeof(SettingDictionarySerializer), typeof(SettingDictionary))] 27 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Commands.Tests/ExtensionMethods.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2025 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Management.Automation; 17 | using Xunit; 18 | 19 | namespace AudioWorks.Commands.Tests 20 | { 21 | static class ExtensionMethods 22 | { 23 | internal static void WriteStreams(this ITestOutputHelper output, PowerShell ps) 24 | { 25 | foreach (var info in ps.Streams.Information) 26 | if (info.MessageData is string message) 27 | output.WriteLine(message); 28 | 29 | foreach (var warning in ps.Streams.Warning) 30 | output.WriteLine($"Warning: {warning.Message}"); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Commands.Tests/GetAudioCoverArtTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Commands.Tests/GetAudioCoverArtTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Commands.Tests/GetAudioFileTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Commands.Tests/GetAudioFileTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Commands.Tests/ModuleFixture.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Commands.Tests/ModuleFixture.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using Xunit; 18 | 19 | [assembly: CLSCompliant(false)] 20 | [assembly: CollectionBehavior(DisableTestParallelization = true)] 21 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/AudioEncodingExceptionTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/AudioEncodingExceptionTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/AudioInfoTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/AudioInfoTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/AudioInvalidExceptionTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/AudioInvalidExceptionTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/AudioMetadataInvalidExceptionTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/AudioMetadataInvalidExceptionTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/AudioUnsupportedExceptionTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/AudioUnsupportedExceptionTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/AudioWorks.Common.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/CoverArtFactoryTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/CoverArtFactoryTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/CoverArtTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/CoverArtTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/ImageInvalidExceptionTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/ImageInvalidExceptionTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Common.Tests/ImageUnsupportedExceptionTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Common.Tests/ImageUnsupportedExceptionTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Extensibility.Tests/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using Xunit; 18 | 19 | [assembly: CLSCompliant(false)] 20 | [assembly: CollectionBehavior(DisableTestParallelization = true)] 21 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Extensibility.Tests/AudioWorks.Extensibility.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.Extensibility.Tests/SampleBufferTests.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/AudioWorks.Extensibility.Tests/SampleBufferTests.cs -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.TestUtilities/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System; 17 | using AudioWorks.Common; 18 | using AudioWorks.TestUtilities.Serializers; 19 | using Xunit.Sdk; 20 | 21 | [assembly: CLSCompliant(false)] 22 | [assembly: RegisterXunitSerializer(typeof(AudioInfoSerializer), typeof(AudioInfo))] 23 | [assembly: RegisterXunitSerializer(typeof(AudioMetadataSerializer), typeof(AudioMetadata))] 24 | [assembly: RegisterXunitSerializer(typeof(SettingDictionarySerializer), typeof(SettingDictionary))] -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.TestUtilities/AudioWorks.TestUtilities.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Library 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.TestUtilities/DataSources/AudioAnalyzerInfoDataSource.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2020 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Collections.Generic; 17 | using Xunit; 18 | 19 | namespace AudioWorks.TestUtilities.DataSources 20 | { 21 | public static class AudioAnalyzerInfoDataSource 22 | { 23 | public static IEnumerable> Data { get; } = 24 | [ 25 | new("ReplayGain", "ReplayGain 2.0") 26 | ]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.TestUtilities/DataSources/AudioFileFormatInfoDataSource.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2020 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Collections.Generic; 17 | using Xunit; 18 | 19 | namespace AudioWorks.TestUtilities.DataSources 20 | { 21 | public static class AudioFileFormatInfoDataSource 22 | { 23 | public static IEnumerable> Data { get; } = 24 | [ 25 | new(".wav", "Waveform Audio"), 26 | new(".flac", "FLAC"), 27 | new(".m4a", "MPEG-4 Audio"), 28 | new(".mp3", "MPEG Audio Layer 3"), 29 | new(".ogg", "Ogg Vorbis"), 30 | new(".opus", "Opus") 31 | ]; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.TestUtilities/DataSources/InvalidImageFileDataSource.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Collections.Generic; 17 | using Xunit; 18 | 19 | namespace AudioWorks.TestUtilities.DataSources 20 | { 21 | public static class InvalidImageFileDataSource 22 | { 23 | public static IEnumerable> Data { get; } = 24 | [ 25 | "Not an Image.bmp" 26 | ]; 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.TestUtilities/DataSources/SaveMetadataUnsupportedFileDataSource.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Collections.Generic; 17 | using System.Linq; 18 | using Xunit; 19 | 20 | namespace AudioWorks.TestUtilities.DataSources 21 | { 22 | public static class SaveMetadataUnsupportedFileDataSource 23 | { 24 | static readonly IEnumerable> _data = 25 | [ 26 | "LPCM 16-bit 44100Hz Stereo.wav" 27 | ]; 28 | 29 | public static IEnumerable> Data => 30 | _data.Select((item, index) => new TheoryDataRow(index, item.Data)); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.TestUtilities/DataSources/UnsupportedFileDataSource.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Collections.Generic; 17 | using Xunit; 18 | 19 | namespace AudioWorks.TestUtilities.DataSources 20 | { 21 | public static class UnsupportedFileDataSource 22 | { 23 | public static IEnumerable> Data { get; } = 24 | [ 25 | "Text.txt", 26 | "MS ADPCM.wav", 27 | "Speex.ogg", 28 | "Opus.ogg", 29 | "Vorbis.opus", 30 | "Lame MP3.m4a" 31 | ]; 32 | } 33 | } -------------------------------------------------------------------------------- /AudioWorks/tests/AudioWorks.TestUtilities/DataSources/UnsupportedImageFileDataSource.cs: -------------------------------------------------------------------------------- 1 | /* Copyright © 2018 Jeremy Herbison 2 | 3 | This file is part of AudioWorks. 4 | 5 | AudioWorks is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public 6 | License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 7 | version. 8 | 9 | AudioWorks is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 10 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more 11 | details. 12 | 13 | You should have received a copy of the GNU Affero General Public License along with AudioWorks. If not, see 14 | . */ 15 | 16 | using System.Collections.Generic; 17 | using Xunit; 18 | 19 | namespace AudioWorks.TestUtilities.DataSources 20 | { 21 | public static class UnsupportedImageFileDataSource 22 | { 23 | public static IEnumerable> Data { get; } = 24 | [ 25 | "Text.txt" 26 | ]; 27 | } 28 | } -------------------------------------------------------------------------------- /AudioWorks/tests/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Exe 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /AudioWorks/tests/Directory.Packages.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Missing 'fmt' Chunk.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Invalid/Missing 'fmt' Chunk.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not Audio Layer III.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Invalid/Not Audio Layer III.mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not FLAC Format.flac: -------------------------------------------------------------------------------- 1 | This is not a FLAC file -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not MPEG Audio.m4a: -------------------------------------------------------------------------------- 1 | This is not an MPEG audio file -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not MPEG Audio.mp3: -------------------------------------------------------------------------------- 1 | This is not an MPEG audio file -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not Ogg Format.ogg: -------------------------------------------------------------------------------- 1 | This is not an Ogg file -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not Opus Format.opus: -------------------------------------------------------------------------------- 1 | This is not an Opus file -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not RIFF Format.wav: -------------------------------------------------------------------------------- 1 | This is not a RIFF file -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not Wave Format.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Invalid/Not Wave Format.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Not an Image.bmp: -------------------------------------------------------------------------------- 1 | This is not a bitmap -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Invalid/Unexpectedly Truncated.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Invalid/Unexpectedly Truncated.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Unsupported/Lame MP3.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Unsupported/Lame MP3.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Unsupported/MS ADPCM.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Unsupported/MS ADPCM.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Unsupported/Opus.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Unsupported/Opus.ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Unsupported/Speex.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Unsupported/Speex.ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Unsupported/Text.txt: -------------------------------------------------------------------------------- 1 | This is a text file. -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Unsupported/Vorbis.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Unsupported/Vorbis.opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/A-law 44100Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/A-law 44100Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Mono.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Mono.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Stereo (Covr atom - JPEG).m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Stereo (Covr atom - JPEG).m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Stereo (Covr atom - PNG).m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Stereo (Covr atom - PNG).m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Stereo (Tagged).m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Stereo (Tagged).m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Stereo.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 44100Hz Stereo.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 48000Hz Stereo.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/ALAC 16-bit 48000Hz Stereo.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/ALAC 24-bit 96000Hz Stereo.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/ALAC 24-bit 96000Hz Stereo.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Bitmap 24-bit 1280 x 935.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Bitmap 24-bit 1280 x 935.bmp -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Mono.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Mono.flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (PICTURE block - JPEG).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (PICTURE block - JPEG).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (PICTURE block - PNG).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (PICTURE block - PNG).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using COMMENT).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using COMMENT).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using ReplayGain with '+' sign).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using ReplayGain with '+' sign).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using ReplayGain with missing 'dB').flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using ReplayGain with missing 'dB').flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TOTALTRACKS).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TOTALTRACKS).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TRACKCOUNT).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TRACKCOUNT).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TRACKTOTAL).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using TRACKTOTAL).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using YEAR).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using YEAR).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using defaults).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using defaults).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using extended DATE).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using extended DATE).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid DATE).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid DATE).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid ReplayGain fields).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid ReplayGain fields).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid TRACKNUMBER).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using invalid TRACKNUMBER).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using mixed-case fields).flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo (Tagged using mixed-case fields).flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 44100Hz Stereo.flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 48000Hz Stereo.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 16-bit 48000Hz Stereo.flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 24-bit 96000Hz Stereo.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 24-bit 96000Hz Stereo.flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/FLAC Level 5 8-bit 8000Hz Stereo.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/FLAC Level 5 8-bit 8000Hz Stereo.flac -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Fraunhofer CBR 128 44100Hz Stereo.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Fraunhofer CBR 128 44100Hz Stereo.mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Fraunhofer VBR 44100Hz Stereo (with header).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Fraunhofer VBR 44100Hz Stereo (with header).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Fraunhofer VBR 44100Hz Stereo.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Fraunhofer VBR 44100Hz Stereo.mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/JPEG 24-bit 1280 x 935.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/JPEG 24-bit 1280 x 935.jpg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/LPCM 16-bit 44100Hz Mono.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/LPCM 16-bit 44100Hz Mono.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/LPCM 16-bit 44100Hz Stereo (extensible).wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/LPCM 16-bit 44100Hz Stereo (extensible).wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/LPCM 16-bit 44100Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/LPCM 16-bit 44100Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/LPCM 16-bit 48000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/LPCM 16-bit 48000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/LPCM 24-bit 96000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/LPCM 24-bit 96000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/LPCM 8-bit 8000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/LPCM 8-bit 8000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (APIC frame - JPEG).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (APIC frame - JPEG).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (APIC frame - PNG).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (APIC frame - PNG).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v1 missing values).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v1 missing values).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v1).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v1).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.3 Latin1 Extended Header).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.3 Latin1 Extended Header).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.3 Latin1).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.3 Latin1).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.3 UTF16 Unsynchronised).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.3 UTF16 Unsynchronised).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.3 UTF16).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.3 UTF16).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 Latin1).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 Latin1).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Big Endian).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Big Endian).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Unsynchronised Frames with data length).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Unsynchronised Frames with data length).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Unsynchronised Frames).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF16 Unsynchronised Frames).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF8).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (ID3v2.4 UTF8).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (no header).mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo (no header).mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 44100Hz Stereo.mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 128 48000Hz Stereo.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 128 48000Hz Stereo.mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 24 8000Hz Stereo.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 24 8000Hz Stereo.mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame CBR 64 44100Hz Mono.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame CBR 64 44100Hz Mono.mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Lame VBR Standard 44100Hz Stereo.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Lame VBR Standard 44100Hz Stereo.mp3 -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Mono.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Mono.opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (PICTURE comment - JPEG).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (PICTURE comment - JPEG).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (PICTURE comment - PNG).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (PICTURE comment - PNG).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using COMMENT).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using COMMENT).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using R128).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using R128).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN with '+' sign).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN with '+' sign).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN with missing 'dB').opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN with missing 'dB').opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using REPLAYGAIN).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using TOTALTRACKS).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using TOTALTRACKS).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using TRACKCOUNT).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using TRACKCOUNT).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using TRACKTOTAL).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using TRACKTOTAL).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using YEAR).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using YEAR).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using defaults).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using defaults).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using extended DATE).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using extended DATE).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using invalid DATE).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using invalid DATE).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using invalid TRACKNUMBER).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using invalid TRACKNUMBER).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using mixed-case fields).opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo (Tagged using mixed-case fields).opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 44100Hz Stereo.opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 48000Hz Stereo.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 48000Hz Stereo.opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 8000Hz Stereo.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 8000Hz Stereo.opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Opus VBR 96000Hz Stereo.opus: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Opus VBR 96000Hz Stereo.opus -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/PNG 24-bit 1280 x 935.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/PNG 24-bit 1280 x 935.png -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 44100Hz Mono.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 44100Hz Mono.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 44100Hz Stereo (Tagged).m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 44100Hz Stereo (Tagged).m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 44100Hz Stereo.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 44100Hz Stereo.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 48000Hz Stereo.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 48000Hz Stereo.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 8000Hz Stereo.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/QAAC TVBR 91 8000Hz Stereo.m4a -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 16-bit 44100Hz Mono.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 16-bit 44100Hz Mono.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 16-bit 44100Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 16-bit 44100Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 16-bit 48000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 16-bit 48000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 24-bit 96000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 24-bit 96000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 8-bit 8000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 1 LPCM 8-bit 8000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 16-bit 44100Hz Mono.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 16-bit 44100Hz Mono.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 16-bit 44100Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 16-bit 44100Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 16-bit 48000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 16-bit 48000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 24-bit 96000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 24-bit 96000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 8-bit 8000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 2 LPCM 8-bit 8000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 16-bit 44100Hz Mono.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 16-bit 44100Hz Mono.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 16-bit 44100Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 16-bit 44100Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 16-bit 48000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 16-bit 48000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 24-bit 96000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 24-bit 96000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 8-bit 8000Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Track 3 LPCM 8-bit 8000Hz Stereo.wav -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Mono.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Mono.ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (PICTURE comment - JPEG).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (PICTURE comment - JPEG).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (PICTURE comment - PNG).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (PICTURE comment - PNG).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using COMMENT).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using COMMENT).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using ReplayGain with '+' sign).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using ReplayGain with '+' sign).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using ReplayGain with missing 'dB').ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using ReplayGain with missing 'dB').ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using TOTALTRACKS).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using TOTALTRACKS).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using TRACKCOUNT).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using TRACKCOUNT).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using TRACKTOTAL).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using TRACKTOTAL).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using YEAR).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using YEAR).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using defaults).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using defaults).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using extended DATE).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using extended DATE).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using invalid DATE).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using invalid DATE).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using invalid ReplayGain fields).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using invalid ReplayGain fields).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using invalid TRACKNUMBER).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using invalid TRACKNUMBER).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using mixed-case fields).ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo (Tagged using mixed-case fields).ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 44100Hz Stereo.ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 48000Hz Stereo.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 48000Hz Stereo.ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 8000Hz Stereo.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 8000Hz Stereo.ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 96000Hz Stereo.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/Vorbis Quality 3 96000Hz Stereo.ogg -------------------------------------------------------------------------------- /AudioWorks/tests/TestFiles/Valid/µ-law 44100Hz Stereo.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/AudioWorks/tests/TestFiles/Valid/µ-law 44100Hz Stereo.wav -------------------------------------------------------------------------------- /Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jherby2k/AudioWorks/5933f9285c05d6e98ded153653befe414ddce18f/Logo.png --------------------------------------------------------------------------------