diff options
-rw-r--r-- | community/kodi/APKBUILD | 26 | ||||
-rw-r--r-- | community/kodi/ffmpeg-4.0.1.patch | 345 | ||||
-rw-r--r-- | community/kodi/vaapi.patch | 15 |
3 files changed, 373 insertions, 13 deletions
diff --git a/community/kodi/APKBUILD b/community/kodi/APKBUILD index 38f108f7a4..d61c5f2f01 100644 --- a/community/kodi/APKBUILD +++ b/community/kodi/APKBUILD @@ -3,7 +3,7 @@ pkgname=kodi pkgver=17.6 _realname=Krypton -pkgrel=8 +pkgrel=9 pkgdesc="A software media player and entertainment hub for digital media" url="http://kodi.tv" arch="x86 x86_64" @@ -24,7 +24,7 @@ depends_dev="gettext-dev boost-dev mesa-dev glew-dev glu-dev mariadb-connector-c libdvdcss-dev" makedepends="$depends_dev automake autoconf m4 libtool swig findutils openjdk8-jre-base boost-thread zip gperf cmake coreutils nasm tar - git" + git bash" subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg" install="" replaces="xbmc" @@ -37,6 +37,8 @@ source="https://github.com/xbmc/xbmc/archive/$pkgver-$_realname.tar.gz add-missing-includes.patch set-default-stacksize.patch 19-fix-audio-with-latest-ffmpeg.patch + ffmpeg-4.0.1.patch + vaapi.patch " builddir="$srcdir/xbmc-$pkgver-$_realname" @@ -44,12 +46,8 @@ builddir="$srcdir/xbmc-$pkgver-$_realname" prepare() { local i cd "$builddir" - for i in $source; do - case $i in - *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;; - esac - done - MAKEFLAGS="-j1" ./bootstrap || return 1 + default_prepare + MAKEFLAGS="-j1" ./bootstrap mkdir -p crossguid make -j1 -C tools/depends/target/crossguid PREFIX="$PWD"/crossguid } @@ -58,6 +56,7 @@ build() { cd "$builddir" LDFLAGS="$LDFLAGS -L$PWD/crossguid/lib" \ CXXFLAGS="$CXXFLAGS -I$PWD/crossguid/include" \ + CONFIG_SHELL=/bin/bash \ ./configure \ --build=$CBUILD \ --host=$CHOST \ @@ -71,14 +70,13 @@ build() { --with-ffmpeg=shared \ --enable-static=no \ --enable-libbluray \ - --enable-external-libraries \ - || return 1 - make || return 1 + --enable-external-libraries + make } package() { cd "$builddir" - make DESTDIR="$pkgdir" install || return 1 + make DESTDIR="$pkgdir" install } sha512sums="1f1ba91e6129ab423f9ad47b63d7bb75775dbf18638a96413a572aaa790f4f0d738ca35486513e158a7f55d501f78f08dd9d68aabe2fbb80a729c6091b264111 17.6-Krypton.tar.gz @@ -88,4 +86,6 @@ f225073ca75647581463094c0a9d1dd1fa3e1a58353292e1c99da30eb6f97026f4647853da2bbdc7 118a4e10ac5abdd9b6cfc87ad1b91cf03b3641023337571250beb5125c2c830e678eced1e42703253d66af61ec9fe3ce6c44cf7c0012d457f9bebc0ddfe992d2 remove-filewrap.patch 378a0e8fd9676dd76cfb30d62085b953625dd0185e2673de2331fc7ae0802dae4f56d0b74e878e4d313942fda8831e9669bff284dbe974db5ad16fe07af884d6 add-missing-includes.patch 3fd97e9fa22e59b3cd30fdad19474e177a9d062598765fa8ba4955f1da4e10581ff1463dd0794d3ee3cefebf753007a4d445b2bc47a257574d3927c1408b8876 set-default-stacksize.patch -3c35ef05b79cf0af9bacc74bb79dd1178efb1cb6de0354b7a35c732c2006cc7071748a062f3b274591dcb30179d4cc0af527a223dcad2919426bac663f038dbb 19-fix-audio-with-latest-ffmpeg.patch" +3c35ef05b79cf0af9bacc74bb79dd1178efb1cb6de0354b7a35c732c2006cc7071748a062f3b274591dcb30179d4cc0af527a223dcad2919426bac663f038dbb 19-fix-audio-with-latest-ffmpeg.patch +e6f0065cd4e505ae861f3df810d62bbd2255c38d3fd7d622cfb742dba26bad1a992a1c1812aaf540e17ce23d95bcb9c3895b6e78e0a2cfceebbd3a60b3a5cc24 ffmpeg-4.0.1.patch +d30e0c1c7e68ce67a35e4d552517058a1da96a7bd0b441ec9084f4e8d695d3c368b3230660a069a74fa2cb7c2d32bbfdcce51517c7d88fc9b043068e953b5cc9 vaapi.patch" diff --git a/community/kodi/ffmpeg-4.0.1.patch b/community/kodi/ffmpeg-4.0.1.patch new file mode 100644 index 0000000000..ba1a5320e2 --- /dev/null +++ b/community/kodi/ffmpeg-4.0.1.patch @@ -0,0 +1,345 @@ +--- xbmc-17.6-Krypton/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h 2018-07-02 20:54:54.388785087 +0200 +@@ -56,7 +56,7 @@ + SwrContext *m_SwrCtx; + CAEChannelInfo m_Layout; + AVPacket m_Pkt; +- uint8_t m_Buffer[8 + FF_MIN_BUFFER_SIZE]; ++ uint8_t m_Buffer[8 + AV_INPUT_BUFFER_MIN_SIZE]; + int m_BufferSize; + int m_OutputSize; + double m_OutputRatio; +--- xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2018-07-02 21:13:08.856841550 +0200 +@@ -82,8 +82,8 @@ + m_pCodecContext->debug = 0; + m_pCodecContext->workaround_bugs = 1; + +- if (pCodec->capabilities & CODEC_CAP_TRUNCATED) +- m_pCodecContext->flags |= CODEC_FLAG_TRUNCATED; ++ if (pCodec->capabilities & AV_CODEC_CAP_TRUNCATED) ++ m_pCodecContext->flags |= AV_CODEC_FLAG_TRUNCATED; + + m_matrixEncoding = AV_MATRIX_ENCODING_NONE; + m_channels = 0; +@@ -98,7 +98,7 @@ + + if( hints.extradata && hints.extrasize > 0 ) + { +- m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + FF_INPUT_BUFFER_PADDING_SIZE); ++ m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + AV_INPUT_BUFFER_PADDING_SIZE); + if(m_pCodecContext->extradata) + { + m_pCodecContext->extradata_size = hints.extrasize; +--- xbmc-17.6-Krypton/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp 2018-07-02 21:06:40.206821500 +0200 +@@ -91,7 +91,13 @@ + return false; + } + ++#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(7,0,0) ++ const ++#endif + AVFilter* srcFilter = avfilter_get_by_name("abuffer"); ++#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(7,0,0) ++ const ++#endif + AVFilter* outFilter = avfilter_get_by_name("abuffersink"); + + std::string args = StringUtils::Format("time_base=1/%d:sample_rate=%d:sample_fmt=%s:channel_layout=0x%" PRIx64, +@@ -121,6 +127,9 @@ + + bool CActiveAEFilter::CreateAtempoFilter() + { ++#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(7,0,0) ++ const ++#endif + AVFilter *atempo; + + atempo = avfilter_get_by_name("atempo"); +--- xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp 2018-07-02 21:22:36.309870824 +0200 +@@ -73,7 +73,7 @@ + if( hints.extradata && hints.extrasize > 0 ) + { + m_pCodecContext->extradata_size = hints.extrasize; +- m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + FF_INPUT_BUFFER_PADDING_SIZE); ++ m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + AV_INPUT_BUFFER_PADDING_SIZE); + memcpy(m_pCodecContext->extradata, hints.extradata, hints.extrasize); + + // start parsing of extra data - create a copy to be safe and make it zero-terminating to avoid access violations! +--- xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp 2018-07-02 21:23:35.419873874 +0200 +@@ -68,7 +68,7 @@ + * Note, if the first 23 bits of the additional bytes are not 0 then damaged + * MPEG bitstreams could cause overread and segfault + */ +- pPacket->pData =(uint8_t*)_aligned_malloc(iDataSize + FF_INPUT_BUFFER_PADDING_SIZE, 16); ++ pPacket->pData =(uint8_t*)_aligned_malloc(iDataSize + AV_INPUT_BUFFER_PADDING_SIZE, 16); + if (!pPacket->pData) + { + FreeDemuxPacket(pPacket); +@@ -76,7 +76,7 @@ + } + + // reset the last 8 bytes to 0; +- memset(pPacket->pData + iDataSize, 0, FF_INPUT_BUFFER_PADDING_SIZE); ++ memset(pPacket->pData + iDataSize, 0, AV_INPUT_BUFFER_PADDING_SIZE); + } + + // setup defaults +--- xbmc-17.6-Krypton/xbmc/utils/BitstreamConverter.cpp 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/utils/BitstreamConverter.cpp 2018-07-02 21:26:49.852883905 +0200 +@@ -686,13 +686,13 @@ + unit_size = extradata[0] << 8 | extradata[1]; + total_size += unit_size + 4; + +- if (total_size > INT_MAX - FF_INPUT_BUFFER_PADDING_SIZE || ++ if (total_size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE || + (extradata + 2 + unit_size) > ((uint8_t*)in_extradata + in_extrasize)) + { + av_free(out); + return false; + } +- tmp = av_realloc(out, total_size + FF_INPUT_BUFFER_PADDING_SIZE); ++ tmp = av_realloc(out, total_size + AV_INPUT_BUFFER_PADDING_SIZE); + if (!tmp) + { + av_free(out); +@@ -713,7 +713,7 @@ + } + + if (out) +- memset(out + total_size, 0, FF_INPUT_BUFFER_PADDING_SIZE); ++ memset(out + total_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); + + if (!sps_seen) + CLog::Log(LOGDEBUG, "SPS NALU missing or invalid. The resulting stream may not play"); +@@ -776,13 +776,13 @@ + } + total_size += unit_size + 4; + +- if (total_size > INT_MAX - FF_INPUT_BUFFER_PADDING_SIZE || ++ if (total_size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE || + (extradata + unit_size) > ((uint8_t*)in_extradata + in_extrasize)) + { + av_free(out); + return false; + } +- tmp = av_realloc(out, total_size + FF_INPUT_BUFFER_PADDING_SIZE); ++ tmp = av_realloc(out, total_size + AV_INPUT_BUFFER_PADDING_SIZE); + if (!tmp) + { + av_free(out); +@@ -796,7 +796,7 @@ + } + + if (out) +- memset(out + total_size, 0, FF_INPUT_BUFFER_PADDING_SIZE); ++ memset(out + total_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); + + if (!sps_seen) + CLog::Log(LOGDEBUG, "SPS NALU missing or invalid. The resulting stream may not play"); +--- xbmc-17.6-Krypton/xbmc/guilib/FFmpegImage.cpp 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/guilib/FFmpegImage.cpp 2018-07-02 21:29:40.403892703 +0200 +@@ -551,7 +551,7 @@ + tdm.avOutctx->time_base.num = 1; + tdm.avOutctx->time_base.den = 1; + tdm.avOutctx->pix_fmt = jpg_output ? AV_PIX_FMT_YUVJ420P : AV_PIX_FMT_RGBA; +- tdm.avOutctx->flags = CODEC_FLAG_QSCALE; ++ tdm.avOutctx->flags = AV_CODEC_FLAG_QSCALE; + tdm.avOutctx->mb_lmin = tdm.avOutctx->qmin * FF_QP2LAMBDA; + tdm.avOutctx->mb_lmax = tdm.avOutctx->qmax * FF_QP2LAMBDA; + tdm.avOutctx->global_quality = tdm.avOutctx->qmin * FF_QP2LAMBDA; +--- xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp 2018-07-02 21:32:30.151901460 +0200 +@@ -25,7 +25,7 @@ + #include "settings/Settings.h" + #include "../DVDClock.h" + +-#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - FF_INPUT_BUFFER_PADDING_SIZE) ++#define AV_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) + + + class CDemuxStreamClientInternal +@@ -172,16 +172,16 @@ + if (stream->m_parser_split && stream->m_parser->parser->split) + { + int len = stream->m_parser->parser->split(stream->m_context, pkt->pData, pkt->iSize); +- if (len > 0 && len < FF_MAX_EXTRADATA_SIZE) ++ if (len > 0 && len < AV_MAX_EXTRADATA_SIZE) + { + if (st->ExtraData) + delete[] (uint8_t*)st->ExtraData; + st->changes++; + st->disabled = false; + st->ExtraSize = len; +- st->ExtraData = new uint8_t[len+FF_INPUT_BUFFER_PADDING_SIZE]; ++ st->ExtraData = new uint8_t[len+AV_INPUT_BUFFER_PADDING_SIZE]; + memcpy(st->ExtraData, pkt->pData, len); +- memset((uint8_t*)st->ExtraData + len, 0 , FF_INPUT_BUFFER_PADDING_SIZE); ++ memset((uint8_t*)st->ExtraData + len, 0 , AV_INPUT_BUFFER_PADDING_SIZE); + stream->m_parser_split = false; + } + } +--- xbmc-17.6-Krypton/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp 2017-11-14 17:55:01.000000000 +0100 ++++ xbmc-17.6-Krypton/xbmc/cores/omxplayer/OMXAudioCodecOMX.cpp 2018-07-02 21:39:23.350922777 +0200 +@@ -86,8 +86,8 @@ + m_pCodecContext->debug = 0; + m_pCodecContext->workaround_bugs = 1; + +- if (pCodec->capabilities & CODEC_CAP_TRUNCATED) +- m_pCodecContext->flags |= CODEC_FLAG_TRUNCATED; ++ if (pCodec->capabilities & AV_CODEC_CAP_TRUNCATED) ++ m_pCodecContext->flags |= AV_CODEC_FLAG_TRUNCATED; + + m_channels = 0; + m_pCodecContext->channels = hints.channels; +@@ -110,7 +110,7 @@ + + if( hints.extradata && hints.extrasize > 0 ) + { +- m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + FF_INPUT_BUFFER_PADDING_SIZE); ++ m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + AV_INPUT_BUFFER_PADDING_SIZE); + if(m_pCodecContext->extradata) + { + m_pCodecContext->extradata_size = hints.extrasize; +@@ -222,7 +222,7 @@ + + if (m_iBufferOutputAlloced < m_iBufferOutputUsed + outputSize) + { +- m_pBufferOutput = (BYTE*)av_realloc(m_pBufferOutput, m_iBufferOutputUsed + outputSize + FF_INPUT_BUFFER_PADDING_SIZE); ++ m_pBufferOutput = (BYTE*)av_realloc(m_pBufferOutput, m_iBufferOutputUsed + outputSize + AV_INPUT_BUFFER_PADDING_SIZE); + m_iBufferOutputAlloced = m_iBufferOutputUsed + outputSize; + } + + +--- xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp.orig 2018-07-03 03:58:00.987120857 +0200 ++++ xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp 2018-07-03 04:00:22.013863754 +0200 +@@ -382,16 +382,6 @@ + else + m_decoderState = STATE_SW_SINGLE; + +-#if defined(TARGET_DARWIN_IOS) +- // ffmpeg with enabled neon will crash and burn if this is enabled +- m_pCodecContext->flags &= CODEC_FLAG_EMU_EDGE; +-#else +- if (pCodec->id != AV_CODEC_ID_H264 && pCodec->capabilities & CODEC_CAP_DR1 +- && pCodec->id != AV_CODEC_ID_VP8 +- ) +- m_pCodecContext->flags |= CODEC_FLAG_EMU_EDGE; +-#endif +- + // if we don't do this, then some codecs seem to fail. + m_pCodecContext->coded_height = hints.height; + m_pCodecContext->coded_width = hints.width; +@@ -882,23 +872,7 @@ + else + pDvdVideoPicture->color_range = 0; + +- int qscale_type; +- pDvdVideoPicture->qp_table = av_frame_get_qp_table(m_pFrame, &pDvdVideoPicture->qstride, &qscale_type); +- +- switch (qscale_type) +- { +- case FF_QSCALE_TYPE_MPEG1: +- pDvdVideoPicture->qscale_type = DVP_QSCALE_MPEG1; +- break; +- case FF_QSCALE_TYPE_MPEG2: +- pDvdVideoPicture->qscale_type = DVP_QSCALE_MPEG2; +- break; +- case FF_QSCALE_TYPE_H264: +- pDvdVideoPicture->qscale_type = DVP_QSCALE_H264; +- break; +- default: +- pDvdVideoPicture->qscale_type = DVP_QSCALE_UNKNOWN; +- } ++ pDvdVideoPicture->qp_table = av_frame_get_qp_table(m_pFrame, &pDvdVideoPicture->qstride, &pDvdVideoPicture->qscale_type); + + if (pDvdVideoPicture->iRepeatPicture) + pDvdVideoPicture->dts = DVD_NOPTS_VALUE; +@@ -989,7 +963,13 @@ + return -1; + } + ++#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(7,0,0) ++ const ++#endif + AVFilter* srcFilter = avfilter_get_by_name("buffer"); ++#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(7,0,0) ++ const ++#endif + AVFilter* outFilter = avfilter_get_by_name("buffersink"); // should be last filter in the graph for now + + std::string args = StringUtils::Format("%d:%d:%d:%d:%d:%d:%d", + +--- xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp.orig 2018-07-03 04:09:57.457702946 +0200 ++++ xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp 2018-07-03 04:10:31.769395588 +0200 +@@ -390,7 +390,7 @@ + if( hints.extradata && hints.extrasize > 0 ) + { + m_pCodecContext->extradata_size = hints.extrasize; +- m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + FF_INPUT_BUFFER_PADDING_SIZE); ++ m_pCodecContext->extradata = (uint8_t*)av_mallocz(hints.extrasize + AV_INPUT_BUFFER_PADDING_SIZE); + memcpy(m_pCodecContext->extradata, hints.extradata, hints.extrasize); + } + +--- xbmc-17.6-Krypton/xbmc/cdrip/EncoderFFmpeg.cpp.orig 2018-07-03 04:15:20.761822331 +0200 ++++ xbmc-17.6-Krypton/xbmc/cdrip/EncoderFFmpeg.cpp 2018-07-03 04:16:14.960339734 +0200 +@@ -119,8 +119,8 @@ + + if(m_Format->oformat->flags & AVFMT_GLOBALHEADER) + { +- m_CodecCtx->flags |= CODEC_FLAG_GLOBAL_HEADER; +- m_Format->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ m_CodecCtx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; ++ m_Format->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + } + + switch(m_iInBitsPerSample) + +--- xbmc-17.6-Krypton/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp.orig 2018-07-03 04:22:26.222041472 +0200 ++++ xbmc-17.6-Krypton/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp 2018-07-03 04:22:44.318880987 +0200 +@@ -2955,7 +2955,7 @@ + int fileSize = sound->GetFileSize(); + + fmt_ctx = avformat_alloc_context(); +- unsigned char* buffer = (unsigned char*)av_malloc(SOUNDBUFFER_SIZE+FF_INPUT_BUFFER_PADDING_SIZE); ++ unsigned char* buffer = (unsigned char*)av_malloc(SOUNDBUFFER_SIZE+AV_INPUT_BUFFER_PADDING_SIZE); + io_ctx = avio_alloc_context(buffer, SOUNDBUFFER_SIZE, 0, + sound, CActiveAESound::Read, NULL, CActiveAESound::Seek); + io_ctx->max_packet_size = sound->GetChunkSize(); + +--- xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp.orig 2018-07-03 04:29:28.402298801 +0200 ++++ xbmc-17.6-Krypton/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2018-07-03 04:30:42.334643983 +0200 +@@ -78,7 +78,7 @@ + {} + }; + +-#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - FF_INPUT_BUFFER_PADDING_SIZE) ++#define AV_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) + + std::string CDemuxStreamAudioFFmpeg::GetStreamName() + { +@@ -1876,17 +1876,17 @@ + if(st->parser && st->parser->parser->split && !st->codec->extradata) + { + int i = st->parser->parser->split(st->codec, pkt->data, pkt->size); +- if (i > 0 && i < FF_MAX_EXTRADATA_SIZE) ++ if (i > 0 && i < AV_MAX_EXTRADATA_SIZE) + { + // Found extradata, fill it in. This will cause + // a new stream to be created and used. + st->codec->extradata_size = i; +- st->codec->extradata = (uint8_t*)av_malloc(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); ++ st->codec->extradata = (uint8_t*)av_malloc(st->codec->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); + if (st->codec->extradata) + { + CLog::Log(LOGDEBUG, "CDVDDemuxFFmpeg::Read() fetching extradata, extradata_size(%d)", st->codec->extradata_size); + memcpy(st->codec->extradata, pkt->data, st->codec->extradata_size); +- memset(st->codec->extradata + i, 0, FF_INPUT_BUFFER_PADDING_SIZE); ++ memset(st->codec->extradata + i, 0, AV_INPUT_BUFFER_PADDING_SIZE); + } + else + { + diff --git a/community/kodi/vaapi.patch b/community/kodi/vaapi.patch new file mode 100644 index 0000000000..fb279216be --- /dev/null +++ b/community/kodi/vaapi.patch @@ -0,0 +1,15 @@ +diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp +index 2f65025..b69cb61 100644 +--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp ++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp +@@ -3090,8 +3090,8 @@ bool CFFmpegPostproc::Init(EINTERLACEMETHOD method) + return false; + } + +- AVFilter* srcFilter = avfilter_get_by_name("buffer"); +- AVFilter* outFilter = avfilter_get_by_name("buffersink"); ++ const AVFilter* srcFilter = avfilter_get_by_name("buffer"); ++ const AVFilter* outFilter = avfilter_get_by_name("buffersink"); + + std::string args = StringUtils::Format("%d:%d:%d:%d:%d:%d:%d", + m_config.vidWidth, |