diff --git a/packages/multimedia/ffmpeg/package.mk b/packages/multimedia/ffmpeg/package.mk index ba72c2463f..cf412908c3 100644 --- a/packages/multimedia/ffmpeg/package.mk +++ b/packages/multimedia/ffmpeg/package.mk @@ -38,6 +38,7 @@ else fi if [ "$PROJECT" = "Rockchip" ]; then + PKG_PATCH_DIRS+=" rkmpp" PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET rkmpp" PKG_FFMPEG_RKMPP="--enable-rkmpp --enable-libdrm --enable-version3" else @@ -45,10 +46,9 @@ else fi if [ "$PROJECT" = "Allwinner" ]; then + PKG_PATCH_DIRS+=" v4l2-request-api" PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libdrm systemd" # systemd is needed for libudev PKG_FFMPEG_V4L2_REQUEST="--enable-v4l2-request --enable-libudev --enable-libdrm" -else - PKG_FFMPEG_V4L2_REQUEST="--disable-v4l2-request --disable-libudev" fi if build_with_debug; then @@ -59,6 +59,11 @@ fi if [ "$PROJECT" = "RPi" ]; then PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET bcm2835-driver" + if [ "$DEVICE" = "RPi4" ]; then + PKG_PATCH_DIRS+=" rpi4-hevc" + else + PKG_PATCH_DIRS+=" rpi-hevc" + fi fi if target_has_feature neon; then diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-99.1005-rkmppdec-Kodi-need-more-buffers.patch b/packages/multimedia/ffmpeg/patches/rkmpp/ffmpeg-99.1005-rkmppdec-Kodi-need-more-buffers.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-99.1005-rkmppdec-Kodi-need-more-buffers.patch rename to packages/multimedia/ffmpeg/patches/rkmpp/ffmpeg-99.1005-rkmppdec-Kodi-need-more-buffers.patch diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-99.1006-rkmppdec-continue-on-errinfo-frame.patch b/packages/multimedia/ffmpeg/patches/rkmpp/ffmpeg-99.1006-rkmppdec-continue-on-errinfo-frame.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-99.1006-rkmppdec-continue-on-errinfo-frame.patch rename to packages/multimedia/ffmpeg/patches/rkmpp/ffmpeg-99.1006-rkmppdec-continue-on-errinfo-frame.patch diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-99.1007-rkmppdec-enable-mpeg2.patch b/packages/multimedia/ffmpeg/patches/rkmpp/ffmpeg-99.1007-rkmppdec-enable-mpeg2.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-99.1007-rkmppdec-enable-mpeg2.patch rename to packages/multimedia/ffmpeg/patches/rkmpp/ffmpeg-99.1007-rkmppdec-enable-mpeg2.patch diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-99.1010-rkmppdec-set-mastering-display-and-content-light-sid.patch b/packages/multimedia/ffmpeg/patches/rkmpp/ffmpeg-99.1010-rkmppdec-set-mastering-display-and-content-light-sid.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-99.1010-rkmppdec-set-mastering-display-and-content-light-sid.patch rename to packages/multimedia/ffmpeg/patches/rkmpp/ffmpeg-99.1010-rkmppdec-set-mastering-display-and-content-light-sid.patch diff --git a/projects/RPi/devices/RPi2/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch b/packages/multimedia/ffmpeg/patches/rpi-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch similarity index 100% rename from projects/RPi/devices/RPi2/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch rename to packages/multimedia/ffmpeg/patches/rpi-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch diff --git a/projects/RPi/devices/RPi4/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch b/packages/multimedia/ffmpeg/patches/rpi4-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch similarity index 99% rename from projects/RPi/devices/RPi4/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch rename to packages/multimedia/ffmpeg/patches/rpi4-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch index 317adbdbf9..fbdc27f516 100644 --- a/projects/RPi/devices/RPi4/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch +++ b/packages/multimedia/ffmpeg/patches/rpi4-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch @@ -1,17 +1,17 @@ diff --git a/configure b/configure -index 2c9359273c..36258ed184 100755 +index 172611bb4a..fa204fca71 100755 --- a/configure +++ b/configure -@@ -1788,6 +1788,8 @@ HWACCEL_LIBRARY_LIST=" +@@ -1782,6 +1782,8 @@ HWACCEL_LIBRARY_LIST=" + mmal omx opencl - v4l2_request + rpi4_8 + rpi4_10 " DOCUMENT_LIST=" -@@ -1849,6 +1851,7 @@ SUBSYSTEM_LIST=" +@@ -1843,6 +1845,7 @@ SUBSYSTEM_LIST=" pixelutils network rdft @@ -19,7 +19,7 @@ index 2c9359273c..36258ed184 100755 " # COMPONENT_LIST needs to come last to ensure correct dependency checking -@@ -2318,6 +2321,7 @@ CONFIG_EXTRA=" +@@ -2312,6 +2315,7 @@ CONFIG_EXTRA=" rangecoder riffdec riffenc @@ -421,7 +421,7 @@ index d7a7eb0662..4ee87e742b 100644 { 0 }, }; diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index 8b3eab6fb6..84f7e1a1e4 100644 +index 4b8ad121db..40ec4691ef 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -6,6 +6,10 @@ HEADERS = ac3_parser.h \ @@ -446,7 +446,7 @@ index 8b3eab6fb6..84f7e1a1e4 100644 vorbis_parser.o \ xiph.o \ -@@ -361,6 +369,7 @@ OBJS-$(CONFIG_HAP_ENCODER) += hapenc.o hap.o +@@ -360,6 +368,7 @@ OBJS-$(CONFIG_HAP_ENCODER) += hapenc.o hap.o OBJS-$(CONFIG_HEVC_DECODER) += hevcdec.o hevc_mvs.o \ hevc_cabac.o hevc_refs.o hevcpred.o \ hevcdsp.o hevc_filter.o hevc_data.o @@ -455,10 +455,10 @@ index 8b3eab6fb6..84f7e1a1e4 100644 OBJS-$(CONFIG_HEVC_CUVID_DECODER) += cuviddec.o OBJS-$(CONFIG_HEVC_MEDIACODEC_DECODER) += mediacodecdec.o diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h -index 4c4581c895..f519b1d8c4 100644 +index fb0c6fae70..798d0903eb 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h -@@ -3212,7 +3212,13 @@ typedef struct AVCodecContext { +@@ -3208,7 +3208,13 @@ typedef struct AVCodecContext { #endif /** @@ -474,11 +474,11 @@ index 4c4581c895..f519b1d8c4 100644 * discarded by the caller from the end of the stream to get the original * audio without any trailing padding. diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c -index df33433150..a692e685c4 100644 +index c8877626d2..da769116ec 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c -@@ -365,12 +365,17 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) - CONFIG_HEVC_V4L2REQUEST_HWACCEL + \ +@@ -364,12 +364,17 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) + CONFIG_HEVC_NVDEC_HWACCEL + \ CONFIG_HEVC_VAAPI_HWACCEL + \ CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL + \ + CONFIG_HEVC_RPI4_8_HWACCEL + \ @@ -495,7 +495,7 @@ index df33433150..a692e685c4 100644 #if CONFIG_HEVC_DXVA2_HWACCEL *fmt++ = AV_PIX_FMT_DXVA2_VLD; #endif -@@ -395,6 +400,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) +@@ -391,6 +396,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #endif break; case AV_PIX_FMT_YUV420P10: @@ -505,27 +505,27 @@ index df33433150..a692e685c4 100644 #if CONFIG_HEVC_DXVA2_HWACCEL *fmt++ = AV_PIX_FMT_DXVA2_VLD; #endif -@@ -3564,6 +3572,12 @@ AVCodec ff_hevc_decoder = { +@@ -3556,6 +3564,12 @@ AVCodec ff_hevc_decoder = { + #endif #if CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL HWACCEL_VIDEOTOOLBOX(hevc), - #endif ++#endif +#if CONFIG_HEVC_RPI4_8_HWACCEL + HWACCEL_RPI4_8(hevc), +#endif +#if CONFIG_HEVC_RPI4_10_HWACCEL + HWACCEL_RPI4_10(hevc), -+#endif - #if CONFIG_HEVC_V4L2REQUEST_HWACCEL - HWACCEL_V4L2REQUEST(hevc), #endif + NULL + }, diff --git a/libavcodec/hwaccel.h b/libavcodec/hwaccel.h -index 2eefc91e7e..0e482f2265 100644 +index 3aaa92571c..c6bc36b3e3 100644 --- a/libavcodec/hwaccel.h +++ b/libavcodec/hwaccel.h -@@ -82,5 +82,9 @@ typedef struct AVCodecHWConfigInternal { +@@ -80,5 +80,9 @@ typedef struct AVCodecHWConfigInternal { + HW_CONFIG_HWACCEL(0, 0, 1, D3D11VA_VLD, NONE, ff_ ## codec ## _d3d11va_hwaccel) + #define HWACCEL_XVMC(codec) \ HW_CONFIG_HWACCEL(0, 0, 1, XVMC, NONE, ff_ ## codec ## _xvmc_hwaccel) - #define HWACCEL_V4L2REQUEST(codec) \ - HW_CONFIG_HWACCEL(1, 0, 0, DRM_PRIME, DRM, ff_ ## codec ## _v4l2request_hwaccel) +#define HWACCEL_RPI4_8(codec) \ + HW_CONFIG_HWACCEL(0, 0, 1, RPI4_8, NONE, ff_ ## codec ## _rpi4_8_hwaccel) +#define HWACCEL_RPI4_10(codec) \ @@ -533,10 +533,10 @@ index 2eefc91e7e..0e482f2265 100644 #endif /* AVCODEC_HWACCEL_H */ diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h -index d183675abe..31a4a94e28 100644 +index 7d73da8676..01799f869a 100644 --- a/libavcodec/hwaccels.h +++ b/libavcodec/hwaccels.h -@@ -77,5 +77,7 @@ extern const AVHWAccel ff_wmv3_dxva2_hwaccel; +@@ -74,5 +74,7 @@ extern const AVHWAccel ff_wmv3_dxva2_hwaccel; extern const AVHWAccel ff_wmv3_nvdec_hwaccel; extern const AVHWAccel ff_wmv3_vaapi_hwaccel; extern const AVHWAccel ff_wmv3_vdpau_hwaccel; @@ -3942,10 +3942,10 @@ index 0000000000..0e39b8e3b3 +#endif + diff --git a/libavutil/buffer.c b/libavutil/buffer.c -index 9c5d530c7a..e07f947cdc 100644 +index 8d1aa5fa84..649876db77 100644 --- a/libavutil/buffer.c +++ b/libavutil/buffer.c -@@ -368,3 +368,9 @@ AVBufferRef *av_buffer_pool_get(AVBufferPool *pool) +@@ -355,3 +355,9 @@ AVBufferRef *av_buffer_pool_get(AVBufferPool *pool) return ret; } @@ -3956,10 +3956,10 @@ index 9c5d530c7a..e07f947cdc 100644 + return buf->opaque; +} diff --git a/libavutil/buffer.h b/libavutil/buffer.h -index fab745f853..d0271e50fc 100644 +index 73b6bd0b14..d907de3f1c 100644 --- a/libavutil/buffer.h +++ b/libavutil/buffer.h -@@ -289,6 +289,9 @@ void av_buffer_pool_uninit(AVBufferPool **pool); +@@ -284,6 +284,9 @@ void av_buffer_pool_uninit(AVBufferPool **pool); */ AVBufferRef *av_buffer_pool_get(AVBufferPool *pool); @@ -4024,7 +4024,7 @@ index 34a1531489..0a6ff1f482 100644 }; diff --git a/pi-util/conf_pi1.sh b/pi-util/conf_pi1.sh -new file mode 100644 +new file mode 100755 index 0000000000..ec25b81c31 --- /dev/null +++ b/pi-util/conf_pi1.sh @@ -4061,7 +4061,7 @@ index 0000000000..ec25b81c31 +# gcc option for getting asm listing +# -Wa,-ahls diff --git a/pi-util/conf_pi2.sh b/pi-util/conf_pi2.sh -new file mode 100644 +new file mode 100755 index 0000000000..7ec0402ce8 --- /dev/null +++ b/pi-util/conf_pi2.sh diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-95.0001-avutil-add-av_buffer_pool_reclaim.patch b/packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0001-avutil-add-av_buffer_pool_reclaim.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-95.0001-avutil-add-av_buffer_pool_reclaim.patch rename to packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0001-avutil-add-av_buffer_pool_reclaim.patch diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-95.0002-Add-common-V4L2-request-API-code.patch b/packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0002-Add-common-V4L2-request-API-code.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-95.0002-Add-common-V4L2-request-API-code.patch rename to packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0002-Add-common-V4L2-request-API-code.patch diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-95.0003-Add-V4L2-request-API-mpeg2-hwaccel.patch b/packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0003-Add-V4L2-request-API-mpeg2-hwaccel.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-95.0003-Add-V4L2-request-API-mpeg2-hwaccel.patch rename to packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0003-Add-V4L2-request-API-mpeg2-hwaccel.patch diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-95.0004-Add-V4L2-request-API-h264-hwaccel.patch b/packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0004-Add-V4L2-request-API-h264-hwaccel.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-95.0004-Add-V4L2-request-API-h264-hwaccel.patch rename to packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0004-Add-V4L2-request-API-h264-hwaccel.patch diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-95.0005-Add-V4L2-request-API-hevc-hwaccel.patch b/packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0005-Add-V4L2-request-API-hevc-hwaccel.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-95.0005-Add-V4L2-request-API-hevc-hwaccel.patch rename to packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0005-Add-V4L2-request-API-hevc-hwaccel.patch diff --git a/packages/multimedia/ffmpeg/patches/ffmpeg-95.0006-Add-and-use-private-linux-headers-for-V4L2-request-A.patch b/packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0006-Add-and-use-private-linux-headers-for-V4L2-request-A.patch similarity index 100% rename from packages/multimedia/ffmpeg/patches/ffmpeg-95.0006-Add-and-use-private-linux-headers-for-V4L2-request-A.patch rename to packages/multimedia/ffmpeg/patches/v4l2-request-api/ffmpeg-95.0006-Add-and-use-private-linux-headers-for-V4L2-request-A.patch diff --git a/projects/RPi/devices/RPi/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch b/projects/RPi/devices/RPi/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch deleted file mode 120000 index f1fa7c5050..0000000000 --- a/projects/RPi/devices/RPi/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch +++ /dev/null @@ -1 +0,0 @@ -../../../RPi2/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch \ No newline at end of file diff --git a/projects/RPi/devices/Slice/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch b/projects/RPi/devices/Slice/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch deleted file mode 120000 index f1fa7c5050..0000000000 --- a/projects/RPi/devices/Slice/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch +++ /dev/null @@ -1 +0,0 @@ -../../../RPi2/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch \ No newline at end of file diff --git a/projects/RPi/devices/Slice3/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch b/projects/RPi/devices/Slice3/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch deleted file mode 120000 index f1fa7c5050..0000000000 --- a/projects/RPi/devices/Slice3/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch +++ /dev/null @@ -1 +0,0 @@ -../../../RPi2/patches/ffmpeg/ffmpeg-001-pfcd_hevc_optimisations.patch \ No newline at end of file