Browse Source

sox: import from oldpackages, patches to build with newer ffmpeg versions

Signed-off-by: Ted Hess <thess@kitschensync.net>
lilik-openwrt-22.03
Ted Hess 10 years ago
parent
commit
dd7fdad621
5 changed files with 300 additions and 0 deletions
  1. +87
    -0
      sound/sox/Makefile
  2. +22
    -0
      sound/sox/patches/001-cross_compile.patch
  3. +19
    -0
      sound/sox/patches/010-fix_uclibc_build_issue.patch
  4. +129
    -0
      sound/sox/patches/020-ffmpeg-0.11.patch
  5. +43
    -0
      sound/sox/patches/020-ffmpeg-2.x.patch

+ 87
- 0
sound/sox/Makefile View File

@ -0,0 +1,87 @@
#
# Copyright (C) 2008 David Cooper <dave@kupesoft.com>
# Copyright (C) 2006-2014 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=sox
PKG_VERSION:=14.4.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/sox
PKG_MD5SUM:=ff9ca6aca972549de0e80e8e30ed379c
PKG_LICENSE:=LGPLv2.1 GPLv2
PKG_LICENSE_FILES:=COPYING LICENSE.LGPL LICENSE.GPL
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
TARGET_LDFLAGS+= \
-Wl,-rpath-link=$(STAGING_DIR)/usr/lib
define Package/sox
SECTION:=sound
CATEGORY:=Sound
DEPENDS:=+BUILD_PATENTED:lame-lib +BUILD_PATENTED:libmad +BUILD_PATENTED:libid3tag +libvorbis +libvorbisidec +libgsm +alsa-lib +libsndfile +libflac +libmagic +libpng +libao +libffmpeg
TITLE:=Sox is a general purpose sound converter/player/recorder
URL:=http://sox.sourceforge.net/
MAINTAINER:=Hamish Guthrie <hcg@openwrt.org>
endef
define Package/sox/description
SoX is a command line utility that can convert various formats
of computer audio files in to other formats. It can also apply
various effects to these sound files during the conversion.
As an added bonus, SoX can play and record audio files on
several unix-style platforms.
endef
define Build/Configure
$(call Build/Configure/Default, \
--disable-external-gsm \
--disable-oss \
--enable-alsa \
--disable-libao \
--without-libltdl \
--with-ogg \
--with-flac \
--with-ffmpeg \
--without-amr-wb \
--without-amr-nb \
--without-samplerate \
--without-ladspa \
--$(if $(CONFIG_BUILD_PATENTED),with-mad,without-mad) \
--$(if $(CONFIG_BUILD_PATENTED),with-lame,without-lame) \
--$(if $(CONFIG_BUILD_PATENTED),with-id3tag,without-id3tag) \
)
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) \
$(PKG_INSTALL_DIR)/usr/include \
$(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/libsox.{a,so*,la} \
$(1)/usr/lib/
$(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
$(1)/usr/lib/pkgconfig/
endef
define Package/sox/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/bin/{play,rec,sox} $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libsox.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,sox))

+ 22
- 0
sound/sox/patches/001-cross_compile.patch View File

@ -0,0 +1,22 @@
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -144,7 +144,7 @@ EXTRA_DIST = monkey.wav optional-fmts.am
CMakeLists.txt soxconfig.h.cmake \
tests.sh testall.sh tests.bat testall.bat test-comments
-all: sox$(EXEEXT) play rec soxi sox_sample_test$(EXEEXT) example0$(EXEEXT) example1$(EXEEXT) example2$(EXEEXT) example3$(EXEEXT) example4$(EXEEXT) example5$(EXEEXT)
+all: sox$(EXEEXT) play rec
play rec: sox$(EXEEXT)
if test "$(PLAYRECLINKS)" = "yes"; then \
--- sox-14.4.1/src/Makefile.in
+++ sox-14.4.1/src/Makefile.in
@@ -2904,7 +2904,7 @@
uninstall-libLTLIBRARIES uninstall-pkglibLTLIBRARIES
-all: sox$(EXEEXT) play rec soxi sox_sample_test$(EXEEXT) example0$(EXEEXT) example1$(EXEEXT) example2$(EXEEXT) example3$(EXEEXT) example4$(EXEEXT) example5$(EXEEXT)
+all: sox$(EXEEXT) play rec
play rec: sox$(EXEEXT)
if test "$(PLAYRECLINKS)" = "yes"; then \

+ 19
- 0
sound/sox/patches/010-fix_uclibc_build_issue.patch View File

@ -0,0 +1,19 @@
--- sox-14.4.1.orig/src/formats.c
+++ sox-14.4.1/src/formats.c
@@ -409,7 +409,7 @@ static void UNUSED rewind_pipe(FILE * fp
#if defined _FSTDIO || defined _NEWLIB_VERSION || defined __APPLE__
fp->_p -= PIPE_AUTO_DETECT_SIZE;
fp->_r += PIPE_AUTO_DETECT_SIZE;
-#elif defined __GLIBC__
+#elif defined __GLIBC__ && ! defined __UCLIBC__
fp->_IO_read_ptr = fp->_IO_read_base;
#elif defined _MSC_VER || defined _WIN32 || defined _WIN64 || defined _ISO_STDIO_ISO_H
fp->_ptr = fp->_base;
@@ -417,7 +417,6 @@ static void UNUSED rewind_pipe(FILE * fp
/* To fix this #error, either simply remove the #error line and live without
* file-type detection with pipes, or add support for your compiler in the
* lines above. Test with cat monkey.wav | ./sox --info - */
- #error FIX NEEDED HERE
#define NO_REWIND_PIPE
(void)fp;
#endif

+ 129
- 0
sound/sox/patches/020-ffmpeg-0.11.patch View File

@ -0,0 +1,129 @@
--- a/configure
+++ b/configure
@@ -15825,9 +15825,9 @@
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for av_open_input_file in -lavformat" >&5
-$as_echo_n "checking for av_open_input_file in -lavformat... " >&6; }
-if ${ac_cv_lib_avformat_av_open_input_file+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for avformat_open_input in -lavformat" >&5
+$as_echo_n "checking for avformat_open_input in -lavformat... " >&6; }
+if ${ac_cv_lib_avformat_avformat_open_input+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15841,27 +15841,27 @@
#ifdef __cplusplus
extern "C"
#endif
-char av_open_input_file ();
+char avformat_open_input ();
int
main ()
{
-return av_open_input_file ();
+return avformat_open_input ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_avformat_av_open_input_file=yes
+ ac_cv_lib_avformat_avformat_open_input=yes
else
- ac_cv_lib_avformat_av_open_input_file=no
+ ac_cv_lib_avformat_avformat_open_input=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_avformat_av_open_input_file" >&5
-$as_echo "$ac_cv_lib_avformat_av_open_input_file" >&6; }
-if test "x$ac_cv_lib_avformat_av_open_input_file" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_avformat_avformat_open_input" >&5
+$as_echo "$ac_cv_lib_avformat_avformat_open_input" >&6; }
+if test "x$ac_cv_lib_avformat_avformat_open_input" = xyes; then :
for ac_header in libavcodec/avcodec.h ffmpeg/avcodec.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
diff -Naur sox-14.4.0-orig/src/ffmpeg.c sox-14.4.0/src/ffmpeg.c
--- sox-14.4.0-orig/src/ffmpeg.c 2012-06-12 00:35:53.459027469 -0400
+++ sox-14.4.0/src/ffmpeg.c 2012-06-12 00:36:26.539028545 -0400
@@ -93,7 +93,7 @@
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
enc->error_resilience = 1;
#else
- enc->error_recognition = 1;
+ enc->err_recognition = 1;
#endif
if (!codec || avcodec_open(enc, codec) < 0)
@@ -157,7 +157,7 @@
static int startread(sox_format_t * ft)
{
priv_t * ffmpeg = (priv_t *)ft->priv;
- AVFormatParameters params;
+ AVDictionary *params;
int ret;
int i;
@@ -172,7 +172,7 @@
/* Open file and get format */
memset(&params, 0, sizeof(params));
- if ((ret = av_open_input_file(&ffmpeg->ctxt, ft->filename, NULL, 0, &params)) < 0) {
+ if ((ret = avformat_open_input(&ffmpeg->ctxt, ft->filename, NULL, &params)) < 0) {
lsx_fail("ffmpeg cannot open file for reading: %s (code %d)", ft->filename, ret);
return SOX_EOF;
}
@@ -231,7 +231,7 @@
/* If input buffer empty, read more data */
if (ffmpeg->audio_buf_index * 2 >= ffmpeg->audio_buf_size) {
if ((ret = av_read_frame(ffmpeg->ctxt, pkt)) < 0 &&
- (ret == AVERROR_EOF || url_ferror(ffmpeg->ctxt->pb)))
+ (ret == AVERROR_EOF || ffmpeg->ctxt->pb->error))
break;
ffmpeg->audio_buf_size = audio_decode_frame(ffmpeg, ffmpeg->audio_buf_aligned, AVCODEC_MAX_AUDIO_FRAME_SIZE);
ffmpeg->audio_buf_index = 0;
@@ -373,13 +373,6 @@
return SOX_EOF;
}
- /* set the output parameters (must be done even if no
- parameters). */
- if (av_set_parameters(ffmpeg->ctxt, NULL) < 0) {
- lsx_fail("ffmpeg invalid output format parameters");
- return SOX_EOF;
- }
-
/* Next line for debugging */
/* dump_format(ffmpeg->ctxt, 0, ft->filename, 1); */
@@ -391,14 +384,14 @@
/* open the output file, if needed */
if (!(ffmpeg->fmt->flags & AVFMT_NOFILE)) {
- if (url_fopen(&ffmpeg->ctxt->pb, ft->filename, URL_WRONLY) < 0) {
+ if (avio_open(&ffmpeg->ctxt->pb, ft->filename, AVIO_FLAG_WRITE) < 0) {
lsx_fail("ffmpeg could not open `%s'", ft->filename);
return SOX_EOF;
}
}
/* write the stream header, if any */
- av_write_header(ffmpeg->ctxt);
+ avformat_write_header(ffmpeg->ctxt, NULL);
return SOX_SUCCESS;
}
@@ -478,7 +471,7 @@
#if (LIBAVFORMAT_VERSION_INT < 0x340000)
url_fclose(&ffmpeg->ctxt->pb);
#else
- url_fclose(ffmpeg->ctxt->pb);
+ avio_close(ffmpeg->ctxt->pb);
#endif
}

+ 43
- 0
sound/sox/patches/020-ffmpeg-2.x.patch View File

@ -0,0 +1,43 @@
--- a/src/ffmpeg.c
+++ b/src/ffmpeg.c
@@ -50,6 +50,10 @@
#include <ctype.h>
#include "ffmpeg.h"
+#ifndef AVCODEC_MAX_AUDIO_FRAME_SIZE
+#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000
+#endif
+
#ifndef CODEC_TYPE_AUDIO
#define CODEC_TYPE_AUDIO AVMEDIA_TYPE_AUDIO
#endif
@@ -96,7 +100,7 @@ static int stream_component_open(priv_t
enc->err_recognition = 1;
#endif
- if (!codec || avcodec_open(enc, codec) < 0)
+ if (!codec || avcodec_open2(enc, codec, NULL) < 0)
return -1;
if (enc->codec_type != AVMEDIA_TYPE_AUDIO) {
lsx_fail("ffmpeg CODEC %x is not an audio CODEC", enc->codec_type);
@@ -267,7 +271,11 @@ static int stopread(sox_format_t * ft)
/*
* add an audio output stream
*/
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 28, 0)
+static AVStream *add_audio_stream(sox_format_t * ft, AVFormatContext *oc, enum AVCodecID codec_id)
+#else
static AVStream *add_audio_stream(sox_format_t * ft, AVFormatContext *oc, enum CodecID codec_id)
+#endif
{
AVCodecContext *c;
AVStream *st;
@@ -306,7 +314,7 @@ static int open_audio(priv_t * ffmpeg, A
}
/* open it */
- if (avcodec_open(c, codec) < 0) {
+ if (avcodec_open2(c, codec, NULL) < 0) {
lsx_fail("ffmpeg could not open CODEC");
return SOX_EOF;
}

Loading…
Cancel
Save