[SCM] libgroove/master: Imported Upstream version 4.2.1

andrewrk-guest at users.alioth.debian.org andrewrk-guest at users.alioth.debian.org
Tue Oct 7 17:51:19 UTC 2014


The following commit has been merged in the master branch:
commit 29c44dd6a8dacee66428b634cdb30caabe2a7f23
Author: Andrew Kelley <superjoe30 at gmail.com>
Date:   Tue Oct 7 17:42:45 2014 +0000

    Imported Upstream version 4.2.1

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 70ca61f..13b0b99 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### Version 4.2.1 (2014-10-07)
+
+ * fix build on GNU/hurd
+
 ### Version 4.2.0 (2014-09-25)
 
  * build: remove bundled dependencies
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fae4426..417a4b2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
 set(LIBGROOVE_STATUS "yes")
 set(LIBGROOVE_VERSION_MAJOR 4)
 set(LIBGROOVE_VERSION_MINOR 2)
-set(LIBGROOVE_VERSION_PATCH 0)
+set(LIBGROOVE_VERSION_PATCH 1)
 set(LIBGROOVE_VERSION "${LIBGROOVE_VERSION_MAJOR}.${LIBGROOVE_VERSION_MINOR}.${LIBGROOVE_VERSION_PATCH}")
 message("Configuring libgroove version ${LIBGROOVE_VERSION}")
 file(GLOB_RECURSE LIBGROOVE_SOURCES ${CMAKE_SOURCE_DIR}/groove/*.c)
diff --git a/README.md b/README.md
index 1ff2098..47c3f03 100644
--- a/README.md
+++ b/README.md
@@ -1,153 +1,167 @@
-# libgroove
+libgroove
+=========
 
-This library provides decoding and encoding of audio on a playlist.
-It is intended to be used as a backend for music player applications, however
-it is generic enough to be used as a backend for any streaming audio processing
+This library provides decoding and encoding of audio on a playlist. It is
+intended to be used as a backend for music player applications. That said, it is
+also generic enough to be used as a backend for any streaming audio processing
 utility.
 
-## Features
-
- * Uses [libav](http://www.libav.org/) for robust decoding and encoding.
-   - [list of supported formats](http://www.libav.org/general.html#Supported-File-Formats-and-Codecs)
- * Add and remove entries on a playlist for gapless playback.
- * Supports idempotent pause, play, and seek.
- * Per-playlist-item gain adjustment so you can implement loudness compensation
-   without audio glitches.
- * Read and write metadata tags.
- * Extensible sink-based interface. A sink provides resampling
-   and keeps its buffer full. Types of sinks:
-   * **raw sink** - provides reference-counted raw audio buffers you can do
-     whatever you like with. For example a real-time audio visualization.
-     All other sink types are built on top of this one.
-   * **player sink** - sends frames to a sound device.
-   * **encoder sink** - provides encoded audio buffers. For example you could
-     use this to create an HTTP audio stream.
-   * **loudness scanner sink** - uses the [EBU R 128](http://tech.ebu.ch/loudness)
-     standard to detect loudness. The values it produces are compatible with
-     [ReplayGain](http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification).
-   * **fingerprint sink** - uses [chromaprint](acoustid.org/chromaprint) to
-     generate unique song IDs that can be used with the acoustid service.
- * Thread-safe.
- * Example programs included:
-   * `playlist` - play a series of songs with gapless playback
-   * `metadata` - read or update song metadata
-   * `replaygain` - report the suggested replaygain for a set of files
-   * `transcode` - transcode one or more files into one output file
-   * `fingerprint` - generate acoustid fingerprints for one or more files
-
-## Dependencies
+Features
+--------
+
+* Uses [libav](http://www.libav.org/) for robust decoding and encoding. A list
+  of supported file formats and codecs [is
+  available](http://www.libav.org/general.html#Supported-File-Formats-and-Codecs).
+* Add and remove entries on a playlist for gapless playback.
+* Supports idempotent pause, play, and seek.
+* Per-playlist-item gain adjustment so you can implement loudness compensation
+  without audio glitches.
+* Read and write metadata tags.
+* Extensible sink-based interface. A sink provides resampling and keeps its
+  buffer full. Types of sinks:
+  * **raw sink** - Provides reference-counted raw audio buffers you can do
+    whatever you like with. For example a real-time audio visualization. All
+    other sink types are built on top of this one.
+  * **player sink** - Sends frames to a sound device.
+  * **encoder sink** - Provides encoded audio buffers. For example, you could
+    use this to create an HTTP audio stream.
+  * **loudness scanner sink** - Uses the [EBU R
+    128](http://tech.ebu.ch/loudness) standard to detect loudness. The values it
+    produces are compatible with the
+    [ReplayGain](http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification)
+    specification.
+  * **fingerprint sink** - Uses [chromaprint](acoustid.org/chromaprint) to
+    generate unique song IDs that can be used with the acoustid service.
+* Thread-safe.
+* Example programs included:
+  * `playlist` - Play a series of songs with gapless playback.
+  * `metadata` - Read or update song metadata.
+  * `replaygain` - Report the suggested replaygain for a set of files.
+  * `transcode` - Transcode one or more files into one output file.
+  * `fingerprint` - Generate acoustid fingerprints for one or more files.
+
+Dependencies
+------------
 
 You will need these to compile libgroove.
 
- * [cmake](http://www.cmake.org/)
- * [libav](http://libav.org)
-   - suggested flags: `--enable-shared --disable-static --enable-libmp3lame --enable-libvorbis --enable-gpl`
- * [libebur128](https://github.com/jiixyj/libebur128)
-   - make sure it is compiled with the speex dependency so that true peak
-     functions are available.
- * [libsdl2-dev](http://www.libsdl.org/)
- * [libchromaprint-dev](http://acoustid.org/chromaprint)
+* [cmake](http://www.cmake.org/)
+* [libav](http://libav.org)
+  * suggested flags: `--enable-shared --disable-static --enable-libmp3lame --enable-libvorbis --enable-gpl`
+* [libebur128](https://github.com/jiixyj/libebur128)
+  * make sure it is compiled with the speex dependency so that true peak
+    functions are available.
+* [libsdl2-dev](http://www.libsdl.org/)
+* [libchromaprint-dev](http://acoustid.org/chromaprint)
 
-## Installation
+Installation
+------------
 
-### Pre-Built Packages
+Installing from a package is recommended, but instructions for installing from
+source are also provided at the end of this list.
 
-#### [Ubuntu PPA](https://launchpad.net/~andrewrk/+archive/libgroove)
+### [Ubuntu PPA](https://launchpad.net/~andrewrk/+archive/libgroove)
 
-```
+```sh
 sudo apt-add-repository ppa:andrewrk/libgroove
 sudo apt-get update
-sudo apt-get install libgroove-dev libgrooveplayer-dev libgrooveloudness-dev libgroovefingerprinter-dev
+sudo apt-get install libgroove-dev libgrooveplayer-dev libgrooveloudness-dev \
+    libgroovefingerprinter-dev
 ```
 
-#### [FreeBSD Port](http://www.freshports.org/audio/libgroove/)
+### [FreeBSD Port](http://www.freshports.org/audio/libgroove/)
 
-```
+```sh
 pkg install audio/libgroove
 ```
 
-#### [Debian](http://packages.qa.debian.org/libg/libgroove.html)
+### [Debian](http://packages.qa.debian.org/libg/libgroove.html)
 
-[Configure your system](http://serverfault.com/questions/22414/) to be able
-to install packages from testing.
+[Configure your system](http://serverfault.com/questions/22414/) to be able to
+install packages from testing.
 
-```
-sudo apt-get -t testing install libgroove-dev libgrooveplayer-dev libgrooveloudness-dev libgroovefingerprinter-dev
+```sh
+sudo apt-get -t testing install libgroove-dev libgrooveplayer-dev \
+    libgrooveloudness-dev libgroovefingerprinter-dev
 ```
 
-### From Source
+### [Arch Linux](https://aur.archlinux.org/packages/libgroove/)
 
- 1. `mkdir build && cd build && cmake ../`
- 2. Verify that the configure output is to your liking.
- 3. `make`
- 4. `sudo make install`
+libgroove is available through the [AUR](https://aur.archlinux.org/).
 
-#### Mac OS X
+```sh
+wget https://aur.archlinux.org/packages/li/libgroove/libgroove.tar.gz
+tar xzf libgroove.tar.gz
+cd libgroove
+makepkg
+sudo pacman -U libgroove-*
+```
 
-Install dependencies from [Homebrew](http://brew.sh/)
+Some notes:
 
-```
-brew install chromaprint
-brew install libav --with-libvorbis --with-speex
-brew install sdl2
-```
+* libgroove depends upon several other packages. Dependencies available through
+  the official repositories can be installed with pacman (e.g. `pacman -S
+  --asdeps sdl2`), and dependencies available through the AUR can be installed
+  via the procedure shown above.
+* An [AUR helper](https://wiki.archlinux.org/index.php/AUR_helper) can ease the
+  process of installing packages from the AUR.
+* The [AUR User
+  Guidelines](https://wiki.archlinux.org/index.php/AUR_User_Guidelines) page on
+  the Arch Wiki contains gobs of useful information. Please see that page if you
+  have any further questions about using the AUR.
 
-Install [libebur128](https://github.com/jiixyj/libebur128) from source
+### [Mac OS X Homebrew](http://brew.sh/)
 
-```
-git clone https://github.com/jiixyj/libebur128
-cd libebur128
-mkdir build
-cd build
-cmake ..
-make
-make install
+```sh
+brew install libgroove
 ```
 
-Install libgroove from source
+### From Source
 
-```
-git clone https://github.com/andrewrk/libgroove
-cd libgroove
-mkdir build
-cd build
-cmake ..
+```sh
+mkdir build && cd build && cmake ../
+# Verify that the configure output is to your liking.
 make
-make install
+sudo make install
 ```
 
-## Documentation
-
- * Check out the example programs in the example folder.
- * Read header files for the relevant APIs:
-   * groove/groove.h
-     - globals
-     - GrooveFile
-     - GroovePlaylist
-     - GrooveBuffer
-     - GrooveSink
-   * groove/encoder.h
-     - GrooveEncoder
-   * grooveplayer/player.h
-     - GroovePlayer
-   * grooveloudness/loudness.h
-     - GrooveLoudnessDetector
-   * groovefingerprinter/fingerprinter.h
-     - GrooveFingerprinter
- * Join #libgroove on irc.freenode.org and ask questions.
-
-## Projects Using libgroove
+Documentation
+-------------
+
+Check out the example programs in the example folder.
+
+Read header files for the relevant APIs:
+
+* groove/groove.h
+  * globals
+  * GrooveFile
+  * GroovePlaylist
+  * GrooveBuffer
+  * GrooveSink
+* groove/encoder.h
+  * GrooveEncoder
+* grooveplayer/player.h
+  * GroovePlayer
+* grooveloudness/loudness.h
+  * GrooveLoudnessDetector
+* groovefingerprinter/fingerprinter.h
+  * GrooveFingerprinter
+
+Join #libgroove on irc.freenode.org and ask questions.
+
+Projects Using libgroove
+------------------------
 
 Feel free to make a pull request adding yours to this list.
 
- * [waveform](https://github.com/andrewrk/waveform) - generate a waveform
-   visualization in PNG format.
- * [TrenchBowl](https://github.com/andrewrk/TrenchBowl) - a simple Qt GUI
-   on top of libgroove.
- * [node-groove](https://github.com/andrewrk/node-groove) -
-   [Node.js](http://nodejs.org/) bindings to libgroove.
-   - [Groove Basin](https://github.com/andrewrk/groovebasin) - lazy
-     multi-core replaygain scanning, web interface inspired by Amarok 1.4,
-     http streaming, upload, download, dynamic playlist mode
- * [ruby-groove](https://github.com/johnmuhl/ruby-groove) - Ruby FFI bindings
-   to libgroove.
+* [waveform](https://github.com/andrewrk/waveform) generates PNG waveform
+  visualizations.
+* [TrenchBowl](https://github.com/andrewrk/TrenchBowl) is a simple Qt GUI
+  on top of libgroove.
+* [node-groove](https://github.com/andrewrk/node-groove) provides
+  [Node.js](http://nodejs.org/) bindings to libgroove.
+* [Groove Basin](https://github.com/andrewrk/groovebasin) is a music player with
+  lazy multi-core replaygain scanning, a web interface inspired by Amarok 1.4,
+  http streaming, upload, download and a dynamic playlist mode.
+* [ruby-groove](https://github.com/johnmuhl/ruby-groove) provides Ruby FFI
+  bindings to libgroove.
diff --git a/example/libgroove.pc b/example/libgroove.pc
new file mode 100644
index 0000000..cb4e018
--- /dev/null
+++ b/example/libgroove.pc
@@ -0,0 +1,10 @@
+# For more information: http://www.freedesktop.org/wiki/Software/pkg-config/
+
+libdir=
+includedir=
+
+Name: libgroove
+Description: libgroove provides decoding and encoding of audio on a playlist.
+Version:
+Libs: -L${libdir} -lgroove -lgrooveplayer -lgrooveloudness -lgroovefingerprinter
+Cflags: -I${includedir}
diff --git a/groove/file.c b/groove/file.c
index da099f0..31349d6 100644
--- a/groove/file.c
+++ b/groove/file.c
@@ -262,6 +262,7 @@ int groove_file_save(struct GrooveFile *file) {
         }
         out_stream->id = in_stream->id;
         out_stream->disposition = in_stream->disposition;
+        out_stream->time_base = in_stream->time_base;
 
         AVCodecContext *icodec = in_stream->codec;
         AVCodecContext *ocodec = out_stream->codec;
@@ -294,7 +295,6 @@ int groove_file_save(struct GrooveFile *file) {
         }
         memcpy(ocodec->extradata, icodec->extradata, icodec->extradata_size);
         ocodec->extradata_size = icodec->extradata_size;
-        ocodec->time_base      = in_stream->time_base;
         switch (ocodec->codec_type) {
         case AVMEDIA_TYPE_AUDIO:
             ocodec->channel_layout     = icodec->channel_layout;
diff --git a/groove/global.c b/groove/global.c
index 1cbdf40..fadf812 100644
--- a/groove/global.c
+++ b/groove/global.c
@@ -34,6 +34,7 @@ static int my_lockmgr_cb(void **mutex, enum AVLockOp op) {
             pmutex = *mutex;
             int err = pthread_mutex_destroy(pmutex);
             av_free(pmutex);
+            *mutex = NULL;
             return err;
     }
     return 0;
diff --git a/grooveplayer/osx_time_shim.h b/grooveplayer/osx_time_shim.h
index c62e36b..c4837a3 100644
--- a/grooveplayer/osx_time_shim.h
+++ b/grooveplayer/osx_time_shim.h
@@ -8,7 +8,7 @@
 
 #ifndef GROOVE_MACH_TIME_H_INCLUDED
 #define GROOVE_MACH_TIME_H_INCLUDED
-#ifdef __MACH__
+#ifdef __APPLE__
 
 #include <sys/types.h>
 #include <sys/_types/_timespec.h>

-- 
libgroove packaging



More information about the pkg-multimedia-commits mailing list