Hello community, here is the log from the commit of package ghc-flac for openSUSE:Factory checked in at 2017-06-22 10:37:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-flac (Old) and /work/SRC/openSUSE:Factory/.ghc-flac.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-flac" Thu Jun 22 10:37:26 2017 rev:2 rq:504066 version:0.1.2 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-flac/ghc-flac.changes 2017-04-14 13:32:59.355515003 +0200 +++ /work/SRC/openSUSE:Factory/.ghc-flac.new/ghc-flac.changes 2017-06-22 10:37:29.626147242 +0200 @@ -1,0 +2,5 @@ +Wed May 31 14:01:08 UTC 2017 - [email protected] + +- Update to version 0.1.2. + +------------------------------------------------------------------- Old: ---- flac-0.1.1.tar.gz flac.cabal New: ---- flac-0.1.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-flac.spec ++++++ --- /var/tmp/diff_new_pack.MTxRUy/_old 2017-06-22 10:37:30.174069999 +0200 +++ /var/tmp/diff_new_pack.MTxRUy/_new 2017-06-22 10:37:30.178069434 +0200 @@ -19,14 +19,13 @@ %global pkg_name flac %bcond_with tests Name: ghc-%{pkg_name} -Version: 0.1.1 +Version: 0.1.2 Release: 0 Summary: Complete high-level binding to libFLAC License: BSD-3-Clause Group: Development/Languages/Other Url: https://hackage.haskell.org/package/%{pkg_name} Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz -Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/2.cabal#/%{pkg_name}.cabal BuildRequires: flac-devel BuildRequires: ghc-Cabal-devel BuildRequires: ghc-bytestring-devel @@ -64,7 +63,6 @@ %prep %setup -q -n %{pkg_name}-%{version} -cp -p %{SOURCE1} %{pkg_name}.cabal %build %ghc_lib_build ++++++ flac-0.1.1.tar.gz -> flac-0.1.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/CHANGELOG.md new/flac-0.1.2/CHANGELOG.md --- old/flac-0.1.1/CHANGELOG.md 2017-01-03 20:03:47.000000000 +0100 +++ new/flac-0.1.2/CHANGELOG.md 2017-05-22 13:20:14.000000000 +0200 @@ -1,3 +1,7 @@ +## FLAC 0.1.2 + +* Documentation and metadata improvements. + ## FLAC 0.1.1 * Added support for `DiscTotal` Vorbis comment field. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/Metadata/CueSheet.hs new/flac-0.1.2/Codec/Audio/FLAC/Metadata/CueSheet.hs --- old/flac-0.1.1/Codec/Audio/FLAC/Metadata/CueSheet.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/Metadata/CueSheet.hs 2017-05-22 10:26:13.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/Metadata/Internal/Level2Interface/Helpers.hs new/flac-0.1.2/Codec/Audio/FLAC/Metadata/Internal/Level2Interface/Helpers.hs --- old/flac-0.1.1/Codec/Audio/FLAC/Metadata/Internal/Level2Interface/Helpers.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/Metadata/Internal/Level2Interface/Helpers.hs 2017-05-22 09:54:09.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -337,8 +337,8 @@ (cueTracks, cueLeadOutTrack) <- case numTracks of 0 -> - -- NOTE Should probably never happen unless FLAC file is invalid with - -- respect to the spec. + -- NOTE Should probably never happen unless FLAC file is invalid + -- with respect to the spec. throwM (MetaInvalidCueSheet "Cannot read CUE sheet without tracks") 1 -> ([],) <$> getCueSheetTrack block 0 _ -> do @@ -381,7 +381,9 @@ pregapIndex <- if hasPregap then Just <$> c_get_cue_sheet_track_index block n 0 else return Nothing - trackIndices <- mapM (c_get_cue_sheet_track_index block n) (NE.fromList range) + trackIndices <- mapM + (c_get_cue_sheet_track_index block n) + (NE.fromList range) return (pregapIndex, trackIndices) return CueTrack {..} @@ -445,7 +447,7 @@ foreign import ccall unsafe "FLAC__metadata_set_cue_sheet_is_cd" c_set_cue_sheet_is_cd :: Metadata -> Bool -> IO () --- | Poke a 'CueTrack' an specified index. +-- | Poke a 'CueTrack' at a specified index. setCueSheetTrack :: Metadata -> CueTrack -> Word8 -> Word8 -> IO Bool setCueSheetTrack block CueTrack {..} n n' = do @@ -489,7 +491,7 @@ -- Picture -- | Get type of picture assuming that given 'Metadata' block is a --- 'PictureBolck'. +-- 'PictureBlock'. getPictureType :: Metadata -> IO PictureType getPictureType = fmap toEnum' . c_get_picture_type @@ -497,7 +499,7 @@ foreign import ccall unsafe "FLAC__metadata_get_picture_type" c_get_picture_type :: Metadata -> IO CUInt --- | Get picture data from given 'Metadata' block. +-- | Get picture data from a given 'Metadata' block. getPictureData :: Metadata -> IO PictureData getPictureData block = do @@ -534,7 +536,7 @@ foreign import ccall unsafe "FLAC__metadata_get_picture_data" c_get_picture_data :: Metadata -> Ptr Word32 -> IO CString --- | Set 'PictureType' to given 'Metadata' block that should be a +-- | Set 'PictureType' to a given 'Metadata' block that should be a -- 'PictureBlock'. setPictureType :: Metadata -> PictureType -> IO () @@ -577,7 +579,7 @@ -- | Execute a collection of actions that return 'False' on failure. As soon -- as failure is reported, stop the execution and return 'False'. Return --- 'True' in case of success. +-- 'True' in the case of success. shortcutFalse :: [IO Bool] -> IO Bool shortcutFalse [] = return True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/Metadata/Internal/Level2Interface.hs new/flac-0.1.2/Codec/Audio/FLAC/Metadata/Internal/Level2Interface.hs --- old/flac-0.1.1/Codec/Audio/FLAC/Metadata/Internal/Level2Interface.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/Metadata/Internal/Level2Interface.hs 2017-05-22 10:17:36.000000000 +0200 @@ -3,12 +3,12 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- --- Low-level Haskell wrapper around C functions to work with level 2 FLAC --- metadata interface, see: +-- Low-level Haskell wrapper around C functions to work with the level 2 +-- FLAC metadata interface, see: -- -- <https://xiph.org/flac/api/group__flac__metadata__level2.html>. @@ -43,7 +43,7 @@ -- Chain -- | Create and use a 'MetaChain' (metadata chain). The chain is guaranteed --- to be freed even in case of exception. +-- to be freed even in the case of exception thrown. -- -- If memory for the chain cannot be allocated, corresponding -- 'MetaException' is raised. @@ -64,7 +64,8 @@ foreign import ccall unsafe "FLAC__metadata_chain_new" c_chain_new :: IO MetaChain --- | Free a chain instance. Deletes the object pointed to by chain. +-- | Free a 'MetaChain' instance. Delete the object pointed to by +-- 'MetaChain'. chainDelete :: MetaChain -> IO () chainDelete = c_chain_delete @@ -72,8 +73,8 @@ foreign import ccall unsafe "FLAC__metadata_chain_delete" c_chain_delete :: MetaChain -> IO () --- | Check status of given 'MetaChain'. This can be used to find out what --- went wrong. Also resets status to 'MetaChainStatusOK'. +-- | Check status of a given 'MetaChain'. This can be used to find out what +-- went wrong. It also resets status to 'MetaChainStatusOK'. chainStatus :: MetaChain -> IO MetaChainStatus chainStatus = fmap toEnum' . c_chain_status @@ -109,7 +110,7 @@ -- on the current chain will become invalid after this call. You should -- delete the iterator and get a new one. -- --- Note: this function does not write to the FLAC file, it only modifies the +-- NOTE: this function does not write to the FLAC file, it only modifies the -- chain. chainSortPadding :: MetaChain -> IO () @@ -124,7 +125,7 @@ -- | Traverse all metadata blocks from beginning to end collecting 'Just' -- values and possibly performing some actions. This is the only way to -- traverse metadata chain and get access to 'MetaIterator' and by exporting --- only this, we eliminate certain class of possible errors making finding +-- only this, we eliminate a certain class of possible errors making finding -- and traversing metadata blocks always correct and safe. -- -- If memory for the iterator cannot be allocated, corresponding @@ -164,7 +165,7 @@ foreign import ccall unsafe "FLAC__metadata_iterator_new" c_iterator_new :: IO MetaIterator --- | Free an iterator instance. Deletes the object pointed to by +-- | Free an iterator instance. Delete the object pointed to by -- 'MetaIterator'. iteratorDelete :: MetaIterator -> IO () @@ -211,8 +212,8 @@ foreign import ccall unsafe "FLAC__metadata_iterator_get_block" c_iterator_get_block :: MetaIterator -> IO Metadata --- | Write given 'Metadata' block at position pointed to by 'MetaIterator' --- replacing existing block. +-- | Write given 'Metadata' block at the position pointed to by +-- 'MetaIterator' replacing an existing block. iteratorSetBlock :: MetaIterator -> Metadata -> IO Bool iteratorSetBlock = c_iterator_set_block diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/Metadata/Internal/Object.hs new/flac-0.1.2/Codec/Audio/FLAC/Metadata/Internal/Object.hs --- old/flac-0.1.1/Codec/Audio/FLAC/Metadata/Internal/Object.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/Metadata/Internal/Object.hs 2017-05-22 10:19:03.000000000 +0200 @@ -3,11 +3,11 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- --- Wrappers for functions to work with metadata objects, see: +-- Wrappers for the functions to work with metadata objects, see: -- -- <https://xiph.org/flac/api/group__flac__metadata__object.html>. @@ -89,7 +89,7 @@ c_object_cuesheet_track_resize_indices :: Metadata -> CUInt -> CUInt -> IO Bool -- | Check a CUE sheet to see if it conforms to the FLAC specification. If --- something is wrong, the explanation is return in 'Just', otherwise +-- something is wrong, the explanation is returned in 'Just', otherwise -- 'Nothing' is returned. objectCueSheetIsLegal :: Metadata -> Bool -> IO (Maybe Text) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/Metadata/Internal/Types.hs new/flac-0.1.2/Codec/Audio/FLAC/Metadata/Internal/Types.hs --- old/flac-0.1.1/Codec/Audio/FLAC/Metadata/Internal/Types.hs 2017-01-02 22:02:24.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/Metadata/Internal/Types.hs 2017-05-22 10:25:48.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -37,16 +37,17 @@ import qualified Data.ByteString as B import qualified Data.ByteString.Char8 as B8 --- | An opaque newtype wrapper around 'Ptr' 'Void', serves to represent --- pointer to metadata chain. +-- | An opaque newtype wrapper around @'Ptr' 'Void'@, serves to represent a +-- pointer to a metadata chain. newtype MetaChain = MetaChain (Ptr Void) --- | Same as 'MetaChain', this one for pointer to metadata iterator. +-- | The same as 'MetaChain', this one is for pointers to metadata iterator. newtype MetaIterator = MetaIterator (Ptr Void) --- | Same as 'MetaChain', this one for pointer to metadata structure itself. +-- | The same as 'MetaChain', this one for pointers to metadata structure +-- itself. newtype Metadata = Metadata (Ptr Void) @@ -105,8 +106,8 @@ -- ^ Should not ever happen when you use this binding. deriving (Show, Read, Eq, Ord, Bounded, Enum) --- | Exception that is thrown when manipulation of FLAC metadata fails for --- some reason. +-- | The exception that is thrown when manipulation of FLAC metadata fails +-- for some reason. data MetaException = MetaGeneralProblem MetaChainStatus @@ -126,8 +127,8 @@ -- | A normalizing wrapper around 'ByteString' that makes sure that the -- 'ByteString' inside is a valid FLAC application name. You can create -- values of this type using Haskell string literals with --- @OverloadedStrings@ or with 'mkApplicationId'. Extract the inner --- 'ByteString' with 'unApplicationId'. +-- @OverloadedStrings@ or with the 'mkApplicationId' smart constructor. +-- Extract the inner 'ByteString' with 'unApplicationId'. newtype ApplicationId = ApplicationId ByteString deriving (Eq, Ord) @@ -151,7 +152,7 @@ unApplicationId :: ApplicationId -> ByteString unApplicationId (ApplicationId appId) = appId --- | The datatype represents a single point in a seek table metadata block. +-- | Single point in a seek table metadata block. data SeekPoint = SeekPoint { seekPointSampleNumber :: !Word64 @@ -163,8 +164,8 @@ -- ^ The number of samples in the target frame } deriving (Eq, Ord, Show, Read) --- | The data type represents CUE sheet as stored in FLAC metadata. This --- differs from traditional CUE sheets stored in “.cue” files (see +-- | CUE sheet as stored in FLAC metadata. This differs from traditional CUE +-- sheets stored in “.cue” files (see -- <https://hackage.haskell.org/package/cue-sheet> to work with those). data CueSheetData = CueSheetData @@ -192,10 +193,10 @@ , cueTracks :: ![CueTrack] -- ^ Collection of actual tracks in the CUE sheet, see 'CueTrack'. , cueLeadOutTrack :: !CueTrack - -- ^ The obligatory lead-out track, will be written with index 170. + -- ^ The obligatory lead-out track, will be written with the index 170. } deriving (Eq, Ord, Show, Read) --- | Data type representing a single track is CUE sheet. +-- | Single track in a CUE sheet. data CueTrack = CueTrack { cueTrackOffset :: !Word64 @@ -226,7 +227,7 @@ } deriving (Eq, Ord, Show, Read) -- | Type of picture FLAC metadata can contain. There may be several --- metadata blocks containing pictures of different “types”. +-- metadata blocks containing pictures of different types. data PictureType = PictureOther -- ^ Other diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/Metadata.hs new/flac-0.1.2/Codec/Audio/FLAC/Metadata.hs --- old/flac-0.1.1/Codec/Audio/FLAC/Metadata.hs 2017-01-03 20:03:47.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/Metadata.hs 2017-05-22 10:51:24.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -12,7 +12,7 @@ -- -- === How to use this module -- --- Just like other modules of this library, the API is file-centered — no +-- Just like the other modules of this library, the API is file-centered—no -- streaming support is available at this time (in libFLAC as well). -- Retrieving and editing metadata information is very easy, you only need -- three functions: 'runFlacMeta', 'retrieve', and @('=->')@. @@ -29,7 +29,7 @@ -- > retrieve (VorbisComment Artist) >>= liftIO . print -- -- Normally you would just return them packed in a tuple from the monad, of --- course. We print the values just for demonstration. +-- course. We print the values just for a demonstration. -- -- The next example shows how to set a couple of tags: -- @@ -50,14 +50,14 @@ -- -- === Low-level details -- --- The implementation uses the reference implementation of FLAC — libFLAC (C +-- The implementation uses the reference implementation of FLAC—libFLAC (C -- library) under the hood. This means you'll need at least version 1.3.0 of -- libFLAC (released 26 May 2013) installed for the binding to work. -- --- This module in particular uses level 2 metadata interface and it's not --- possible to choose other interface (such as level 0 and 1). This should --- not be of any concern to end-user, however, as level 2 supports more --- functionality than the other levels. +-- This module in particular uses the level 2 metadata interface and it's +-- not possible to choose other interface (such as level 0 and 1). However, +-- this should not be of any concern to the end-user, as the level 2 +-- supports more functionality than the other levels. {-# LANGUAGE CPP #-} {-# LANGUAGE ConstrainedClassMethods #-} @@ -171,11 +171,11 @@ , MonadCatch , MonadMask ) --- | Non-public shortcut for inner monad stack of 'FlacMeta'. +-- | A non-public shortcut for the inner monad stack of 'FlacMeta'. type Inner a = ReaderT Context IO a --- | Context that 'Inner' passes around. +-- | The context that 'Inner' passes around. data Context = Context { metaChain :: MetaChain -- ^ Metadata chain @@ -188,7 +188,7 @@ data MetaSettings = MetaSettings { metaAutoVacuum :: !Bool -- ^ Whether to traverse all metadata blocks just before padding sorting - -- (if enabled, see 'metaSortPadding') and writing data to file, + -- (if enabled, see 'metaSortPadding') and writing data to a file, -- deleting all metadata blocks that appear to be empty, e.g. vorbis -- comment block without any comments (tags) in it. Default value: -- 'True'. @@ -204,7 +204,7 @@ -- entire file. Default value: 'True'. , metaPreserveFileStats :: !Bool -- ^ If 'True', the owner and modification time will be preserved even - -- if new FLAC file is written (this is for the cases when we need to + -- if a new FLAC file is written (this is for the cases when we need to -- write entire FLAC file and thus a copy of the file is written). -- Default value: 'True'. } deriving (Show, Read, Eq, Ord) @@ -220,11 +220,12 @@ -- subtle and rather low-level details of metadata editing, just pass 'def' -- unless you know what you are doing. 'FilePath' specifies location of FLAC -- file to read\/edit in the file system. 'FlacMeta' is a monadic action --- that describes what to do with metadata. Compose it from 'retrieve' and --- @('=->')@. +-- that describes what to do with the metadata. Compose it from 'retrieve' +-- and @('=->')@. -- --- The action will throw 'Data.Text.Encoding.Error.UnicodeException' if text --- data like Vorbis Comment entries cannot be read as UTF-8-encoded value. +-- The action will throw 'Data.Text.Encoding.Error.UnicodeException' if the +-- text data like Vorbis Comment entries cannot be read as a UTF-8-encoded +-- value. -- -- If a problem occurs, 'MetaException' is thrown with attached -- 'MetaChainStatus' that should help investigating what went wrong. @@ -252,11 +253,12 @@ ---------------------------------------------------------------------------- -- Meta values --- | A class for types that specify which metadata attributes to +-- | A class for the types that specify which metadata attributes to -- read\/write. It's not expected that users of the library will define new --- metadata attributes other than via combination of existing ones, which is --- also useful. For example, 'Duration' and 'BitRate' are not read from FLAC --- file metadata directly, but defined in terms of other attributes. +-- metadata attributes other than via combination of the existing ones, +-- which is also useful. For example, 'Duration' and 'BitRate' are not read +-- from FLAC file metadata directly, but defined in terms of other +-- attributes. class MetaValue a where @@ -266,8 +268,8 @@ type MetaType a :: * - -- | Associated type of kind 'Constraint' that controls whether particular - -- piece of metadata is writable or not. + -- | Associated type of the kind 'Constraint' that controls whether a + -- particular piece of metadata is writable or not. type MetaWritable a :: Constraint @@ -277,7 +279,7 @@ retrieve :: a -> FlacMeta (MetaType a) - -- | Given value that determines what to write and a value to write, + -- | Given a value that determines what to write and a value to write, -- add\/replace a piece of metadata information. This is how you edit -- metadata. To delete something, set it to 'Nothing' (well, it should be -- something that /can be missing/, for example you cannot delete @@ -511,7 +513,7 @@ -- | Seek table as a 'Vector' of 'SeekPoint's. Seek points within a table -- must be sorted in ascending order by sample number. If you try to write --- an invalid seek table, 'MetaException' will be raised using +-- an invalid seek table, 'MetaException' will be raised using the -- 'MetaInvalidSeekTable' constructor. -- -- __Writable__ optional attribute represented as a @'Maybe' ('Vector' @@ -578,11 +580,11 @@ -- entries. data VorbisField - = Title -- ^ Track\/Work name. + = Title -- ^ Track\/work name. | Version -- ^ The version field may be used to differentiate -- multiple versions of the same track title in a -- single collection (e.g. remix info). - | Album -- ^ The collection name to which this track belongs + | Album -- ^ The collection name to which this track belongs. | TrackNumber -- ^ The track number of this piece if part of a -- specific larger collection or album. | TrackTotal -- ^ Total number of tracks in the collection this @@ -616,7 +618,8 @@ -- distributors of the track. This could be a URL, an -- email address, the physical address of the -- producing label. - | ISRC -- ^ ISRC number for the track, see <http://isrc.ifpi.org/en>. + | ISRC -- ^ ISRC number for the track, see + -- <http://isrc.ifpi.org/en>. | Rating -- ^ Rating, usually mapped as 1–5 stars with actual -- values “20”, “40”, “60”, “80”, “100” stored. | RGTrackPeak -- ^ Replay gain track peak, e.g. “0.99996948”. @@ -643,7 +646,7 @@ setModified -- | A CUE sheet stored in FLAC metadata. If you try to write an invalid CUE --- sheet 'MetaException' will be raised with 'MetaInvalidCueSheet' +-- sheet 'MetaException' will be raised with the 'MetaInvalidCueSheet' -- constructor which includes a 'Text' value with explanation why the CUE -- sheet was considered invalid. Import "Codec.Audio.FLAC.Metadata.CueSheet" -- to manipulate 'CueSheetData' and 'CueTrack's. @@ -744,7 +747,7 @@ ---------------------------------------------------------------------------- -- Debugging and testing --- | Return list of all 'MetadataType's of metadata blocks detected in +-- | Return a list of all 'MetadataType's of metadata blocks detected in -- order. getMetaChain :: FlacMeta (NonEmpty MetadataType) @@ -772,11 +775,11 @@ liftIO . (iteratorGetBlock >=> f) -- | Given 'MetadataType' (type of metadata block) and an action that uses --- an iterator which points to a block of specified type, perform that +-- an iterator which points to a block of the specified type, perform that -- action and return its result wrapped in 'Just' if block of requested type --- was found, 'Nothing' otherwise. If there are several blocks of given --- type, action will be performed for each of them, but only first result --- will be returned. +-- was found, 'Nothing' otherwise. If there are several blocks of the given +-- type, action will be performed for each of them, but only the first +-- result will be returned. withMetaBlock :: MetadataType -- ^ Type of block to find @@ -810,8 +813,8 @@ where idCheck = fmap (== givenId) . liftIO . getApplicationId --- | Just like 'applicationBlock', but creates a new 'ApplicationBlock' with --- given id if no such block can be found. +-- | Just like 'withApplicationBlock', but creates a new 'ApplicationBlock' +-- with given id if no such block can be found. withApplicationBlock' :: ApplicationId -- ^ Application id to find @@ -910,7 +913,7 @@ liftBool (iteratorDeleteBlock i) return Nothing --- | Determine if given metadata block is empty. +-- | Determine if a given 'Metadata' block is empty. isMetaBlockEmpty :: MonadIO m => MetadataType -> Metadata -> m Bool isMetaBlockEmpty SeekTableBlock block = @@ -946,7 +949,7 @@ modified <- asks metaModified liftIO (writeIORef modified True) --- | Map 'VorbisField' to its ASCII name in form of a 'ByteString'. +-- | Map 'VorbisField' to its ASCII name in the form of a 'ByteString'. vorbisFieldName :: VorbisField -> ByteString vorbisFieldName RGTrackPeak = "REPLAYGAIN_TRACK_PEAK" @@ -955,7 +958,7 @@ vorbisFieldName RGAlbumGain = "REPLAYGAIN_ALBUM_GAIN" vorbisFieldName field = (B8.pack . fmap toUpper . show) field --- | Map number of channels to a 'Set' of 'SpeakerPosition's as per FLAC +-- | Map the number of channels to a 'Set' of 'SpeakerPosition's as per FLAC -- specification. toChannelMask :: Word32 -> Set SpeakerPosition diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamDecoder/Internal/Helpers.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamDecoder/Internal/Helpers.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamDecoder/Internal/Helpers.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamDecoder/Internal/Helpers.hs 2017-05-22 10:51:46.000000000 +0200 @@ -3,11 +3,11 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- --- Wrappers around helpers written to help work with stream decoder. +-- Wrappers around helpers written to help work with the stream decoder. module Codec.Audio.FLAC.StreamDecoder.Internal.Helpers ( decoderInitHelper ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamDecoder/Internal/Types.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamDecoder/Internal/Types.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamDecoder/Internal/Types.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamDecoder/Internal/Types.hs 2017-05-22 10:52:28.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -21,7 +21,7 @@ import Data.Void import Foreign --- | An opaque newtype wrapper around 'Ptr' 'Void', serves to represent +-- | An opaque newtype wrapper around @'Ptr' 'Void'@, serves to represent -- point to decoder instance. newtype Decoder = Decoder (Ptr Void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamDecoder/Internal.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamDecoder/Internal.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamDecoder/Internal.hs 2017-01-01 22:39:43.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamDecoder/Internal.hs 2017-05-22 10:56:38.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -28,7 +28,7 @@ import Foreign.C.Types -- | Create and use a 'Decoder'. The decoder is guaranteed to be freed even --- in case of exception. +-- in the case of exception. -- -- If memory for the encoder cannot be allocated, corresponding -- 'DecoderException' is raised. @@ -40,8 +40,8 @@ (DecoderFailed DecoderStateMemoryAllocationError) Just x -> f x --- | Create a new stream decoder instance with default settings. In the case --- of memory allocation problem 'Nothing' is returned. +-- | Create a new stream decoder instance with the default settings. In the +-- case of memory allocation problem 'Nothing' is returned. decoderNew :: IO (Maybe Decoder) decoderNew = maybePtr <$> c_decoder_new @@ -59,7 +59,7 @@ -- | Set MD5 signature checking. If 'True' the decoder will compute the MD5 -- signature of the unencoded audio data while decoding and compare it to --- the signature from the stream info block +-- the signature from the stream info block. decoderSetMd5Checking :: Decoder -> Bool -> IO Bool decoderSetMd5Checking = c_decoder_set_md5_checking @@ -67,7 +67,7 @@ foreign import ccall unsafe "FLAC__stream_decoder_set_md5_checking" c_decoder_set_md5_checking :: Decoder -> Bool -> IO Bool --- | Get current decoder state. +-- | Get the current decoder state. decoderGetState :: Decoder -> IO DecoderState decoderGetState = fmap toEnum' . c_decoder_get_state @@ -75,7 +75,7 @@ foreign import ccall unsafe "FLAC__stream_decoder_get_state" c_decoder_get_state :: Decoder -> IO CUInt --- | Get frame size as number of inter-channel samples of last decoded +-- | Get frame size as a number of inter-channel samples of last decoded -- frame. decoderGetBlockSize :: Decoder -> IO Word32 @@ -92,7 +92,7 @@ foreign import ccall unsafe "FLAC__stream_decoder_process_single" c_decoder_process_single :: Decoder -> IO Bool --- | Decode until the end of the metadata. We use this to skip to audio +-- | Decode until the end of the metadata. We use this to skip to the audio -- stream. decoderProcessUntilEndOfMetadata :: Decoder -> IO Bool @@ -102,7 +102,7 @@ c_decoder_process_until_end_of_metadata :: Decoder -> IO Bool -- | Finish the decoding process and release resources (also resets decoder --- and its settings). Return 'False' in case of trouble. +-- and its settings). Return 'False' in the case of trouble. decoderFinish :: Decoder -> IO Bool decoderFinish = c_decoder_finish diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamDecoder.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamDecoder.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamDecoder.hs 2017-01-02 22:21:21.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamDecoder.hs 2017-05-22 11:19:43.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -17,14 +17,14 @@ -- -- === Low-level details -- --- The implementation uses the reference implementation of FLAC — libFLAC (C +-- The implementation uses the reference implementation of FLAC—libFLAC (C -- library) under the hood. This means you'll need at least version 1.3.0 of -- libFLAC (released 26 May 2013) installed for the binding to work. -- --- The binding works with minimal overhead compared to pure C --- implementation. Decoding speed is equal to that of @flac@ command line --- tool. Memory consumption is minimal and remains constant regardless of --- size of file to decode. +-- The binding works with minimal overhead compared to the C implementation. +-- Decoding speed is equal to that of @flac@ command line tool. Memory +-- consumption is minimal and remains constant regardless of the size of +-- file to decode. {-# LANGUAGE RecordWildCards #-} @@ -53,7 +53,7 @@ import System.Directory import System.IO --- | Parameters of stream decoder. +-- | Parameters of the stream decoder. data DecoderSettings = DecoderSettings { decoderMd5Checking :: !Bool @@ -127,7 +127,7 @@ -- Helpers -- | Execute an initializing action that returns 'False' on failure and take --- care of error reporting. In case of trouble, @'DecoderInitFailed' +-- care of error reporting. In the case of trouble, @'DecoderInitFailed' -- 'DecoderInitStatusAlreadyInitialized'@ is thrown. liftInit :: IO Bool -> IO () @@ -136,13 +136,13 @@ t = throwIO (DecoderInitFailed DecoderInitStatusAlreadyInitialized) -- | Execute an action that returns 'False' on failure into taking care of --- error reporting. In case of trouble @'EncoderFailed'@ with encoder status --- attached is thrown. +-- error reporting. In the case of trouble @'EncoderFailed'@ with encoder +-- status attached is thrown. liftBool :: Decoder -> IO Bool -> IO () liftBool encoder m = liftIO m >>= bool (throwState encoder) (return ()) --- | Get 'EncoderState' from given 'Encoder' and throw it immediately. +-- | Get 'DecoderState' from a given 'Decoder' and throw it immediately. throwState :: Decoder -> IO a throwState = decoderGetState >=> throwIO . DecoderFailed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder/Apodization.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder/Apodization.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder/Apodization.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder/Apodization.hs 2017-05-22 07:44:36.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder/Internal/Helpers.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder/Internal/Helpers.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder/Internal/Helpers.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder/Internal/Helpers.hs 2017-05-22 11:20:01.000000000 +0200 @@ -3,11 +3,11 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- --- Wrappers around helpers written to help work with stream encoder. +-- Wrappers around helpers written to help work with the stream encoder. {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE OverloadedStrings #-} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder/Internal/Types.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder/Internal/Types.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder/Internal/Types.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder/Internal/Types.hs 2017-05-22 12:12:04.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -23,8 +23,8 @@ import Foreign import Numeric.Natural --- | An opaque newtype wrapper around 'Ptr' 'Void', serves to represent --- pointer to encoder instance. +-- | An opaque newtype wrapper around @'Ptr' 'Void'@, serves to represent a +-- pointer to an encoder instance. newtype Encoder = Encoder (Ptr Void) @@ -41,9 +41,9 @@ | EncoderInitStatusInvalidCallbacks -- ^ A required callback was not supplied. | EncoderInitStatusInvalidNumberOfChannels - -- ^ The encoder has an invalid setting for number of channels. + -- ^ The encoder has an invalid setting for the number of channels. | EncoderInitStatusInvalidBitsPerSample - -- ^ The encoder has an invalid setting for bits-per-sample. FLAC + -- ^ The encoder has an invalid setting for the bits-per-sample. FLAC -- supports 4-32 bps but the reference encoder currently supports only -- up to 24 bps. | EncoderInitStatusInvalidSampleRate diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder/Internal.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder/Internal.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder/Internal.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder/Internal.hs 2017-05-22 12:19:25.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -47,7 +47,7 @@ import qualified Data.ByteString as B -- | Create and use an 'Encoder'. The encoder is guaranteed to be freed even --- in case of exception. +-- in the case of exception. -- -- If memory for the encoder cannot be allocated, corresponding -- 'EncoderException' is raised. @@ -59,8 +59,8 @@ (EncoderFailed EncoderStateMemoryAllocationError) Just x -> f x --- | Create a new stream encoder instance with default settings. In the case --- of memory allocation problem 'Nothing' is returned. +-- | Create a new stream encoder instance with the default settings. In the +-- case of memory allocation problem 'Nothing' is returned. encoderNew :: IO (Maybe Encoder) encoderNew = maybePtr <$> c_encoder_new @@ -86,7 +86,7 @@ foreign import ccall unsafe "FLAC__stream_encoder_set_channels" c_encoder_set_channels :: Encoder -> CUInt -> IO Bool --- | Set the same resolution of the input to be encoded. Return 'False' if +-- | Set the sample resolution of the input to be encoded. Return 'False' if -- encoder is already initialized. encoderSetBitsPerSample :: Encoder -> Word32 -> IO Bool @@ -223,7 +223,7 @@ foreign import ccall unsafe "FLAC__stream_encoder_set_total_samples_estimate" c_encoder_set_total_samples_estimate :: Encoder -> Word64 -> IO Bool --- | Set the “verify” flag. If true, the encoder will verify it's own +-- | Set the “verify” flag. If 'True', the encoder will verify it's own -- encoded output by feeding it through an internal decoder and comparing -- the original signal against the decoded signal. If a mismatch occurs, the -- process call will return false. Note that this will slow the encoding @@ -235,7 +235,7 @@ foreign import ccall unsafe "FLAC__stream_encoder_set_verify" c_encoder_set_verify :: Encoder -> Bool -> IO Bool --- | Get current encoder state. +-- | Get the current encoder state. encoderGetState :: Encoder -> IO EncoderState encoderGetState = fmap toEnum' . c_encoder_get_state diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder.hs new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder.hs --- old/flac-0.1.1/Codec/Audio/FLAC/StreamEncoder.hs 2017-01-02 22:22:04.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/StreamEncoder.hs 2017-05-22 12:21:46.000000000 +0200 @@ -3,7 +3,7 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- @@ -17,14 +17,14 @@ -- -- === Low-level details -- --- The implementation uses the reference implementation of FLAC — libFLAC (C +-- The implementation uses the reference implementation of FLAC—libFLAC (C -- library) under the hood. This means you'll need at least version 1.3.0 of -- libFLAC (released 26 May 2013) installed for the binding to work. -- --- The binding works with minimal overhead compared to pure C --- implementation. Encoding speed is equal to that of @flac@ command line --- tool. Memory consumption is minimal and remains constant regardless of --- size of file to decode. +-- The binding works with minimal overhead compared to the C implementation. +-- Encoding speed is equal to that of @flac@ command line tool. Memory +-- consumption is minimal and remains constant regardless of size of file to +-- decode. {-# LANGUAGE RecordWildCards #-} @@ -50,7 +50,7 @@ import Data.Word import System.Directory --- | Parameters of stream encoder. Note that the 'encoderCompression' +-- | Parameters of the stream encoder. Note that the 'encoderCompression' -- parameter influences a number of other parameters on its own as specified -- here -- <https://xiph.org/flac/api/group__flac__stream__encoder.html#gae49cf32f5256cb47eecd33779493ac85>. @@ -176,7 +176,7 @@ (liftInit . encoderSetMinResidualPartitionOrder e . fst) forM_ encoderResidualPartitionOrders (liftInit . encoderSetMaxResidualPartitionOrder e . snd) - -- Set the estimate (which is likely correct!), to avoid rewrite of + -- Set the estimate (which is likely correct), to avoid rewrite of -- STREAMINFO metadata block after encoding. liftInit (encoderSetTotalSamplesEstimate e totalSamples) withTempFile' opath $ \otemp -> do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/Codec/Audio/FLAC/Util.hs new/flac-0.1.2/Codec/Audio/FLAC/Util.hs --- old/flac-0.1.1/Codec/Audio/FLAC/Util.hs 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/Codec/Audio/FLAC/Util.hs 2017-05-22 09:42:57.000000000 +0200 @@ -3,12 +3,14 @@ -- Copyright : © 2016–2017 Mark Karpov -- License : BSD 3 clause -- --- Maintainer : Mark Karpov <[email protected]> +-- Maintainer : Mark Karpov <[email protected]> -- Stability : experimental -- Portability : portable -- -- Random non-public helpers. +{-# LANGUAGE FlexibleContexts #-} + module Codec.Audio.FLAC.Util ( maybePtr , toEnum' @@ -19,13 +21,13 @@ where import Control.Exception +import Data.Coerce import Data.Text (Text) import Foreign import Foreign.C.String import System.Directory import System.FilePath import System.IO -import Unsafe.Coerce import qualified Data.ByteString as B import qualified Data.Text as T import qualified Data.Text.Encoding as T @@ -34,10 +36,10 @@ -- it is, otherwise return the given pointer unchanged. Needless to say that -- this thing is unsafe. -maybePtr :: a -> Maybe a +maybePtr :: Coercible a (Ptr p) => a -> Maybe a maybePtr a - | unsafeCoerce a == nullPtr = Nothing - | otherwise = Just a + | coerce a == nullPtr = Nothing + | otherwise = Just a -- | A version of 'toEnum' that converts from any 'Integral' type. @@ -59,21 +61,21 @@ withCStringText :: Text -> (CString -> IO a) -> IO a withCStringText text = B.useAsCString bytes - where bytes = T.encodeUtf8 (T.filter (/= '\0') text) + where + bytes = T.encodeUtf8 (T.filter (/= '\0') text) -- | A custom wrapper for creating temporary files in the same directory as -- given file. 'Handle' is not opened, you only get 'FilePath' in the -- callback. withTempFile' :: FilePath -> (FilePath -> IO a) -> IO a -withTempFile' path = bracketOnError acquire cleanup +withTempFile' path m = bracketOnError acquire cleanup $ + \(path', h) -> hClose h >> m path' where - acquire = do - (path',h) <- openBinaryTempFile dir file - hClose h - return path' - cleanup = ignoringIOErrors . removeFile -- in case exception strikes - -- before we create the actual file + acquire = openBinaryTempFile dir file + -- NOTE We need ignoringIOErrors in the case exception strikes before we + -- create the actual file. + cleanup = ignoringIOErrors . removeFile . fst dir = takeDirectory path file = takeFileName path diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/README.md new/flac-0.1.2/README.md --- old/flac-0.1.1/README.md 2017-01-03 01:08:58.000000000 +0100 +++ new/flac-0.1.2/README.md 2017-05-22 12:27:10.000000000 +0200 @@ -17,7 +17,12 @@ * [License](#license) This is a complete high-level Haskell binding -to [libFLAC](https://xiph.org/flac/). +to [libFLAC](https://xiph.org/flac/)—reference FLAC implementation. + +> As the maintainer of the C FLAC code base, I must say I'm impressed. Quite +> honestly, I think the C API is horrible. +> +> —[Erik de Castro Lopo](https://www.reddit.com/r/haskell/comments/5lyk70/announcing_flac_a_complete_highlevel_binding_to/dc00yb7/) ## Aims of the project @@ -31,8 +36,7 @@ supported by this package. This is in the hope to prevent fragmentation and proliferation of different libraries to work with FLAC with each of them covering only some 80% of functionality the library author needed and - neglecting other 20%. A lot of effort was put to make the first libFLAC - binding so good so you don't need another one. + neglecting other 20%. * Be as efficient as the underlying C implementation, avoid adding any sort of overhead (memory/speed/or otherwise). @@ -54,24 +58,24 @@ love to manipulate. We have [`hsndfile`](https://hackage.haskell.org/package/hsndfile), but I don't really want to read FLAC data into a buffer or Haskell `Vector`. How simple -it is (if possible) to decode a FLAC file using that library? How simple it -is to figure out where to begin with such a task? With `flac` it's -`decodeFlac def "myfile.falc" "myfile.wav"` — done, average song in a -fraction of second. +is it (if possible) to decode a FLAC file using that library? How simple is +it to figure out where to begin with such a task? With `flac` it's +`decodeFlac def "myfile.flac" "myfile.wav"`—done, average song in a fraction +of second. ## Provided functionality Here we go: -* Metadata — full support for reading/writing/deleting of all audio +* Metadata—full support for reading/writing/deleting of all audio parameters, application data, seek tables, vorbis comments of all sorts, CUE sheets, and even pictures. -* Stream decoder — simple interface for decoding to vanilla WAVE and RF64 +* Stream decoder—simple interface for decoding to vanilla WAVE and RF64 (support for files larger than 4 Gb). -* Stream encoder — a lot of options to tweak, everything that libFLAC has, - but you can also use `def` and just encode vanilla WAVE or RF64 file into +* Stream encoder—a lot of options to tweak, everything that libFLAC has, but + you can also use `def` and just encode vanilla WAVE or RF64 file into native FLAC. Simple and efficient. ## Limitations @@ -83,7 +87,7 @@ * It's not possible to use custom callbacks for printing decoding/encoding progress in real-time and stuff like that. Not a big issue IMO, given that - we get easy and safe API instead. + we get nice and safe API instead. * Only works on little-endian architectures so far, I'll accept a PR lifting this limitation. @@ -92,21 +96,20 @@ The best way to start using `flac` is to take a look at [the Haddocks](https://hackage.haskell.org/package/flac). Encoding and -decoding is so simple that a baby could handle it, and for metadata there -are examples and a lot of details in the docs. Feel free to ask me question -if you get stuck with something though. +decoding are so simple that even a baby could handle it, and for metadata +there are examples and a lot of details in the docs. Feel free to ask me a +question if you get stuck with something though. ## Related packages The following packages are designed to be used with `flac`: -* [`flac-picture`](https://hackage.haskell.org/package/flac-picture) — add +* [`flac-picture`](https://hackage.haskell.org/package/flac-picture)—add pictures to FLAC metadata easier. ## Contribution -Please kindly direct all issues, bugs, and questions -to +Please kindly direct all issues, bugs, and questions to [the GitHub issue tracker for this project](https://github.com/mrkkrp/flac/issues). Pull requests are also welcome and will be reviewed quickly. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/cbits/metadata_level2_helpers.c new/flac-0.1.2/cbits/metadata_level2_helpers.c --- old/flac-0.1.1/cbits/metadata_level2_helpers.c 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/cbits/metadata_level2_helpers.c 2017-05-22 07:40:47.000000000 +0200 @@ -1,36 +1,3 @@ -/* - * This file is part of ‘flac’ package. - * - * Copyright © 2016–2017 Mark Karpov - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name Mark Karpov nor the names of contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - #include "metadata_level2_helpers.h" /* Stream info */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/cbits/metadata_level2_helpers.h new/flac-0.1.2/cbits/metadata_level2_helpers.h --- old/flac-0.1.1/cbits/metadata_level2_helpers.h 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/cbits/metadata_level2_helpers.h 2017-05-22 07:40:47.000000000 +0200 @@ -1,36 +1,3 @@ -/* - * This file is part of ‘flac’ package. - * - * Copyright © 2016–2017 Mark Karpov - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name Mark Karpov nor the names of contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - #ifndef FLAC__METADATA_LEVEL2_HELPERS_H #define FLAC__METADATA_LEVEL2_HELPERS_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/cbits/stream_decoder_helpers.c new/flac-0.1.2/cbits/stream_decoder_helpers.c --- old/flac-0.1.1/cbits/stream_decoder_helpers.c 2017-01-01 22:39:43.000000000 +0100 +++ new/flac-0.1.2/cbits/stream_decoder_helpers.c 2017-05-22 07:40:47.000000000 +0200 @@ -1,36 +1,3 @@ -/* - * This file is part of ‘flac’ package. - * - * Copyright © 2016–2017 Mark Karpov - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name Mark Karpov nor the names of contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - #include "stream_decoder_helpers.h" static unsigned round_to_bytes(unsigned bits) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/cbits/stream_decoder_helpers.h new/flac-0.1.2/cbits/stream_decoder_helpers.h --- old/flac-0.1.1/cbits/stream_decoder_helpers.h 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/cbits/stream_decoder_helpers.h 2017-05-22 07:40:47.000000000 +0200 @@ -1,36 +1,3 @@ -/* - * This file is part of ‘flac’ package. - * - * Copyright © 2016–2017 Mark Karpov - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name Mark Karpov nor the names of contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - #ifndef FLAC__STREAM_DECODER_HELPERS_H #define FLAC__STREAM_DECODER_HELPERS_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/cbits/stream_encoder_helpers.c new/flac-0.1.2/cbits/stream_encoder_helpers.c --- old/flac-0.1.1/cbits/stream_encoder_helpers.c 2017-01-01 22:39:43.000000000 +0100 +++ new/flac-0.1.2/cbits/stream_encoder_helpers.c 2017-05-22 07:40:47.000000000 +0200 @@ -1,36 +1,3 @@ -/* - * This file is part of ‘flac’ package. - * - * Copyright © 2016–2017 Mark Karpov - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name Mark Karpov nor the names of contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - #include "stream_encoder_helpers.h" static unsigned round_to_bytes(unsigned bits) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/cbits/stream_encoder_helpers.h new/flac-0.1.2/cbits/stream_encoder_helpers.h --- old/flac-0.1.1/cbits/stream_encoder_helpers.h 2017-01-01 12:46:08.000000000 +0100 +++ new/flac-0.1.2/cbits/stream_encoder_helpers.h 2017-05-22 07:40:47.000000000 +0200 @@ -1,36 +1,3 @@ -/* - * This file is part of ‘flac’ package. - * - * Copyright © 2016–2017 Mark Karpov - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name Mark Karpov nor the names of contributors may be used to - * endorse or promote products derived from this software without specific - * prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - #ifndef FLAC__STREAM_ENCODER_HELPERS_H #define FLAC__STREAM_ENCODER_HELPERS_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/flac.cabal new/flac-0.1.2/flac.cabal --- old/flac-0.1.1/flac.cabal 2017-01-04 11:07:53.000000000 +0100 +++ new/flac-0.1.2/flac.cabal 2017-05-22 13:21:14.000000000 +0200 @@ -1,42 +1,11 @@ --- --- Cabal configuration for ‘flac’ package. --- --- Copyright © 2016–2017 Mark Karpov <[email protected]> --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- * Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- * Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- * Neither the name Mark Karpov nor the names of contributors may be used --- to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY --- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED --- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE --- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY --- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL --- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS --- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) --- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, --- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN --- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. - name: flac -version: 0.1.1 +version: 0.1.2 cabal-version: >= 1.10 +tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.2.1 license: BSD3 license-file: LICENSE.md -author: Mark Karpov <[email protected]> -maintainer: Mark Karpov <[email protected]> +author: Mark Karpov <[email protected]> +maintainer: Mark Karpov <[email protected]> homepage: https://github.com/mrkkrp/flac bug-reports: https://github.com/mrkkrp/flac/issues category: Codec, Audio @@ -64,13 +33,13 @@ , bytestring >= 0.2 && < 0.11 , containers >= 0.5 && < 0.6 , data-default-class - , directory >= 1.2.2 && < 1.3 + , directory >= 1.2.2 && < 1.4 , exceptions >= 0.6 && < 0.9 , filepath >= 1.2 && < 1.5 , mtl >= 2.0 && < 3.0 , text >= 0.2 && < 1.3 , transformers >= 0.4 && < 0.6 - , vector >= 0.10 && < 0.12 + , vector >= 0.10 && < 0.13 , wave >= 0.1.2 && < 0.2 if !impl(ghc >= 8.0) build-depends: semigroups == 0.18.* @@ -91,7 +60,6 @@ , Codec.Audio.FLAC.StreamEncoder.Internal.Helpers , Codec.Audio.FLAC.StreamEncoder.Internal.Types , Codec.Audio.FLAC.Util - extra-libraries: FLAC c-sources: cbits/metadata_level2_helpers.c , cbits/stream_decoder_helpers.c , cbits/stream_encoder_helpers.c @@ -111,13 +79,13 @@ build-depends: base >= 4.8 && < 5.0 , bytestring >= 0.2 && < 0.11 , data-default-class - , directory >= 1.2.2 && < 1.3 + , directory >= 1.2.2 && < 1.4 , filepath >= 1.2 && < 1.5 - , flac >= 0.1.1 + , flac , hspec >= 2.0 && < 3.0 , temporary >= 1.1 && < 1.3 , transformers >= 0.4 && < 0.6 - , vector >= 0.10 && < 0.12 + , vector >= 0.10 && < 0.13 , wave >= 0.1.2 && < 0.2 if !impl(ghc >= 8.0) build-depends: semigroups == 0.18.* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/tests/Codec/Audio/FLAC/MetadataSpec.hs new/flac-0.1.2/tests/Codec/Audio/FLAC/MetadataSpec.hs --- old/flac-0.1.1/tests/Codec/Audio/FLAC/MetadataSpec.hs 2017-01-03 20:03:54.000000000 +0100 +++ new/flac-0.1.2/tests/Codec/Audio/FLAC/MetadataSpec.hs 2017-05-22 07:40:47.000000000 +0200 @@ -1,35 +1,3 @@ --- --- Test suite for metadata manipulation. --- --- Copyright © 2016–2017 Mark Karpov <[email protected]> --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- * Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- * Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- * Neither the name Mark Karpov nor the names of contributors may be used --- to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY --- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED --- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE --- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY --- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL --- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS --- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) --- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, --- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN --- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. - {-# LANGUAGE OverloadedStrings #-} module Codec.Audio.FLAC.MetadataSpec diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flac-0.1.1/tests/Codec/Audio/FLAC/StreamEncoderSpec.hs new/flac-0.1.2/tests/Codec/Audio/FLAC/StreamEncoderSpec.hs --- old/flac-0.1.1/tests/Codec/Audio/FLAC/StreamEncoderSpec.hs 2017-01-01 22:39:43.000000000 +0100 +++ new/flac-0.1.2/tests/Codec/Audio/FLAC/StreamEncoderSpec.hs 2017-05-22 07:40:47.000000000 +0200 @@ -1,35 +1,3 @@ --- --- Test suite for stream encoder. --- --- Copyright © 2016–2017 Mark Karpov <[email protected]> --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- --- * Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- * Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- * Neither the name Mark Karpov nor the names of contributors may be used --- to endorse or promote products derived from this software without --- specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY --- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED --- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE --- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY --- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL --- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS --- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) --- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, --- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN --- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE --- POSSIBILITY OF SUCH DAMAGE. - {-# LANGUAGE RecordWildCards #-} module Codec.Audio.FLAC.StreamEncoderSpec
