From ee01247de31377d161cdb1e63345fc656513ed59 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Fri, 19 Jul 2019 10:27:58 +0200 Subject: [PATCH 1/2] kodi (RPi4): update to 18.3-Leia-b0e4133 Signed-off-by: Matthias Reichl --- packages/mediacenter/kodi/package.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index 1c33592901..ce239d5f71 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -19,8 +19,8 @@ case $KODI_VENDOR in PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz" ;; raspberrypi4) - PKG_VERSION="932b08f071fd6cf8d95d01fe0c9e186821a38983" # 18.3-Leia - PKG_SHA256="4f678f48baedca0b6bfacec451424d38a8b8b04c47490899c656305de72f8a15" + PKG_VERSION="b0e4133d0f26c0dd2f305c689c8c6b3ea084d7b1" # 18.3-Leia + PKG_SHA256="9e4d2b0cc597ae3b8ad3352e6a2a306b268ccb3974d2cfa52dedff8c3de73982" PKG_URL="https://github.com/popcornmix/xbmc/archive/$PKG_VERSION.tar.gz" PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz" ;; From ff14fc75deec03ff3692174233a40f3098a329d5 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Fri, 19 Jul 2019 10:28:00 +0200 Subject: [PATCH 2/2] ffmpeg: update RPi4 HEVC patch to 18.3-Leia-b0e4133 Signed-off-by: Matthias Reichl --- .../ffmpeg-001-pfcd_hevc_optimisations.patch | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/multimedia/ffmpeg/patches/rpi4-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch b/packages/multimedia/ffmpeg/patches/rpi4-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch index c1d086fae0..b3bf50a8eb 100644 --- a/packages/multimedia/ffmpeg/patches/rpi4-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch +++ b/packages/multimedia/ffmpeg/patches/rpi4-hevc/ffmpeg-001-pfcd_hevc_optimisations.patch @@ -1020,10 +1020,10 @@ index 0000000000..6a1d95f195 +#endif // __CTRL_FILES_H__ diff --git a/libavcodec/rpi_hevc.c b/libavcodec/rpi_hevc.c new file mode 100644 -index 0000000000..a000077f33 +index 0000000000..fcf03d849c --- /dev/null +++ b/libavcodec/rpi_hevc.c -@@ -0,0 +1,1065 @@ +@@ -0,0 +1,1075 @@ +// FFMPEG HEVC decoder hardware accelerator +// Andrew Holme, Argon Design Ltd +// Copyright (c) June 2017 Raspberry Pi Ltd @@ -1331,6 +1331,12 @@ index 0000000000..a000077f33 + +static int check_status(RPI_T *rpi) { + int status, c, p; ++ ++ // this is the definition of successful completion of phase 1 ++ // it assures that status register is zero and all blocks in each tile have completed ++ if (rpi->apb_read(rpi->id, RPI_CFSTATUS) == rpi->apb_read(rpi->id, RPI_CFNUM)) ++ return 0; ++ + status = rpi->apb_read(rpi->id, RPI_STATUS); + p = (status>>4)&1; + c = (status>>3)&1; @@ -1340,7 +1346,7 @@ index 0000000000..a000077f33 + if (c) rpi->max_coeff64 += rpi->max_coeff64/2; + return 1; + } -+ return 0; ++ return 2; +} + +////////////////////////////////////////////////////////////////////////////// @@ -1697,6 +1703,7 @@ index 0000000000..a000077f33 + + int i, a64, x; + char *buf; ++ int status = 1; + + // End of phase 1 command compilation + if (pps->entropy_coding_sync_enabled_flag) { @@ -1725,7 +1732,8 @@ index 0000000000..a000077f33 + rpi->axi_dump(rpi->id, ((uint64_t)a64)<<6, rpi->cmd_len * sizeof(struct RPI_CMD)); + rpi->apb_write_addr(rpi->id, RPI_CFBASE, a64); + rpi->wait_interrupt(rpi->id, 1); -+ if (check_status(rpi)==0) break; // No PU/COEFF overflow? ++ status = check_status(rpi); ++ if (status != 1) break; // No PU/COEFF overflow? + } + pthread_mutex_unlock(&rpi->mutex_phase1); + @@ -1830,10 +1838,12 @@ index 0000000000..a000077f33 + + rpi->apb_dump_regs(rpi->id, 0x0, 32); + rpi->apb_dump_regs(rpi->id, 0x8000, 24); -+ rpi->apb_write(rpi->id, RPI_NUMROWS, rpi->PicHeightInCtbsY); -+ rpi->apb_read_drop(rpi->id, RPI_NUMROWS); // Read back to confirm write has reached block -+ rpi->wait_interrupt(rpi->id, 2); -+ ++ // only do phase if phase 1 completed without errors ++ if (status == 0) { ++ rpi->apb_write(rpi->id, RPI_NUMROWS, rpi->PicHeightInCtbsY); ++ rpi->apb_read_drop(rpi->id, RPI_NUMROWS); // Read back to confirm write has reached block ++ rpi->wait_interrupt(rpi->id, 2); ++ } +//printf("%s: %dx%d %d\n", __FUNCTION__, f->width, f->height, f->linesize[0]); +#if defined(AXI_BUFFERS) + // Copy YUV output frame