Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 398818 Details for
Bug 539680
media-plugins/alsa-plugins-1.0.28 - .libs/rate_lavcrate.o: In function `pcm_src_free': .../work/alsa-plugins-1.0.28/rate-lavc/rate_lavcrate.c:70: undefined reference to `av_resample_close'
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
alsa-plugins-1.0.28-libav10.patch
alsa-plugins-1.0.28-libav10.patch (text/plain), 9.84 KB, created by
Russell Knighton
on 2015-03-13 20:07:30 UTC
(
hide
)
Description:
alsa-plugins-1.0.28-libav10.patch
Filename:
MIME Type:
Creator:
Russell Knighton
Created:
2015-03-13 20:07:30 UTC
Size:
9.84 KB
patch
obsolete
>From: Luca Barbato <lu_zero@gentoo.org> >Description: lavr: Add a libavresample based rate plugin >Date: Mon, 14 Apr 2014 10:01:07 +0200 > >Provide lavcrate compatibility. > >Index: alsa-plugins-1.0.28/configure.ac >=================================================================== >--- alsa-plugins-1.0.28.orig/configure.ac >+++ alsa-plugins-1.0.28/configure.ac >@@ -66,7 +66,7 @@ if test "$use_maemo_rm" = "yes"; then > fi > > AC_ARG_ENABLE([avcodec], >- AS_HELP_STRING([--disable-avcodec], [Don't build plugins depending on avcodec (a52)])) >+ AS_HELP_STRING([--disable-avcodec], [Do not build plugins depending on avcodec (a52)])) > > if test "x$enable_avcodec" != "xno"; then > PKG_CHECK_MODULES(AVCODEC, [libavcodec libavutil], [HAVE_AVCODEC=yes], [HAVE_AVCODEC=no]) >@@ -101,6 +101,10 @@ if test $HAVE_AVCODEC = yes; then > if test -z "$AVCODEC_HEADER"; then > HAVE_AVCODEC=no > fi >+ SAVE_LIBS=$LIBS >+ LIBS="$LIBS $AVCODEC_LIBS" >+ AC_CHECK_FUNCS([av_resample_init]) >+ LIBS=$SAVE_LIBS > fi > > AM_CONDITIONAL(HAVE_AVCODEC, test x$HAVE_AVCODEC = xyes) >@@ -108,6 +112,18 @@ AC_SUBST(AVCODEC_CFLAGS) > AC_SUBST(AVCODEC_LIBS) > AC_SUBST(AVCODEC_HEADER) > >+AC_ARG_ENABLE([avresample], >+ AS_HELP_STRING([--disable-avresample], [Do not build plugins depending on avcodec (lavrate)])) >+ >+if test "x$enable_avresample" != "xno"; then >+ PKG_CHECK_MODULES(AVRESAMPLE, [libavresample libavutil], [HAVE_AVRESAMPLE=yes], [HAVE_AVRESAMPLE=no]) >+fi >+ >+AM_CONDITIONAL(HAVE_AVRESAMPLE, test x$HAVE_AVCODEC = xyes) >+AC_SUBST(AVRESAMPLE_CFLAGS) >+AC_SUBST(AVRESAMPLE_LIBS) >+AC_SUBST(AVRESAMPLE_HEADER) >+ > PKG_CHECK_MODULES(speexdsp, [speexdsp >= 1.2], [HAVE_SPEEXDSP="yes"], [HAVE_SPEEXDSP=""]) > AM_CONDITIONAL(HAVE_SPEEXDSP, test "$HAVE_SPEEXDSP" = "yes") > >@@ -181,7 +197,7 @@ AC_OUTPUT([ > mix/Makefile > rate/Makefile > a52/Makefile >- rate-lavc/Makefile >+ rate-lavr/Makefile > maemo/Makefile > doc/Makefile > usb_stream/Makefile >Index: alsa-plugins-1.0.28/Makefile.am >=================================================================== >--- alsa-plugins-1.0.28.orig/Makefile.am >+++ alsa-plugins-1.0.28/Makefile.am >@@ -9,8 +9,14 @@ if HAVE_SAMPLERATE > SUBDIRS += rate > endif > if HAVE_AVCODEC >+SUBDIRS += a52 >+if !HAVE_AVRESAMPLE > SUBDIRS += a52 rate-lavc > endif >+endif >+if HAVE_AVRESAMPLE >+SUBDIRS += rate-lavr >+endif > if HAVE_MAEMO_PLUGIN > SUBDIRS += maemo > endif >Index: alsa-plugins-1.0.28/rate-lavr/Makefile.am >=================================================================== >--- /dev/null >+++ alsa-plugins-1.0.28/rate-lavr/Makefile.am >@@ -0,0 +1,22 @@ >+asound_module_rate_lavr_LTLIBRARIES = libasound_module_rate_lavr.la >+ >+asound_module_rate_lavrdir = @ALSA_PLUGIN_DIR@ >+ >+AM_CFLAGS = -Wall -g @ALSA_CFLAGS@ @AVRESAMPLE_CFLAGS@ >+AM_LDFLAGS = -module -avoid-version -export-dynamic -no-undefined $(LDFLAGS_NOUNDEFINED) >+ >+libasound_module_rate_lavr_la_SOURCES = rate_lavr.c >+libasound_module_rate_lavr_la_LIBADD = @ALSA_LIBS@ @AVRESAMPLE_LIBS@ >+ >+ >+install-exec-hook: >+ rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate*.so >+ $(LN_S) libasound_module_rate_lavr.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate.so >+ $(LN_S) libasound_module_rate_lavr.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_higher.so >+ $(LN_S) libasound_module_rate_lavr.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_high.so >+ $(LN_S) libasound_module_rate_lavr.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_fast.so >+ $(LN_S) libasound_module_rate_lavr.so $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate_faster.so >+ >+uninstall-hook: >+ rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavcrate*.so >+ rm -f $(DESTDIR)@ALSA_PLUGIN_DIR@/libasound_module_rate_lavr*.so >Index: alsa-plugins-1.0.28/rate-lavr/rate_lavr.c >=================================================================== >--- /dev/null >+++ alsa-plugins-1.0.28/rate-lavr/rate_lavr.c >@@ -0,0 +1,227 @@ >+/* >+ * Rate converter plugin using libavresample >+ * Copyright (c) 2014 by Anton Khirnov >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Lesser General Public >+ * License as published by the Free Software Foundation; either >+ * version 2.1 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Lesser General Public License for more details. >+ */ >+ >+#include <stdio.h> >+#include <alsa/asoundlib.h> >+#include <alsa/pcm_rate.h> >+ >+#include <libavresample/avresample.h> >+#include <libavutil/channel_layout.h> >+#include <libavutil/opt.h> >+#include <libavutil/mathematics.h> >+#include <libavutil/samplefmt.h> >+ >+ >+static int filter_size = 16; >+static int phase_shift = 10; /* auto-adjusts */ >+static double cutoff = 0; /* auto-adjusts */ >+ >+struct rate_src { >+ AVAudioResampleContext *avr; >+ >+ int in_rate; >+ int out_rate; >+ unsigned int channels; >+}; >+ >+static snd_pcm_uframes_t input_frames(void *obj, snd_pcm_uframes_t frames) >+{ >+ return frames; >+} >+ >+static snd_pcm_uframes_t output_frames(void *obj, snd_pcm_uframes_t frames) >+{ >+ return frames; >+} >+ >+static void pcm_src_free(void *obj) >+{ >+ struct rate_src *rate = obj; >+ avresample_free(&rate->avr); >+} >+ >+static int pcm_src_init(void *obj, snd_pcm_rate_info_t *info) >+{ >+ struct rate_src *rate = obj; >+ int i, ir, or; >+ >+ if (!rate->avr || rate->channels != info->channels) { >+ int ret; >+ >+ pcm_src_free(rate); >+ rate->channels = info->channels; >+ ir = rate->in_rate = info->in.rate; >+ or = rate->out_rate = info->out.rate; >+ i = av_gcd(or, ir); >+ if (or > ir) { >+ phase_shift = or/i; >+ } else { >+ phase_shift = ir/i; >+ } >+ if (cutoff <= 0.0) { >+ cutoff = 1.0 - 1.0/filter_size; >+ if (cutoff < 0.80) >+ cutoff = 0.80; >+ } >+ >+ rate->avr = avresample_alloc_context(); >+ if (!rate->avr) >+ return -ENOMEM; >+ >+ av_opt_set_int(rate->avr, "in_sample_rate", info->in.rate, 0); >+ av_opt_set_int(rate->avr, "out_sample_rate", info->out.rate, 0); >+ av_opt_set_int(rate->avr, "in_sample_format", AV_SAMPLE_FMT_S16, 0); >+ av_opt_set_int(rate->avr, "out_sample_format", AV_SAMPLE_FMT_S16, 0); >+ av_opt_set_int(rate->avr, "in_channel_layout", av_get_default_channel_layout(rate->channels), 0); >+ av_opt_set_int(rate->avr, "out_channel_layout", av_get_default_channel_layout(rate->channels), 0); >+ >+ av_opt_set_int(rate->avr, "filter_size", filter_size, 0); >+ av_opt_set_int(rate->avr, "phase_shift", phase_shift, 0); >+ av_opt_set_double(rate->avr, "cutoff", cutoff, 0); >+ >+ ret = avresample_open(rate->avr); >+ if (ret < 0) { >+ avresample_free(&rate->avr); >+ return -EINVAL; >+ } >+ } >+ >+ return 0; >+} >+ >+static int pcm_src_adjust_pitch(void *obj, snd_pcm_rate_info_t *info) >+{ >+ struct rate_src *rate = obj; >+ >+ if (info->out.rate != rate->out_rate || info->in.rate != rate->in_rate) >+ pcm_src_init(obj, info); >+ return 0; >+} >+ >+static void pcm_src_reset(void *obj) >+{ >+ struct rate_src *rate = obj; >+ >+ if (rate->avr) { >+ avresample_close(rate->avr); >+ avresample_open(rate->avr); >+ } >+} >+ >+static void pcm_src_convert_s16(void *obj, int16_t *dst, unsigned int >+ dst_frames, const int16_t *src, unsigned int src_frames) >+{ >+ struct rate_src *rate = obj; >+ int consumed = 0, chans=rate->channels, ret=0, i; >+ int total_in = avresample_get_delay(rate->avr) + src_frames; >+ >+ ret = avresample_convert(rate->avr, &dst, dst_frames * chans * 2, dst_frames, >+ &src, src_frames * chans * 2, src_frames); >+ >+ avresample_set_compensation(rate->avr, >+ total_in - src_frames > filter_size ? 0 : 1, src_frames); >+} >+ >+static void pcm_src_close(void *obj) >+{ >+ pcm_src_free(obj); >+} >+ >+#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 >+static int get_supported_rates(void *obj, unsigned int *rate_min, >+ unsigned int *rate_max) >+{ >+ *rate_min = *rate_max = 0; /* both unlimited */ >+ return 0; >+} >+ >+static void dump(void *obj, snd_output_t *out) >+{ >+ snd_output_printf(out, "Converter: libavr\n"); >+} >+#endif >+ >+static snd_pcm_rate_ops_t pcm_src_ops = { >+ .close = pcm_src_close, >+ .init = pcm_src_init, >+ .free = pcm_src_free, >+ .adjust_pitch = pcm_src_adjust_pitch, >+ .convert_s16 = pcm_src_convert_s16, >+ .input_frames = input_frames, >+ .output_frames = output_frames, >+#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 >+ .version = SND_PCM_RATE_PLUGIN_VERSION, >+ .get_supported_rates = get_supported_rates, >+ .dump = dump, >+#endif >+}; >+ >+int pcm_src_open(unsigned int version, void **objp, snd_pcm_rate_ops_t *ops) >+ >+{ >+ struct rate_src *rate; >+ >+#if SND_PCM_RATE_PLUGIN_VERSION < 0x010002 >+ if (version != SND_PCM_RATE_PLUGIN_VERSION) { >+ fprintf(stderr, "Invalid rate plugin version %x\n", version); >+ return -EINVAL; >+ } >+#endif >+ rate = calloc(1, sizeof(*rate)); >+ if (!rate) >+ return -ENOMEM; >+ >+ *objp = rate; >+ rate->avr = NULL; >+#if SND_PCM_RATE_PLUGIN_VERSION >= 0x010002 >+ if (version == 0x010001) >+ memcpy(ops, &pcm_src_ops, sizeof(snd_pcm_rate_old_ops_t)); >+ else >+#endif >+ *ops = pcm_src_ops; >+ return 0; >+} >+ >+int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate)(unsigned int version, void **objp, >+ snd_pcm_rate_ops_t *ops) >+{ >+ return pcm_src_open(version, objp, ops); >+} >+int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_higher)(unsigned int version, >+ void **objp, snd_pcm_rate_ops_t *ops) >+{ >+ filter_size = 64; >+ return pcm_src_open(version, objp, ops); >+} >+int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_high)(unsigned int version, >+ void **objp, snd_pcm_rate_ops_t *ops) >+{ >+ filter_size = 32; >+ return pcm_src_open(version, objp, ops); >+} >+int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_fast)(unsigned int version, >+ void **objp, snd_pcm_rate_ops_t *ops) >+{ >+ filter_size = 8; >+ return pcm_src_open(version, objp, ops); >+} >+int SND_PCM_RATE_PLUGIN_ENTRY(lavcrate_faster)(unsigned int version, >+ void **objp, snd_pcm_rate_ops_t *ops) >+{ >+ filter_size = 4; >+ return pcm_src_open(version, objp, ops); >+} >+ >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 539680
:
396138
|
396140
|
396142
| 398818