diff --git a/Config.in.legacy b/Config.in.legacy index 8db70cae..58c8e791 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -1774,12 +1774,6 @@ config BR2_PACKAGE_LUNIT The lunit package was removed in favor of its fork lunitx, which supports all versions of Lua. -config BR2_PACKAGE_FFMPEG_FFSERVER - bool "ffmpeg ffserver removed" - select BR2_LEGACY - help - On July 10th, 2016, ffserver program has been dropped. - config BR2_PACKAGE_LIBUMP bool "libump package removed" select BR2_LEGACY diff --git a/board/miyoo/main/apps/arecord/audio_record.sh b/board/miyoo/main/apps/arecord/audio_record.sh new file mode 100644 index 00000000..e2602799 --- /dev/null +++ b/board/miyoo/main/apps/arecord/audio_record.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +if pgrep "arecord" > /dev/null; then + killall arecord + while (pgrep "arecord"); do + sleep 1 + done + rmmod snd-aloop.ko + rm /mnt/.asoundrc + alsactl init +else +#WARNING: This disables audio output to speakers by redirecting it to alsaloop capturing device's card + echo 'pcm.!default { type plug slave.pcm "hw:Loopback,0,0" }' > /mnt/.asoundrc + modprobe snd-aloop.ko + alsactl init + mkdir -p /mnt/output + arecord -q -c2 -D hw:Loopback,1,0 -f S16_LE "/mnt/output/audio_$(date +%Y%m%d%H%M%S).wav" +fi diff --git a/board/miyoo/main/apps/ffmpeg/ffplay_launch.sh b/board/miyoo/main/apps/ffmpeg/ffplay_launch.sh new file mode 100644 index 00000000..d77b69b6 --- /dev/null +++ b/board/miyoo/main/apps/ffmpeg/ffplay_launch.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +if ffprobe -v error -select_streams v:0 -show_entries stream=codec_type "$1" | grep -q "video"; then + ffplay -autoexit -i "$1" +elif ffprobe -v error -select_streams a:0 -show_entries stream=codec_type "$1" | grep -q "audio"; then + ffplay -nodisp -autoexit -i "$1" +else + echo -en "Invalid video/audio format!" + # We're using SDL terminal to display above echo msg + ## because all stdout is parsed to /dev/null from gmenu2x and it's child ps + /mnt/apps/st/st -e "/bin/sh" "-c" "echo -e \"\n\n\n\n\n\n Invalid video or audio format!\"; sleep 2" +fi diff --git a/board/miyoo/main/apps/ffmpeg/manual.txt b/board/miyoo/main/apps/ffmpeg/manual.txt new file mode 100644 index 00000000..1c2d628a --- /dev/null +++ b/board/miyoo/main/apps/ffmpeg/manual.txt @@ -0,0 +1,11 @@ +FFPLAY shortcuts: +----------------------- +ESCAPE ("Select") = quit +LSHIFT ("X"); f = fullscreen +SPACE ("Y"); RETURN ("Start")= pause +LCTRL ("B"); m = mute +RSHIFT/RALT ("R3/L3"); 0/9 = increase/decrease volume +LALT ("A"); s = step to next frame +LEFT/RIGHT (-) = Seek backward/forward 10 seconds. +DOWN/UP (-)= Seek backward/forward 1 minute. +PAGEUP/PAGEDOWN ("L2/R2")= Seek to the previous/next chapter. If there are no chapters seek backward/forward 10 minutes. diff --git a/board/miyoo/main/apps/ffmpeg/video_record.sh b/board/miyoo/main/apps/ffmpeg/video_record.sh new file mode 100644 index 00000000..5ebcbac1 --- /dev/null +++ b/board/miyoo/main/apps/ffmpeg/video_record.sh @@ -0,0 +1,7 @@ +#!/bin/sh +if pgrep "ffmpeg" > /dev/null; then + pkill ffmpeg +else + mkdir -p /mnt/output + ffmpeg -f fbdev -r 8 -i /dev/fb0 -c:v mpeg4 -framerate 15 "/mnt/output/video_$(date +%Y%m%d%H%M%S).mp4" -nostdin +fi diff --git a/board/miyoo/main/gmenu2x/sections/applications/ffplay.launch b/board/miyoo/main/gmenu2x/sections/applications/ffplay.launch new file mode 100644 index 00000000..5eed1335 --- /dev/null +++ b/board/miyoo/main/gmenu2x/sections/applications/ffplay.launch @@ -0,0 +1,5 @@ +title=FFPLAY +description=Play a movie/audio file +exec=/mnt/apps/ffmpeg/ffplay_launch.sh +manual=/mnt/apps/ffmpeg/manual.txt +selectordir=/mnt/output \ No newline at end of file diff --git a/board/miyoo/main/gmenu2x/sections/applications/record-audio b/board/miyoo/main/gmenu2x/sections/applications/record-audio new file mode 100644 index 00000000..62b79d3d --- /dev/null +++ b/board/miyoo/main/gmenu2x/sections/applications/record-audio @@ -0,0 +1,4 @@ +title=AUDIO rec +description=Start/Stop recording alsa HW audio output +exec=/mnt/apps/arecord/audio_record.sh +params=& \ No newline at end of file diff --git a/board/miyoo/main/gmenu2x/sections/applications/record-video b/board/miyoo/main/gmenu2x/sections/applications/record-video new file mode 100644 index 00000000..4df23d8f --- /dev/null +++ b/board/miyoo/main/gmenu2x/sections/applications/record-video @@ -0,0 +1,4 @@ +title=VIDEO Rec +description=Start/Stop recording FB0 video in the background +exec=/mnt/apps/ffmpeg/video_record.sh +params=& \ No newline at end of file diff --git a/board/miyoo/main/gmenu2x/sections/applications/usb-change_primary_partition b/board/miyoo/main/gmenu2x/sections/applications/usb-change_primary_partition deleted file mode 100644 index 93aa0d47..00000000 --- a/board/miyoo/main/gmenu2x/sections/applications/usb-change_primary_partition +++ /dev/null @@ -1,3 +0,0 @@ -title=USB change part. -description=USB switch FAT partition -exec=/mnt/apps/usb-serial-mass-storage/usb-change_primary_partition.sh diff --git a/configs/miyoo_musl_defconfig b/configs/miyoo_musl_defconfig index f033fee0..c8bdb544 100644 --- a/configs/miyoo_musl_defconfig +++ b/configs/miyoo_musl_defconfig @@ -35,6 +35,13 @@ BR2_PACKAGE_ALSA_UTILS_APLAY=y BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y BR2_PACKAGE_ESPEAK=y BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_NONFREE=y +BR2_PACKAGE_FFMPEG_FFPLAY=y +BR2_PACKAGE_FFMPEG_FFPROBE=y +BR2_PACKAGE_FFMPEG_AVRESAMPLE=y +BR2_PACKAGE_FFMPEG_POSTPROC=y BR2_PACKAGE_MPG123=y BR2_PACKAGE_VORBIS_TOOLS=y BR2_PACKAGE_P7ZIP=y diff --git a/configs/miyoo_musl_static_defconfig b/configs/miyoo_musl_static_defconfig index 10f78030..c8ed0db1 100644 --- a/configs/miyoo_musl_static_defconfig +++ b/configs/miyoo_musl_static_defconfig @@ -22,6 +22,13 @@ BR2_SYSTEM_BIN_SH_NONE=y BR2_PACKAGE_ALSA_UTILS=y BR2_PACKAGE_ALSA_UTILS_APLAY=y BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_NONFREE=y +BR2_PACKAGE_FFMPEG_FFPLAY=y +BR2_PACKAGE_FFMPEG_FFPROBE=y +BR2_PACKAGE_FFMPEG_AVRESAMPLE=y +BR2_PACKAGE_FFMPEG_POSTPROC=y BR2_PACKAGE_FLITE=y BR2_PACKAGE_MIMIC=y BR2_PACKAGE_MIMIC_AUDIO_BACKEND_ALSA=y @@ -39,7 +46,6 @@ BR2_PACKAGE_GETTEXT=y BR2_PACKAGE_LIBTOOL=y BR2_PACKAGE_PKGCONF=y BR2_PACKAGE_FBGRAB=y -BR2_PACKAGE_SDL=y BR2_PACKAGE_SDL_GFX=y BR2_PACKAGE_SDL_IMAGE=y BR2_PACKAGE_SDL_IMAGE_GIF=y diff --git a/configs/miyoo_uclibc_defconfig b/configs/miyoo_uclibc_defconfig index 1fcdf112..39bdf328 100644 --- a/configs/miyoo_uclibc_defconfig +++ b/configs/miyoo_uclibc_defconfig @@ -35,6 +35,13 @@ BR2_PACKAGE_ALSA_UTILS_APLAY=y BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y BR2_PACKAGE_ESPEAK=y BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_NONFREE=y +BR2_PACKAGE_FFMPEG_FFPLAY=y +BR2_PACKAGE_FFMPEG_FFPROBE=y +BR2_PACKAGE_FFMPEG_AVRESAMPLE=y +BR2_PACKAGE_FFMPEG_POSTPROC=y BR2_PACKAGE_MPG123=y BR2_PACKAGE_VORBIS_TOOLS=y BR2_PACKAGE_BZIP2=y diff --git a/configs/miyoo_uclibc_static_defconfig b/configs/miyoo_uclibc_static_defconfig index df9961a1..4ae29f96 100644 --- a/configs/miyoo_uclibc_static_defconfig +++ b/configs/miyoo_uclibc_static_defconfig @@ -22,6 +22,13 @@ BR2_INIT_NONE=y BR2_PACKAGE_ALSA_UTILS=y BR2_PACKAGE_ALSA_UTILS_APLAY=y BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_NONFREE=y +BR2_PACKAGE_FFMPEG_FFPLAY=y +BR2_PACKAGE_FFMPEG_FFPROBE=y +BR2_PACKAGE_FFMPEG_AVRESAMPLE=y +BR2_PACKAGE_FFMPEG_POSTPROC=y BR2_PACKAGE_MPG123=y BR2_PACKAGE_VORBIS_TOOLS=y BR2_PACKAGE_BZIP2=y @@ -31,7 +38,6 @@ BR2_PACKAGE_STRACE=y BR2_PACKAGE_GETTEXT=y BR2_PACKAGE_LIBTOOL=y BR2_PACKAGE_FBGRAB=y -BR2_PACKAGE_SDL=y BR2_PACKAGE_SDL_GFX=y BR2_PACKAGE_SDL_IMAGE=y BR2_PACKAGE_SDL_IMAGE_GIF=y diff --git a/package/ffmpeg/0001-bfin-disable-optimization.patch b/package/ffmpeg/0001-bfin-disable-optimization.patch new file mode 100644 index 00000000..1d8a4f01 --- /dev/null +++ b/package/ffmpeg/0001-bfin-disable-optimization.patch @@ -0,0 +1,26 @@ +Fix bfin compile error + +See gcc bug report: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77311 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur ffmpeg-2.8.7.orig/libavcodec/hevcdsp_template.c ffmpeg-2.8.7/libavcodec/hevcdsp_template.c +--- ffmpeg-2.8.7.orig/libavcodec/hevcdsp_template.c 2016-03-29 04:25:16.000000000 +0200 ++++ ffmpeg-2.8.7/libavcodec/hevcdsp_template.c 2016-08-12 21:32:36.728178969 +0200 +@@ -1517,7 +1517,14 @@ + #define TQ2 pix[2 * xstride + 3 * ystride] + #define TQ3 pix[3 * xstride + 3 * ystride] + +-static void FUNC(hevc_loop_filter_luma)(uint8_t *_pix, ++// Blackfin gcc 6.1.x fails with ++// unable to find a register to spill in class CCREGS ++#if defined(__bfin__) ++#define disable_opt __attribute__ ((optimize("O1"))) ++#else ++#define disable_opt ++#endif ++static void disable_opt FUNC(hevc_loop_filter_luma)(uint8_t *_pix, + ptrdiff_t _xstride, ptrdiff_t _ystride, + int beta, int *_tc, + uint8_t *_no_p, uint8_t *_no_q) diff --git a/package/ffmpeg/0001-swscale-x86-yuv2rgb-Fix-build-without-SSSE3.patch b/package/ffmpeg/0001-swscale-x86-yuv2rgb-Fix-build-without-SSSE3.patch deleted file mode 100644 index 951ce418..00000000 --- a/package/ffmpeg/0001-swscale-x86-yuv2rgb-Fix-build-without-SSSE3.patch +++ /dev/null @@ -1,43 +0,0 @@ -From bf8eae2d30a205bb76ac625e04c0351106981b9e Mon Sep 17 00:00:00 2001 -From: Parker Ernest <@> -Date: Sun, 23 Feb 2020 13:22:42 +0100 -Subject: [PATCH] swscale/x86/yuv2rgb: Fix build without SSSE3 - -commit fc6a5883d6af8cae0e96af84dda0ad74b360a084 breaks build on -x86_64 CPUs which do not have SSSE3, e.g. AMD Phenom-II - -Signed-off-by: Michael Niedermayer -[bernd.kuhls@t-online.de: - - retrieved from upstream patchwork: - https://patchwork.ffmpeg.org/project/ffmpeg/patch/20200223122256.23402-1-michael@niedermayer.cc/ -] -Signed-off-by: Bernd Kuhls -[yann.morin.1998@free.fr: fix reference top patchwork and SoB order] -Signed-off-by: Yann E. MORIN ---- - libswscale/x86/yuv2rgb.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/libswscale/x86/yuv2rgb.c b/libswscale/x86/yuv2rgb.c -index c12e88cbb5..4791e5b93a 100644 ---- a/libswscale/x86/yuv2rgb.c -+++ b/libswscale/x86/yuv2rgb.c -@@ -83,6 +83,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c) - #if HAVE_X86ASM - int cpu_flags = av_get_cpu_flags(); - -+#if HAVE_SSSE3 - if (EXTERNAL_SSSE3(cpu_flags)) { - switch (c->dstFormat) { - case AV_PIX_FMT_RGB32: -@@ -111,6 +112,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c) - return yuv420_rgb15_ssse3; - } - } -+#endif - - if (EXTERNAL_MMXEXT(cpu_flags)) { - switch (c->dstFormat) { --- -2.26.2 - diff --git a/package/ffmpeg/0002-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch b/package/ffmpeg/0002-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch deleted file mode 100644 index 2892df9d..00000000 --- a/package/ffmpeg/0002-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 2c6b3f357331e203ad87214984661c40704aceb7 Mon Sep 17 00:00:00 2001 -From: Rainer Hochecker -Date: Sat, 26 Jan 2019 19:48:35 +0100 -Subject: [PATCH] avcodec/vaapi_h264: skip decode if pic has no slices - -This fixes / workarounds https://bugs.freedesktop.org/show_bug.cgi?id=105368. -It was hit frequently when watching h264 channels received via DVB-X. -Corresponding kodi bug: https://github.com/xbmc/xbmc/issues/15704 - -Downloaded from Kodi ffmpeg repo: -https://github.com/xbmc/FFmpeg/commit/2c6b3f357331e203ad87214984661c40704aceb7 - -Patch was sent upstream: -http://ffmpeg.org/pipermail/ffmpeg-devel/2019-March/240863.html - -Signed-off-by: Bernd Kuhls ---- - libavcodec/vaapi_h264.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c -index dd2a6571604..e521a05c4ff 100644 ---- a/libavcodec/vaapi_h264.c -+++ b/libavcodec/vaapi_h264.c -@@ -314,6 +314,11 @@ static int vaapi_h264_end_frame(AVCodecContext *avctx) - H264SliceContext *sl = &h->slice_ctx[0]; - int ret; - -+ if (pic->nb_slices == 0) { -+ ret = AVERROR_INVALIDDATA; -+ goto finish; -+ } -+ - ret = ff_vaapi_decode_issue(avctx, pic); - if (ret < 0) - goto finish; diff --git a/package/ffmpeg/0002-libavutil-mem-build-fix.patch b/package/ffmpeg/0002-libavutil-mem-build-fix.patch new file mode 100644 index 00000000..dafac2d9 --- /dev/null +++ b/package/ffmpeg/0002-libavutil-mem-build-fix.patch @@ -0,0 +1,13 @@ +diff --git a/libavutil/mem.h b/libavutil/mem.h +index f9d88847..5d505d22 100644 +--- a/libavutil/mem.h ++++ b/libavutil/mem.h +@@ -335,7 +335,7 @@ av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size) + * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be + * correctly aligned. + */ +-av_alloc_size(2, 3) int av_reallocp_array(void *ptr, size_t nmemb, size_t size); ++int av_reallocp_array(void *ptr, size_t nmemb, size_t size); + + /** + * Reallocate the given buffer if it is not large enough, otherwise do nothing. diff --git a/package/ffmpeg/0003-ffplay-custom-sdlk.patch b/package/ffmpeg/0003-ffplay-custom-sdlk.patch new file mode 100644 index 00000000..d0b2cc1f --- /dev/null +++ b/package/ffmpeg/0003-ffplay-custom-sdlk.patch @@ -0,0 +1,36 @@ +diff --git a/ffplay.c b/ffplay.c +index f28e0877..b08d7598 100644 +--- a/ffplay.c ++++ b/root/ffplay.c +@@ -3367,25 +3367,31 @@ static void event_loop(VideoState *cur_stream) + do_exit(cur_stream); + break; + case SDLK_f: ++ case SDLK_LSHIFT: + toggle_full_screen(cur_stream); + cur_stream->force_refresh = 1; + break; + case SDLK_p: + case SDLK_SPACE: ++ case SDLK_RETURN: + toggle_pause(cur_stream); + break; + case SDLK_m: ++ case SDLK_LCTRL: + toggle_mute(cur_stream); + break; + case SDLK_KP_MULTIPLY: + case SDLK_0: ++ case SDLK_RSHIFT: + update_volume(cur_stream, 1, SDL_VOLUME_STEP); + break; + case SDLK_KP_DIVIDE: + case SDLK_9: ++ case SDLK_RALT: + update_volume(cur_stream, -1, SDL_VOLUME_STEP); + break; + case SDLK_s: // S: Step to next frame ++ case SDLK_LALT: + step_to_next_frame(cur_stream); + break; + case SDLK_a: diff --git a/package/ffmpeg/0003-libavutil-Fix-mips-build.patch b/package/ffmpeg/0003-libavutil-Fix-mips-build.patch deleted file mode 100644 index 8b81e669..00000000 --- a/package/ffmpeg/0003-libavutil-Fix-mips-build.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 6e8daf0d502a2a822f1f08f42368d7d676dc1a9e Mon Sep 17 00:00:00 2001 -From: Bernd Kuhls -Date: Sun, 6 Jun 2021 08:54:53 +0200 -Subject: [PATCH] libavutil: Fix mips build - -Check for sys/auxv.h because not all toolchains contain this header. - -Fixes https://trac.ffmpeg.org/ticket/9138 - -Patch sent upstream: -http://ffmpeg.org/pipermail/ffmpeg-devel/2021-June/281272.html - -Signed-off-by: Bernd Kuhls ---- - configure | 2 ++ - libavutil/mips/cpu.c | 6 +++--- - 2 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/configure b/configure -index 6bfd98b384..773a7d516c 100755 ---- a/configure -+++ b/configure -@@ -2161,6 +2161,7 @@ HEADERS_LIST=" - opencv2_core_core_c_h - OpenGL_gl3_h - poll_h -+ sys_auxv_h - sys_param_h - sys_resource_h - sys_select_h -@@ -6218,6 +6219,7 @@ check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepa - check_headers windows.h - check_headers X11/extensions/XvMClib.h - check_headers asm/types.h -+check_headers sys/auxv.h - - # it seems there are versions of clang in some distros that try to use the - # gcc headers, which explodes for stdatomic -diff --git a/libavutil/mips/cpu.c b/libavutil/mips/cpu.c -index 59619d54de..19196de50b 100644 ---- a/libavutil/mips/cpu.c -+++ b/libavutil/mips/cpu.c -@@ -19,7 +19,7 @@ - #include "libavutil/cpu.h" - #include "libavutil/cpu_internal.h" - #include "config.h" --#if defined __linux__ || defined __ANDROID__ -+#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H - #include - #include - #include -@@ -28,7 +28,7 @@ - #include "libavutil/avstring.h" - #endif - --#if defined __linux__ || defined __ANDROID__ -+#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H - - #define HWCAP_LOONGSON_CPUCFG (1 << 14) - -@@ -105,7 +105,7 @@ static int cpu_flags_cpuinfo(void) - - int ff_get_cpu_flags_mips(void) - { --#if defined __linux__ || defined __ANDROID__ -+#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H - if (cpucfg_available()) - return cpu_flags_cpucfg(); - else --- -2.29.2 - diff --git a/package/ffmpeg/0004-configure-add-extralibs-to-extralibs_xxx.patch b/package/ffmpeg/0004-configure-add-extralibs-to-extralibs_xxx.patch deleted file mode 100644 index dbc19c1c..00000000 --- a/package/ffmpeg/0004-configure-add-extralibs-to-extralibs_xxx.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 0c288853630b7b4e004774c39945d4a804afcfa8 Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Fri, 6 Aug 2021 09:17:20 +0200 -Subject: [PATCH] configure: add extralibs to extralibs_xxx - -Add extralibs to extralibs_xxx (e.g. extralibs_avformat) to allow -applications such as motion to retrieve ffmpeg dependencies such as --latomic through pkg-config - -Signed-off-by: Fabrice Fontaine -[Upstream status: not upstreamable] ---- - configure | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/configure b/configure -index 0bb3a7cf2b..3bda99e415 100755 ---- a/configure -+++ b/configure -@@ -7602,15 +7602,15 @@ rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}") - source_path=${source_path} - LIBPREF=${LIBPREF} - LIBSUF=${LIBSUF} --extralibs_avutil="$avutil_extralibs" --extralibs_avcodec="$avcodec_extralibs" --extralibs_avformat="$avformat_extralibs" --extralibs_avdevice="$avdevice_extralibs" --extralibs_avfilter="$avfilter_extralibs" --extralibs_avresample="$avresample_extralibs" --extralibs_postproc="$postproc_extralibs" --extralibs_swscale="$swscale_extralibs" --extralibs_swresample="$swresample_extralibs" -+extralibs_avutil="$avutil_extralibs $extralibs" -+extralibs_avcodec="$avcodec_extralibs $extralibs" -+extralibs_avformat="$avformat_extralibs $extralibs" -+extralibs_avdevice="$avdevice_extralibs $extralibs" -+extralibs_avfilter="$avfilter_extralibs $extralibs" -+extralibs_avresample="$avresample_extralibs $extralibs" -+extralibs_postproc="$postproc_extralibs $extralibs" -+extralibs_swscale="$swscale_extralibs $extralibs" -+extralibs_swresample="$swresample_extralibs $extralibs" - EOF - - for lib in $LIBRARY_LIST; do --- -2.30.2 - diff --git a/package/ffmpeg/Config.in b/package/ffmpeg/Config.in index 2efef7dd..e8135953 100644 --- a/package/ffmpeg/Config.in +++ b/package/ffmpeg/Config.in @@ -1,26 +1,16 @@ config BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS bool - default y # fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW on nios2 - depends on !BR2_nios2 # No support for ARMv7-M in the ARM assembly logic - depends on !BR2_ARM_CPU_ARMV7M - # m68k coldfire causes a build failure, because the check for - # atomics (atomic_store) succeeds, which causes ffmpeg to - # think atomic intrinsics are available, while they are - # not. See https://patchwork.ozlabs.org/patch/756664/ and - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 for more - # details. - depends on !BR2_m68k_cf - # assertion fail in binutils - depends on !(BR2_or1k && !BR2_TOOLCHAIN_GCC_AT_LEAST_9) + # Microblaze build affected by gcc PR71124 (infinite loop) + default y if !BR2_nios2 && !BR2_ARM_CPU_ARMV7M && !BR2_microblaze menuconfig BR2_PACKAGE_FFMPEG bool "ffmpeg" depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS help - FFmpeg is a complete, cross-platform solution to record, - convert and stream audio and video. + FFmpeg is a complete, cross-platform solution to record, convert + and stream audio and video. http://www.ffmpeg.org @@ -50,16 +40,18 @@ config BR2_PACKAGE_FFMPEG_FFMPEG config BR2_PACKAGE_FFMPEG_FFPLAY bool "Build ffplay" - depends on !BR2_STATIC_LIBS # sdl2 select BR2_PACKAGE_FFMPEG_SWSCALE - select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL help FFplay is a very simple and portable media player using the FFmpeg libraries and the SDL library. It is mostly used as a testbed for the various FFmpeg APIs. -comment "ffplay needs a toolchain w/ dynamic library" - depends on BR2_STATIC_LIBS +config BR2_PACKAGE_FFMPEG_FFSERVER + bool "Build ffserver" + depends on BR2_USE_MMU # fork() + help + FFserver is a streaming server for both audio and video. config BR2_PACKAGE_FFMPEG_FFPROBE bool "Build ffprobe" @@ -67,13 +59,6 @@ config BR2_PACKAGE_FFMPEG_FFPROBE FFprobe is a utility to determine the audio and video characteristics of a container file. -config BR2_PACKAGE_FFMPEG_XCBGRAB - bool "Build X11 screen grabbing" - depends on BR2_PACKAGE_XORG7 - select BR2_PACKAGE_LIBXCB - help - X11 screen grabbing using libxcb. - config BR2_PACKAGE_FFMPEG_AVRESAMPLE bool "Build libavresample" help diff --git a/package/ffmpeg/ffmpeg.hash b/package/ffmpeg/ffmpeg.hash index c9d7ea7c..960fa096 100644 --- a/package/ffmpeg/ffmpeg.hash +++ b/package/ffmpeg/ffmpeg.hash @@ -1,5 +1,2 @@ # Locally calculated -sha256 6c5b6c195e61534766a0b5fe16acc919170c883362612816d0a1c7f4f947006e ffmpeg-4.4.3.tar.xz -sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPLv2 -sha256 b634ab5640e258563c536e658cad87080553df6f34f62269a21d554844e58bfe COPYING.LGPLv2.1 -sha256 cb48bf09a11f5fb576cddb0431c8f5ed0a60157a9ec942adffc13907cbe083f2 LICENSE.md +sha256 919022430e2dad782fabccffdd6c4cae4e7029f84f0701aa662f036a9ca65423 ffmpeg-3.1.tar.xz diff --git a/package/ffmpeg/ffmpeg.mk b/package/ffmpeg/ffmpeg.mk index 136e3e24..6b692f11 100644 --- a/package/ffmpeg/ffmpeg.mk +++ b/package/ffmpeg/ffmpeg.mk @@ -4,20 +4,18 @@ # ################################################################################ -FFMPEG_VERSION = 4.4.3 +FFMPEG_VERSION = 3.1 FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.xz FFMPEG_SITE = http://ffmpeg.org/releases FFMPEG_INSTALL_STAGING = YES -FFMPEG_LICENSE = LGPL-2.1+, libjpeg license +FFMPEG_LICENSE = LGPLv2.1+, libjpeg license FFMPEG_LICENSE_FILES = LICENSE.md COPYING.LGPLv2.1 ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) -FFMPEG_LICENSE += and GPL-2.0+ +FFMPEG_LICENSE += and GPLv2+ FFMPEG_LICENSE_FILES += COPYING.GPLv2 endif -FFMPEG_CPE_ID_VENDOR = ffmpeg - FFMPEG_CONF_OPTS = \ --prefix=/usr \ --enable-avfilter \ @@ -28,6 +26,7 @@ FFMPEG_CONF_OPTS = \ --enable-avdevice \ --enable-avcodec \ --enable-avformat \ + --disable-x11grab \ --enable-network \ --disable-gray \ --enable-swscale-alpha \ @@ -40,25 +39,27 @@ FFMPEG_CONF_OPTS = \ --disable-dxva2 \ --enable-runtime-cpudetect \ --disable-hardcoded-tables \ + --disable-memalign-hack \ --disable-mipsdsp \ --disable-mipsdspr2 \ --disable-msa \ --enable-hwaccels \ - --disable-cuda \ - --disable-cuvid \ - --disable-nvenc \ --disable-avisynth \ --disable-frei0r \ --disable-libopencore-amrnb \ --disable-libopencore-amrwb \ + --disable-libcdio \ --disable-libdc1394 \ --disable-libgsm \ --disable-libilbc \ + --disable-libnut \ + --disable-libopenjpeg \ + --disable-libschroedinger \ --disable-libvo-amrwbenc \ --disable-symver \ --disable-doc -FFMPEG_DEPENDENCIES += host-pkgconf +FFMPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) host-pkgconf ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) FFMPEG_CONF_OPTS += --enable-gpl @@ -79,18 +80,17 @@ FFMPEG_CONF_OPTS += --disable-ffmpeg endif ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y) -FFMPEG_DEPENDENCIES += sdl2 +FFMPEG_DEPENDENCIES += sdl FFMPEG_CONF_OPTS += --enable-ffplay -FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config +FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config else FFMPEG_CONF_OPTS += --disable-ffplay endif -ifeq ($(BR2_PACKAGE_LIBV4L),y) -FFMPEG_DEPENDENCIES += libv4l -FFMPEG_CONF_OPTS += --enable-libv4l2 +ifeq ($(BR2_PACKAGE_FFMPEG_FFSERVER),y) +FFMPEG_CONF_OPTS += --enable-ffserver else -FFMPEG_CONF_OPTS += --disable-libv4l2 +FFMPEG_CONF_OPTS += --disable-ffserver endif ifeq ($(BR2_PACKAGE_FFMPEG_AVRESAMPLE),y) @@ -105,17 +105,6 @@ else FFMPEG_CONF_OPTS += --disable-ffprobe endif -ifeq ($(BR2_PACKAGE_FFMPEG_XCBGRAB),y) -FFMPEG_CONF_OPTS += \ - --enable-libxcb \ - --enable-libxcb-shape \ - --enable-libxcb-shm \ - --enable-libxcb-xfixes -FFMPEG_DEPENDENCIES += libxcb -else -FFMPEG_CONF_OPTS += --disable-libxcb -endif - ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y) FFMPEG_CONF_OPTS += --enable-postproc else @@ -155,7 +144,7 @@ endif ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all) FFMPEG_CONF_OPTS += --disable-bsfs \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsf=$(x)) + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsfs=$(x)) endif ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all) @@ -170,21 +159,12 @@ endif ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y) FFMPEG_CONF_OPTS += --enable-indevs -ifeq ($(BR2_PACKAGE_ALSA_LIB),y) -FFMPEG_CONF_OPTS += --enable-alsa -FFMPEG_DEPENDENCIES += alsa-lib -else -FFMPEG_CONF_OPTS += --disable-alsa -endif else FFMPEG_CONF_OPTS += --disable-indevs endif ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y) FFMPEG_CONF_OPTS += --enable-outdevs -ifeq ($(BR2_PACKAGE_ALSA_LIB),y) -FFMPEG_DEPENDENCIES += alsa-lib -endif else FFMPEG_CONF_OPTS += --disable-outdevs endif @@ -216,13 +196,6 @@ else FFMPEG_CONF_OPTS += --disable-libfdk-aac endif -ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBCDIO_PARANOIA),yy) -FFMPEG_CONF_OPTS += --enable-libcdio -FFMPEG_DEPENDENCIES += libcdio-paranoia -else -FFMPEG_CONF_OPTS += --disable-libcdio -endif - ifeq ($(BR2_PACKAGE_GNUTLS),y) FFMPEG_CONF_OPTS += --enable-gnutls --disable-openssl FFMPEG_DEPENDENCIES += gnutls @@ -245,13 +218,6 @@ ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBEBUR128),yy) FFMPEG_DEPENDENCIES += libebur128 endif -ifeq ($(BR2_PACKAGE_LIBDRM),y) -FFMPEG_CONF_OPTS += --enable-libdrm -FFMPEG_DEPENDENCIES += libdrm -else -FFMPEG_CONF_OPTS += --disable-libdrm -endif - ifeq ($(BR2_PACKAGE_LIBOPENH264),y) FFMPEG_CONF_OPTS += --enable-libopenh264 FFMPEG_DEPENDENCIES += libopenh264 @@ -281,14 +247,6 @@ else FFMPEG_CONF_OPTS += --disable-vdpau endif -ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) -FFMPEG_CONF_OPTS += --enable-mmal --enable-omx --enable-omx-rpi \ - --extra-cflags=-I$(STAGING_DIR)/usr/include/IL -FFMPEG_DEPENDENCIES += rpi-userland -else -FFMPEG_CONF_OPTS += --disable-mmal --disable-omx --disable-omx-rpi -endif - # To avoid a circular dependency only use opencv if opencv itself does # not depend on ffmpeg. ifeq ($(BR2_PACKAGE_OPENCV3_LIB_IMGPROC)x$(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),yx) @@ -326,13 +284,6 @@ else FFMPEG_CONF_OPTS += --disable-libbluray endif -ifeq ($(BR2_PACKAGE_INTEL_MEDIASDK),y) -FFMPEG_CONF_OPTS += --enable-libmfx -FFMPEG_DEPENDENCIES += intel-mediasdk -else -FFMPEG_CONF_OPTS += --disable-libmfx -endif - ifeq ($(BR2_PACKAGE_RTMPDUMP),y) FFMPEG_CONF_OPTS += --enable-librtmp FFMPEG_DEPENDENCIES += rtmpdump @@ -368,11 +319,11 @@ else FFMPEG_CONF_OPTS += --disable-libtheora endif -ifeq ($(BR2_PACKAGE_LIBICONV),y) -FFMPEG_CONF_OPTS += --enable-iconv -FFMPEG_DEPENDENCIES += libiconv +ifeq ($(BR2_PACKAGE_WAVPACK),y) +FFMPEG_CONF_OPTS += --enable-libwavpack +FFMPEG_DEPENDENCIES += wavpack else -FFMPEG_CONF_OPTS += --disable-iconv +FFMPEG_CONF_OPTS += --disable-libwavpack endif # ffmpeg freetype support require fenv.h which is only @@ -392,13 +343,6 @@ else FFMPEG_CONF_OPTS += --disable-fontconfig endif -ifeq ($(BR2_PACKAGE_OPENJPEG),y) -FFMPEG_CONF_OPTS += --enable-libopenjpeg -FFMPEG_DEPENDENCIES += openjpeg -else -FFMPEG_CONF_OPTS += --disable-libopenjpeg -endif - ifeq ($(BR2_PACKAGE_X264)$(BR2_PACKAGE_FFMPEG_GPL),yy) FFMPEG_CONF_OPTS += --enable-libx264 FFMPEG_DEPENDENCIES += x264 @@ -413,18 +357,16 @@ else FFMPEG_CONF_OPTS += --disable-libx265 endif -ifeq ($(BR2_PACKAGE_DAV1D),y) -FFMPEG_CONF_OPTS += --enable-libdav1d -FFMPEG_DEPENDENCIES += dav1d -else -FFMPEG_CONF_OPTS += --disable-libdav1d -endif - ifeq ($(BR2_X86_CPU_HAS_MMX),y) -FFMPEG_CONF_OPTS += --enable-x86asm -FFMPEG_DEPENDENCIES += host-nasm +FFMPEG_CONF_OPTS += --enable-yasm +FFMPEG_DEPENDENCIES += host-yasm else -FFMPEG_CONF_OPTS += --disable-x86asm +ifeq ($(BR2_x86_i586),y) +# Needed to work around a bug with gcc 5.x: +# error: 'asm' operand has impossible constraints +FFMPEG_CONF_OPTS += --disable-inline-asm +endif +FFMPEG_CONF_OPTS += --disable-yasm FFMPEG_CONF_OPTS += --disable-mmx endif @@ -494,8 +436,6 @@ FFMPEG_CONF_OPTS += --disable-vfp endif ifeq ($(BR2_ARM_CPU_HAS_NEON),y) FFMPEG_CONF_OPTS += --enable-neon -else ifeq ($(BR2_aarch64),y) -FFMPEG_CONF_OPTS += --enable-neon else FFMPEG_CONF_OPTS += --disable-neon endif @@ -506,26 +446,14 @@ FFMPEG_CONF_OPTS += --disable-mipsfpu else FFMPEG_CONF_OPTS += --enable-mipsfpu endif - -# Fix build failure on several missing assembly instructions -FFMPEG_CONF_OPTS += --disable-asm endif # MIPS -ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC):$(BR2_powerpc64le),y:) -FFMPEG_CONF_OPTS += --enable-altivec -else ifeq ($(BR2_POWERPC_CPU_HAS_VSX):$(BR2_powerpc64le),y:y) -# On LE, ffmpeg AltiVec support needs VSX intrinsics, and VSX -# is an extension to AltiVec. +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) FFMPEG_CONF_OPTS += --enable-altivec else FFMPEG_CONF_OPTS += --disable-altivec endif -# Uses __atomic_fetch_add_4 -ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -FFMPEG_CONF_OPTS += --extra-libs=-latomic -endif - ifeq ($(BR2_STATIC_LIBS),) FFMPEG_CONF_OPTS += --enable-pic else @@ -542,14 +470,6 @@ else ifneq ($(GCC_TARGET_ARCH),) FFMPEG_CONF_OPTS += --cpu="$(GCC_TARGET_ARCH)" endif -FFMPEG_CFLAGS = $(TARGET_CFLAGS) - -ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) -FFMPEG_CONF_OPTS += --disable-optimizations -FFMPEG_CFLAGS += -O0 -endif - -FFMPEG_CONF_ENV += CFLAGS="$(FFMPEG_CFLAGS)" FFMPEG_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF)) # Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others @@ -572,9 +492,4 @@ define FFMPEG_CONFIGURE_CMDS ) endef -define FFMPEG_REMOVE_EXAMPLE_SRC_FILES - rm -rf $(TARGET_DIR)/usr/share/ffmpeg/examples -endef -FFMPEG_POST_INSTALL_TARGET_HOOKS += FFMPEG_REMOVE_EXAMPLE_SRC_FILES - $(eval $(autotools-package)) diff --git a/package/x264/x264.hash b/package/x264/x264.hash index 1777019f..fc8f394c 100644 --- a/package/x264/x264.hash +++ b/package/x264/x264.hash @@ -1,3 +1,2 @@ # Locally computed -sha256 58f39bf23a4e38ac3dd841a3f9ccf2aa16d2b0c35df9aecd9f3b5062780e5d74 x264-35417dcd65a57321fbadf98c9a4cff1cb741db4b.tar.gz -sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 a3a304da9eb1d5e6b19102e3c4156e17a9e7142d6dc1336e1001ff214c986843 x264-72d53ab2ac7af24597a824e868f2ef363a22f5d4.tar.gz diff --git a/package/x264/x264.mk b/package/x264/x264.mk index ddff3c4f..1d32bae3 100644 --- a/package/x264/x264.mk +++ b/package/x264/x264.mk @@ -4,18 +4,18 @@ # ################################################################################ -X264_VERSION = 35417dcd65a57321fbadf98c9a4cff1cb741db4b -X264_SITE = https://code.videolan.org/videolan/x264/-/archive/$(VERSION)/x264-$(VERSION).tar.gz -X264_LICENSE = GPL-2.0+ +X264_VERSION = 72d53ab2ac7af24597a824e868f2ef363a22f5d4 +X264_SITE = http://sources.buildroot.net +X264_LICENSE = GPLv2+ X264_DEPENDENCIES = host-pkgconf X264_LICENSE_FILES = COPYING X264_INSTALL_STAGING = YES -X264_CONF_OPTS = --disable-avs --disable-lavf --disable-swscale +X264_CONF_OPTS = --disable-avs ifeq ($(BR2_i386)$(BR2_x86_64),y) -# nasm needed for assembly files -X264_DEPENDENCIES += host-nasm -X264_CONF_ENV += AS="$(HOST_DIR)/bin/nasm" +# yasm needed for assembly files +X264_DEPENDENCIES += host-yasm +X264_CONF_ENV += AS="$(HOST_DIR)/usr/bin/yasm" else ifeq ($(BR2_ARM_CPU_ARMV7A)$(BR2_aarch64),y) # We need to pass gcc as AS, because the ARM assembly files have to be # preprocessed @@ -36,11 +36,6 @@ ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) X264_CONF_OPTS += --disable-thread endif -# Even though the configure script is not generated by autoconf, x264 -# uses config.sub/config.guess, so we want up-to-date versions of -# them. -X264_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK - # the configure script is not generated by autoconf define X264_CONFIGURE_CMDS (cd $(@D); $(TARGET_CONFIGURE_OPTS) $(X264_CONF_ENV) ./configure \