initial buildroot for linux 5.15

This commit is contained in:
Huan.Feng
2021-12-06 14:12:13 +08:00
parent d7767d594e
commit 7b6fc358fa
12736 changed files with 508822 additions and 0 deletions
@@ -0,0 +1,173 @@
Switch madplay to the new API. This is done thanks to a patch written
by Micha Nelissen <micha@neli.hopto.org> and available at
http://article.gmane.org/gmane.comp.audio.mad.devel/729.
--- madplay-0.15.2b/audio_alsa.c 2008-10-18 15:10:16.000000000 +0200
+++ madplay-0.15.2b/audio_alsa.c.new 2008-10-18 15:03:27.000000000 +0200
@@ -28,31 +28,30 @@
#include <errno.h>
-#define ALSA_PCM_OLD_HW_PARAMS_API
-#define ALSA_PCM_OLD_SW_PARAMS_API
#include <alsa/asoundlib.h>
#include <mad.h>
#include "audio.h"
-char *buf = NULL;
-int paused = 0;
+#define BUFFER_TIME_MAX 500000
-int rate = -1;
-int channels = -1;
-int bitdepth = -1;
-int sample_size = -1;
-
-int buffer_time = 500000;
-int period_time = 100000;
-char *defaultdev = "plughw:0,0";
+unsigned char *buf = NULL;
+int paused = 0;
+
+unsigned int rate = 0;
+unsigned int channels = -1;
+unsigned int bitdepth = -1;
+unsigned int sample_size = -1;
+
+unsigned int buffer_time;
+unsigned int period_time;
+char *defaultdev = "plughw:0,0";
snd_pcm_hw_params_t *alsa_hwparams;
snd_pcm_sw_params_t *alsa_swparams;
-snd_pcm_sframes_t buffer_size;
-snd_pcm_sframes_t period_size;
+snd_pcm_uframes_t buffer_size;
snd_pcm_format_t alsa_format = -1;
snd_pcm_access_t alsa_access = SND_PCM_ACCESS_MMAP_INTERLEAVED;
@@ -66,14 +65,20 @@
snd_pcm_hw_params_t *params,
snd_pcm_access_t access)
{
- int err, dir;
-
+ int err;
+
/* choose all parameters */
err = snd_pcm_hw_params_any(handle,params);
if (err < 0) {
printf("Access type not available for playback: %s\n", snd_strerror(err));
return err;
}
+ /* set the access type */
+ err = snd_pcm_hw_params_set_access(handle, params, alsa_access);
+ if (err < 0) {
+ printf("Sample format not available for playback: %s\n", snd_strerror(err));
+ return err;
+ }
/* set the sample format */
err = snd_pcm_hw_params_set_format(handle, params, alsa_format);
if (err < 0) {
@@ -87,29 +92,38 @@
return err;
}
/* set the stream rate */
- err = snd_pcm_hw_params_set_rate_near(handle, params, rate, 0);
+ err = snd_pcm_hw_params_set_rate(handle, params, rate, 0);
if (err < 0) {
printf("Rate %iHz not available for playback: %s\n", rate, snd_strerror(err));
return err;
}
- if (err != rate) {
- printf("Rate doesn't match (requested %iHz, get %iHz)\n", rate, err);
- return -EINVAL;
- }
+ err = snd_pcm_hw_params_get_buffer_time_max(params, &buffer_time, NULL);
+ if (err < 0) {
+ printf("Unable to retrieve buffer time: %s\n", snd_strerror(err));
+ return err;
+ }
+ if (buffer_time > BUFFER_TIME_MAX)
+ buffer_time = BUFFER_TIME_MAX;
/* set buffer time */
- err = snd_pcm_hw_params_set_buffer_time_near(handle, params, buffer_time, &dir);
+ err = snd_pcm_hw_params_set_buffer_time_near(handle, params, &buffer_time, 0);
if (err < 0) {
printf("Unable to set buffer time %i for playback: %s\n", buffer_time, snd_strerror(err));
return err;
}
- buffer_size = snd_pcm_hw_params_get_buffer_size(params);
+ if (period_time * 4 > buffer_time)
+ period_time = buffer_time / 4;
/* set period time */
- err = snd_pcm_hw_params_set_period_time_near(handle, params, period_time, &dir);
+ err = snd_pcm_hw_params_set_period_time_near(handle, params, &period_time, NULL);
if (err < 0) {
printf("Unable to set period time %i for playback: %s\n", period_time, snd_strerror(err));
return err;
}
- period_size = snd_pcm_hw_params_get_period_size(params, &dir);
+ /* retrieve buffer size */
+ err = snd_pcm_hw_params_get_buffer_size(params, &buffer_size);
+ if (err < 0) {
+ printf("Unable to retrieve buffer size: %s\n", snd_strerror(err));
+ return err;
+ }
/* write the parameters to device */
err = snd_pcm_hw_params(handle, params);
if (err < 0) {
@@ -123,6 +137,7 @@
int set_swparams(snd_pcm_t *handle,
snd_pcm_sw_params_t *params)
{
+ unsigned int start_threshold;
int err;
/* get current swparams */
@@ -136,13 +151,7 @@
if (err < 0) {
printf("Unable to set start threshold mode for playback: %s\n", snd_strerror(err));
return err;
- }
- /* allow transfer when at least period_size samples can be processed */
- err = snd_pcm_sw_params_set_avail_min(handle, params, period_size);
- if (err < 0) {
- printf("Unable to set avail min for playback: %s\n", snd_strerror(err));
- return err;
- }
+ }
/* align all transfers to 1 samples */
err = snd_pcm_sw_params_set_xfer_align(handle, params, 1);
if (err < 0) {
@@ -190,7 +199,7 @@
rate = config->speed;
if ( bitdepth == 0 )
- config->precision = bitdepth = 32;
+ config->precision = bitdepth = 16;
switch (bitdepth)
{
@@ -241,7 +250,7 @@
return -1;
}
- buf = malloc(buffer_size);
+ buf = malloc(buffer_size * sample_size);
if (buf == NULL) {
audio_error="unable to allocate output buffer table";
return -1;
@@ -279,7 +288,7 @@
int play(struct audio_play *play)
{
int err, len;
- char *ptr;
+ unsigned char *ptr;
ptr = buf;
len = play->nsamples;
@@ -0,0 +1,16 @@
configure.ac: don't require GNU-specific files when running automake
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
diff -durN madplay-0.15.2b-orig/configure.ac madplay-0.15.2b/configure.ac
--- madplay-0.15.2b-orig/configure.ac 2019-02-14 21:34:01.507212449 +0100
+++ madplay-0.15.2b/configure.ac 2019-02-14 21:34:23.439336353 +0100
@@ -26,7 +26,7 @@
AC_CONFIG_SRCDIR([madplay.c])
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE([foreign])
AM_CONFIG_HEADER([config.h])
@@ -0,0 +1,23 @@
configure.ac: use pkg-config to find id3tag
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
diff -durN madplay-0.15.2b-orig/configure.ac madplay-0.15.2b/configure.ac
--- madplay-0.15.2b-orig/configure.ac 2019-02-14 21:34:01.507212449 +0100
+++ madplay-0.15.2b/configure.ac 2019-02-15 23:24:00.079876087 +0100
@@ -182,12 +182,13 @@
*** environment variable to specify its installed location, e.g. -L<dir>.])
])
-AC_CHECK_LIB(id3tag, id3_tag_parse, :, [
+PKG_CHECK_MODULES(ID3TAG, id3tag, [
+ CFLAGS="$CFLAGS $ID3TAG_CFLAGS" LIBS="$LIBS $ID3TAG_LIBS"], [
AC_MSG_ERROR([libid3tag was not found
*** You must first install libid3tag before you can build this package.
*** If libid3tag is already installed, you may need to use the LDFLAGS
*** environment variable to specify its installed location, e.g. -L<dir>.])
-], [-lz])
+])
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(madvise localeconv)
@@ -0,0 +1,23 @@
configure.ac: call AM_MKINSTALLDIRS to substitute @MKINSTALLDIRS@
MKINSTALLDIRS is obsolete and doesn't get automatically called.
Force call AM_MKINSTALLDIRS() macro to substitute every @MKINSTALLDIRS@
occurence in *.in files.
Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
diff -urpN madplay-0.15.2b.orig/configure.ac madplay-0.15.2b/configure.ac
--- madplay-0.15.2b.orig/configure.ac 2019-04-16 12:06:03.781018755 +0200
+++ madplay-0.15.2b/configure.ac 2019-04-16 12:07:48.399162610 +0200
@@ -146,6 +146,10 @@ ALL_LINGUAS="en es fr hr no"
AM_GNU_GETTEXT([use-libtool])
AM_GNU_GETTEXT_VERSION(0.14.1)
+dnl Substitute MKINSTALLDIRS
+
+AM_MKINSTALLDIRS()
+
dnl Checks for header files.
AC_HEADER_STDC
+21
View File
@@ -0,0 +1,21 @@
config BR2_PACKAGE_MADPLAY
bool "madplay"
select BR2_PACKAGE_LIBMAD
select BR2_PACKAGE_LIBID3TAG
help
Command-line front-end to libmad, a high-quality MPEG audio
decoder. It currently supports MPEG-1 and the MPEG-2
extension to lower sampling frequencies, as well as the de
facto MPEG 2.5 format. All three audio layers - Layer I,
Layer II, and Layer III (i.e. MP3) - are fully implemented.
http://www.underbit.com/products/mad/
if BR2_PACKAGE_MADPLAY
config BR2_PACKAGE_MADPLAY_ALSA
bool
default y
depends on BR2_PACKAGE_ALSA_LIB
endif
+4
View File
@@ -0,0 +1,4 @@
# Locally computed:
sha256 5a79c7516ff7560dffc6a14399a389432bc619c905b13d3b73da22fa65acede0 madplay-0.15.2b.tar.gz
sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING
sha256 915bfd70548f31d11f9b4ffb21f343d1196af96c79d6aaac5663ea46c39dd3a3 COPYRIGHT
+26
View File
@@ -0,0 +1,26 @@
################################################################################
#
# madplay
#
################################################################################
MADPLAY_VERSION = 0.15.2b
MADPLAY_SITE = http://downloads.sourceforge.net/project/mad/madplay/$(MADPLAY_VERSION)
MADPLAY_LICENSE = GPL-2.0+
MADPLAY_LICENSE_FILES = COPYING COPYRIGHT
MADPLAY_DEPENDENCIES = host-pkgconf libmad libid3tag $(TARGET_NLS_DEPENDENCIES)
# Force autoreconf to be able to use a more recent libtool script, that
# is able to properly behave in the face of a missing C++ compiler.
# Also 0003-configure-ac-use-pkg-config-to-find-id3tag.patch
MADPLAY_AUTORECONF = YES
# Check if ALSA is built, then we should configure after alsa-lib so
# ./configure can find alsa-lib.
ifeq ($(BR2_PACKAGE_MADPLAY_ALSA),y)
MADPLAY_CONF_OPTS += --with-alsa
MADPLAY_DEPENDENCIES += alsa-lib
MADPLAY_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs alsa`"
endif
$(eval $(autotools-package))