From 340a7146f9d7764b3d99a9f52710465fb2e26774 Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Thu, 22 Sep 2016 16:46:51 +0200 Subject: [PATCH] kodi: fix build with ffmpeg>=3.0 (via Gentoo) --- .../patches/fix-curl-750-compatibility.patch | 44 -- srcpkgs/kodi/patches/kodi-16-ffmpeg3.patch | 641 ++++++++++++++++++ srcpkgs/kodi/template | 2 - 3 files changed, 641 insertions(+), 46 deletions(-) delete mode 100644 srcpkgs/kodi/patches/fix-curl-750-compatibility.patch create mode 100644 srcpkgs/kodi/patches/kodi-16-ffmpeg3.patch diff --git a/srcpkgs/kodi/patches/fix-curl-750-compatibility.patch b/srcpkgs/kodi/patches/fix-curl-750-compatibility.patch deleted file mode 100644 index fe8136d781..0000000000 --- a/srcpkgs/kodi/patches/fix-curl-750-compatibility.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/xbmc/filesystem/CurlFile.h b/xbmc/filesystem/CurlFile.h -index b4f5046..81a5ae5 100644 ---- a/xbmc/filesystem/CurlFile.h -+++ b/xbmc/filesystem/CurlFile.h -@@ -24,11 +24,17 @@ - #include - #include - #include "utils/HttpHeader.h" -+#include - - namespace XCURL - { -+#if LIBCURL_VERSION_NUM >= 0x073200 -+ typedef struct Curl_easy CURL_HANDLE; -+ typedef struct Curl_multi CURLM; -+#else - typedef void CURL_HANDLE; - typedef void CURLM; -+#endif - struct curl_slist; - } - -diff --git a/xbmc/filesystem/DllLibCurl.h b/xbmc/filesystem/DllLibCurl.h -index db97f92..9e78a91 100644 ---- a/xbmc/filesystem/DllLibCurl.h -+++ b/xbmc/filesystem/DllLibCurl.h -@@ -52,7 +52,7 @@ namespace XCURL - virtual CURLMcode multi_fdset(CURLM *multi_handle, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd)=0; - virtual CURLMcode multi_timeout(CURLM *multi_handle, long *timeout)=0; - virtual CURLMsg* multi_info_read(CURLM *multi_handle, int *msgs_in_queue)=0; -- virtual void multi_cleanup(CURL_HANDLE * handle )=0; -+ virtual CURLMcode multi_cleanup(CURLM * handle )=0; - virtual struct curl_slist* slist_append(struct curl_slist *, const char *)=0; - virtual void slist_free_all(struct curl_slist *)=0; - }; -@@ -77,7 +77,7 @@ namespace XCURL - DEFINE_METHOD5(CURLMcode, multi_fdset, (CURLM *p1, fd_set *p2, fd_set *p3, fd_set *p4, int *p5)) - DEFINE_METHOD2(CURLMcode, multi_timeout, (CURLM *p1, long *p2)) - DEFINE_METHOD2(CURLMsg*, multi_info_read, (CURLM *p1, int *p2)) -- DEFINE_METHOD1(void, multi_cleanup, (CURLM *p1)) -+ DEFINE_METHOD1(CURLMcode, multi_cleanup, (CURLM *p1)) - DEFINE_METHOD2(struct curl_slist*, slist_append, (struct curl_slist * p1, const char * p2)) - DEFINE_METHOD1(void, slist_free_all, (struct curl_slist * p1)) - DEFINE_METHOD1(const char *, easy_strerror, (CURLcode p1)) diff --git a/srcpkgs/kodi/patches/kodi-16-ffmpeg3.patch b/srcpkgs/kodi/patches/kodi-16-ffmpeg3.patch new file mode 100644 index 0000000000..755af69f8f --- /dev/null +++ b/srcpkgs/kodi/patches/kodi-16-ffmpeg3.patch @@ -0,0 +1,641 @@ + +Changes from original commit are only in file paths & quilt refresh. + +commit c31b7d374062f87c7512d9872cbceac920465913 +Author: Philip Langdale +Date: Mon Sep 21 19:49:36 2015 -0700 + + ffmpeg: Update AVPixelFormat and AV_PIX_FMT_* to compile with master + + The deprecated PixelFormat and PIX_FMT_* names have been removed in + ffmpeg master. + +Index: xbmc-16.0-Jarvis/xbmc/cores/FFmpeg.h +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/FFmpeg.h ++++ xbmc-16.0-Jarvis/xbmc/cores/FFmpeg.h +@@ -24,7 +24,6 @@ + #include "utils/CPUInfo.h" + + extern "C" { +-#include "libswscale/swscale.h" + #include "libavcodec/avcodec.h" + #include "libavformat/avformat.h" + #include "libavutil/avutil.h" +@@ -33,23 +32,6 @@ extern "C" { + #include "libpostproc/postprocess.h" + } + +-inline int SwScaleCPUFlags() +-{ +- unsigned int cpuFeatures = g_cpuInfo.GetCPUFeatures(); +- int flags = 0; +- +- if (cpuFeatures & CPU_FEATURE_MMX) +- flags |= SWS_CPU_CAPS_MMX; +- if (cpuFeatures & CPU_FEATURE_MMX2) +- flags |= SWS_CPU_CAPS_MMX2; +- if (cpuFeatures & CPU_FEATURE_3DNOW) +- flags |= SWS_CPU_CAPS_3DNOW; +- if (cpuFeatures & CPU_FEATURE_ALTIVEC) +- flags |= SWS_CPU_CAPS_ALTIVEC; +- +- return flags; +-} +- + inline int PPCPUFlags() + { + unsigned int cpuFeatures = g_cpuInfo.GetCPUFeatures(); +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp +@@ -39,7 +39,7 @@ extern "C" { + #include "libswscale/swscale.h" + } + +-// allocate a new picture (PIX_FMT_YUV420P) ++// allocate a new picture (AV_PIX_FMT_YUV420P) + DVDVideoPicture* CDVDCodecUtils::AllocatePicture(int iWidth, int iHeight) + { + DVDVideoPicture* pPicture = new DVDVideoPicture; +@@ -264,13 +264,13 @@ DVDVideoPicture* CDVDCodecUtils::Convert + + int dstformat; + if (format == RENDER_FMT_UYVY422) +- dstformat = PIX_FMT_UYVY422; ++ dstformat = AV_PIX_FMT_UYVY422; + else +- dstformat = PIX_FMT_YUYV422; ++ dstformat = AV_PIX_FMT_YUYV422; + +- struct SwsContext *ctx = sws_getContext(pSrc->iWidth, pSrc->iHeight, PIX_FMT_YUV420P, ++ struct SwsContext *ctx = sws_getContext(pSrc->iWidth, pSrc->iHeight, AV_PIX_FMT_YUV420P, + pPicture->iWidth, pPicture->iHeight, (AVPixelFormat)dstformat, +- SWS_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL); ++ SWS_BILINEAR, NULL, NULL, NULL); + sws_scale(ctx, src, srcStride, 0, pSrc->iHeight, dst, dstStride); + sws_freeContext(ctx); + } +@@ -403,25 +403,25 @@ double CDVDCodecUtils::NormalizeFramedur + } + + struct EFormatMap { +- PixelFormat pix_fmt; ++ AVPixelFormat pix_fmt; + ERenderFormat format; + }; + + static const EFormatMap g_format_map[] = { +- { PIX_FMT_YUV420P, RENDER_FMT_YUV420P } +-, { PIX_FMT_YUVJ420P, RENDER_FMT_YUV420P } +-, { PIX_FMT_YUV420P10, RENDER_FMT_YUV420P10 } +-, { PIX_FMT_YUV420P16, RENDER_FMT_YUV420P16 } +-, { PIX_FMT_UYVY422, RENDER_FMT_UYVY422 } +-, { PIX_FMT_YUYV422, RENDER_FMT_YUYV422 } +-, { PIX_FMT_VAAPI_VLD, RENDER_FMT_VAAPI } +-, { PIX_FMT_DXVA2_VLD, RENDER_FMT_DXVA } +-, { PIX_FMT_NONE , RENDER_FMT_NONE } ++ { AV_PIX_FMT_YUV420P, RENDER_FMT_YUV420P } ++, { AV_PIX_FMT_YUVJ420P, RENDER_FMT_YUV420P } ++, { AV_PIX_FMT_YUV420P10, RENDER_FMT_YUV420P10 } ++, { AV_PIX_FMT_YUV420P16, RENDER_FMT_YUV420P16 } ++, { AV_PIX_FMT_UYVY422, RENDER_FMT_UYVY422 } ++, { AV_PIX_FMT_YUYV422, RENDER_FMT_YUYV422 } ++, { AV_PIX_FMT_VAAPI_VLD, RENDER_FMT_VAAPI } ++, { AV_PIX_FMT_DXVA2_VLD, RENDER_FMT_DXVA } ++, { AV_PIX_FMT_NONE , RENDER_FMT_NONE } + }; + + ERenderFormat CDVDCodecUtils::EFormatFromPixfmt(int fmt) + { +- for(const EFormatMap *p = g_format_map; p->pix_fmt != PIX_FMT_NONE; ++p) ++ for(const EFormatMap *p = g_format_map; p->pix_fmt != AV_PIX_FMT_NONE; ++p) + { + if(p->pix_fmt == fmt) + return p->format; +@@ -431,10 +431,10 @@ ERenderFormat CDVDCodecUtils::EFormatFro + + int CDVDCodecUtils::PixfmtFromEFormat(ERenderFormat fmt) + { +- for(const EFormatMap *p = g_format_map; p->pix_fmt != PIX_FMT_NONE; ++p) ++ for(const EFormatMap *p = g_format_map; p->pix_fmt != AV_PIX_FMT_NONE; ++p) + { + if(p->format == fmt) + return p->pix_fmt; + } +- return PIX_FMT_NONE; ++ return AV_PIX_FMT_NONE; + } +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +@@ -77,8 +77,8 @@ enum DecoderState + STATE_SW_MULTI + }; + +-enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx +- , const PixelFormat * fmt ) ++enum AVPixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx ++ , const AVPixelFormat * fmt ) + { + CDVDVideoCodecFFmpeg* ctx = (CDVDVideoCodecFFmpeg*)avctx->opaque; + +@@ -104,8 +104,8 @@ enum PixelFormat CDVDVideoCodecFFmpeg::G + avctx->hwaccel_context = 0; + } + +- const PixelFormat * cur = fmt; +- while(*cur != PIX_FMT_NONE) ++ const AVPixelFormat * cur = fmt; ++ while(*cur != AV_PIX_FMT_NONE) + { + #ifdef HAVE_LIBVDPAU + if(VDPAU::CDecoder::IsVDPAUFormat(*cur) && CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVDPAU)) +@@ -137,7 +137,7 @@ enum PixelFormat CDVDVideoCodecFFmpeg::G + #endif + #ifdef HAVE_LIBVA + // mpeg4 vaapi decoding is disabled +- if(*cur == PIX_FMT_VAAPI_VLD && CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVAAPI)) ++ if(*cur == AV_PIX_FMT_VAAPI_VLD && CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVAAPI)) + { + VAAPI::CDecoder* dec = new VAAPI::CDecoder(); + if(dec->Open(avctx, ctx->m_pCodecContext, *cur, ctx->m_uSurfacesCount) == true) +@@ -214,11 +214,11 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStre + + for(std::vector::iterator it = options.m_formats.begin(); it != options.m_formats.end(); ++it) + { +- m_formats.push_back((PixelFormat)CDVDCodecUtils::PixfmtFromEFormat(*it)); ++ m_formats.push_back((AVPixelFormat)CDVDCodecUtils::PixfmtFromEFormat(*it)); + if(*it == RENDER_FMT_YUV420P) +- m_formats.push_back(PIX_FMT_YUVJ420P); ++ m_formats.push_back(AV_PIX_FMT_YUVJ420P); + } +- m_formats.push_back(PIX_FMT_NONE); /* always add none to get a terminated list in ffmpeg world */ ++ m_formats.push_back(AV_PIX_FMT_NONE); /* always add none to get a terminated list in ffmpeg world */ + + pCodec = avcodec_find_decoder(hints.codec); + +@@ -655,7 +655,7 @@ bool CDVDVideoCodecFFmpeg::GetPictureCom + pDvdVideoPicture->color_transfer = m_pCodecContext->color_trc; + pDvdVideoPicture->color_matrix = m_pCodecContext->colorspace; + if(m_pCodecContext->color_range == AVCOL_RANGE_JPEG +- || m_pCodecContext->pix_fmt == PIX_FMT_YUVJ420P) ++ || m_pCodecContext->pix_fmt == AV_PIX_FMT_YUVJ420P) + pDvdVideoPicture->color_range = 1; + else + pDvdVideoPicture->color_range = 0; +@@ -738,8 +738,8 @@ bool CDVDVideoCodecFFmpeg::GetPicture(DV + pDvdVideoPicture->iFlags |= pDvdVideoPicture->data[0] ? 0 : DVP_FLAG_DROPPED; + pDvdVideoPicture->extended_format = 0; + +- PixelFormat pix_fmt; +- pix_fmt = (PixelFormat)m_pFrame->format; ++ AVPixelFormat pix_fmt; ++ pix_fmt = (AVPixelFormat)m_pFrame->format; + + pDvdVideoPicture->format = CDVDCodecUtils::EFormatFromPixfmt(pix_fmt); + return true; +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h +@@ -46,7 +46,7 @@ public: + public: + IHardwareDecoder() {} + virtual ~IHardwareDecoder() {}; +- virtual bool Open (AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat, unsigned int surfaces) = 0; ++ virtual bool Open (AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat, unsigned int surfaces) = 0; + virtual int Decode (AVCodecContext* avctx, AVFrame* frame) = 0; + virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture) = 0; + virtual int Check (AVCodecContext* avctx) = 0; +@@ -77,7 +77,7 @@ public: + void SetHardware(IHardwareDecoder* hardware); + + protected: +- static enum PixelFormat GetFormat(struct AVCodecContext * avctx, const PixelFormat * fmt); ++ static enum AVPixelFormat GetFormat(struct AVCodecContext * avctx, const AVPixelFormat * fmt); + + int FilterOpen(const std::string& filters, bool scale); + void FilterClose(); +@@ -119,7 +119,7 @@ protected: + int m_iLastKeyframe; + double m_dts; + bool m_started; +- std::vector m_formats; ++ std::vector m_formats; + double m_decoderPts; + int m_skippedDeint; + bool m_requestSkipDeint; +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVDA.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVDA.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVDA.cpp +@@ -554,11 +554,11 @@ void CDVDVideoCodecVDA::DisplayQueuePop( + + void CDVDVideoCodecVDA::UYVY422_to_YUV420P(uint8_t *yuv422_ptr, int yuv422_stride, DVDVideoPicture *picture) + { +- // convert PIX_FMT_UYVY422 to PIX_FMT_YUV420P. ++ // convert AV_PIX_FMT_UYVY422 to AV_PIX_FMT_YUV420P. + struct SwsContext *swcontext = sws_getContext( +- m_videobuffer.iWidth, m_videobuffer.iHeight, PIX_FMT_UYVY422, +- m_videobuffer.iWidth, m_videobuffer.iHeight, PIX_FMT_YUV420P, +- SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL); ++ m_videobuffer.iWidth, m_videobuffer.iHeight, AV_PIX_FMT_UYVY422, ++ m_videobuffer.iWidth, m_videobuffer.iHeight, AV_PIX_FMT_YUV420P, ++ SWS_FAST_BILINEAR, NULL, NULL, NULL); + if (swcontext) + { + uint8_t *src[] = { yuv422_ptr, 0, 0, 0 }; +@@ -574,11 +574,11 @@ void CDVDVideoCodecVDA::UYVY422_to_YUV42 + + void CDVDVideoCodecVDA::BGRA_to_YUV420P(uint8_t *bgra_ptr, int bgra_stride, DVDVideoPicture *picture) + { +- // convert PIX_FMT_BGRA to PIX_FMT_YUV420P. ++ // convert AV_PIX_FMT_BGRA to AV_PIX_FMT_YUV420P. + struct SwsContext *swcontext = sws_getContext( +- m_videobuffer.iWidth, m_videobuffer.iHeight, PIX_FMT_BGRA, +- m_videobuffer.iWidth, m_videobuffer.iHeight, PIX_FMT_YUV420P, +- SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL); ++ m_videobuffer.iWidth, m_videobuffer.iHeight, AV_PIX_FMT_BGRA, ++ m_videobuffer.iWidth, m_videobuffer.iHeight, AV_PIX_FMT_YUV420P, ++ SWS_FAST_BILINEAR, NULL, NULL, NULL); + if (swcontext) + { + uint8_t *src[] = { bgra_ptr, 0, 0, 0 }; +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.cpp +@@ -886,7 +886,7 @@ static bool CheckCompatibility(AVCodecCo + return true; + } + +-bool CDecoder::Open(AVCodecContext *avctx, AVCodecContext* mainctx, enum PixelFormat fmt, unsigned int surfaces) ++bool CDecoder::Open(AVCodecContext *avctx, AVCodecContext* mainctx, enum AVPixelFormat fmt, unsigned int surfaces) + { + if (!CheckCompatibility(avctx)) + return false; +@@ -1135,9 +1135,9 @@ bool CDecoder::OpenDecoder() + return true; + } + +-bool CDecoder::Supports(enum PixelFormat fmt) ++bool CDecoder::Supports(enum AVPixelFormat fmt) + { +- if(fmt == PIX_FMT_DXVA2_VLD) ++ if(fmt == AV_PIX_FMT_DXVA2_VLD) + return true; + return false; + } +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.h +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.h ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DXVA.h +@@ -141,7 +141,7 @@ class CDecoder + public: + CDecoder(); + ~CDecoder(); +- virtual bool Open (AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat, unsigned int surfaces); ++ virtual bool Open (AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat, unsigned int surfaces); + virtual int Decode (AVCodecContext* avctx, AVFrame* frame); + virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture); + virtual int Check (AVCodecContext* avctx); +@@ -154,7 +154,7 @@ public: + int GetBuffer(AVCodecContext *avctx, AVFrame *pic, int flags); + void RelBuffer(uint8_t *data); + +- static bool Supports(enum PixelFormat fmt); ++ static bool Supports(enum AVPixelFormat fmt); + + void CloseDXVADecoder(); + +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp +@@ -479,7 +479,7 @@ CDecoder::~CDecoder() + Close(); + } + +-bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat fmt, unsigned int surfaces) ++bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat fmt, unsigned int surfaces) + { + // don't support broken wrappers by default + // nvidia cards with a vaapi to vdpau wrapper +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h +@@ -406,7 +406,7 @@ public: + CDecoder(); + virtual ~CDecoder(); + +- virtual bool Open (AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat, unsigned int surfaces = 0); ++ virtual bool Open (AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat, unsigned int surfaces = 0); + virtual int Decode (AVCodecContext* avctx, AVFrame* frame); + virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture); + virtual void Reset(); +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VDA.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VDA.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VDA.cpp +@@ -186,7 +186,7 @@ void CDecoder::Close() + m_bitstream = NULL; + } + +-bool CDecoder::Open(AVCodecContext *avctx, AVCodecContext* mainctx, enum PixelFormat fmt, unsigned int surfaces) ++bool CDecoder::Open(AVCodecContext *avctx, AVCodecContext* mainctx, enum AVPixelFormat fmt, unsigned int surfaces) + { + Close(); + +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VDA.h +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VDA.h ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VDA.h +@@ -35,7 +35,7 @@ class CDecoder + public: + CDecoder(); + ~CDecoder(); +- virtual bool Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat, unsigned int surfaces = 0); ++ virtual bool Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat, unsigned int surfaces = 0); + virtual int Decode(AVCodecContext* avctx, AVFrame* frame); + virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture); + virtual int Check(AVCodecContext* avctx); +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp +@@ -486,7 +486,7 @@ CDecoder::CDecoder() : m_vdpauOutput(&m_ + m_vdpauConfig.context = 0; + } + +-bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat fmt, unsigned int surfaces) ++bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat fmt, unsigned int surfaces) + { + // check if user wants to decode this format with VDPAU + std::string gpuvendor = g_Windowing.GetRenderVendor(); +@@ -760,7 +760,7 @@ int CDecoder::Check(AVCodecContext* avct + return 0; + } + +-bool CDecoder::IsVDPAUFormat(PixelFormat format) ++bool CDecoder::IsVDPAUFormat(AVPixelFormat format) + { + if (format == AV_PIX_FMT_VDPAU) + return true; +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h +@@ -556,7 +556,7 @@ public: + CDecoder(); + virtual ~CDecoder(); + +- virtual bool Open (AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat, unsigned int surfaces = 0); ++ virtual bool Open (AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat, unsigned int surfaces = 0); + virtual int Decode (AVCodecContext* avctx, AVFrame* frame); + virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture); + virtual void Reset(); +@@ -571,7 +571,7 @@ public: + bool Supports(VdpVideoMixerFeature feature); + bool Supports(EINTERLACEMETHOD method); + EINTERLACEMETHOD AutoInterlaceMethod(); +- static bool IsVDPAUFormat(PixelFormat fmt); ++ static bool IsVDPAUFormat(AVPixelFormat fmt); + + static void FFReleaseBuffer(void *opaque, uint8_t *data); + static int FFGetBuffer(AVCodecContext *avctx, AVFrame *pic, int flags); +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +@@ -1638,7 +1638,7 @@ void CDVDDemuxFFmpeg::ParsePacket(AVPack + + // for video we need a decoder to get desired information into codec context + if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO && st->codec->extradata && +- (!st->codec->width || st->codec->pix_fmt == PIX_FMT_NONE)) ++ (!st->codec->width || st->codec->pix_fmt == AV_PIX_FMT_NONE)) + { + // open a decoder, it will be cleared down by ffmpeg on closing the stream + if (!st->codec->codec) +@@ -1695,7 +1695,7 @@ bool CDVDDemuxFFmpeg::IsVideoReady() + st = m_pFormatContext->streams[idx]; + if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) + { +- if (st->codec->width && st->codec->pix_fmt != PIX_FMT_NONE) ++ if (st->codec->width && st->codec->pix_fmt != AV_PIX_FMT_NONE) + return true; + hasVideo = true; + } +@@ -1708,7 +1708,7 @@ bool CDVDDemuxFFmpeg::IsVideoReady() + st = m_pFormatContext->streams[i]; + if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) + { +- if (st->codec->width && st->codec->pix_fmt != PIX_FMT_NONE) ++ if (st->codec->width && st->codec->pix_fmt != AV_PIX_FMT_NONE) + return true; + hasVideo = true; + } +Index: xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDFileInfo.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/dvdplayer/DVDFileInfo.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDFileInfo.cpp +@@ -275,7 +275,7 @@ bool CDVDFileInfo::ExtractThumb(const st + + uint8_t *pOutBuf = new uint8_t[nWidth * nHeight * 4]; + struct SwsContext *context = sws_getContext(picture.iWidth, picture.iHeight, +- PIX_FMT_YUV420P, nWidth, nHeight, PIX_FMT_BGRA, SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL); ++ AV_PIX_FMT_YUV420P, nWidth, nHeight, AV_PIX_FMT_BGRA, SWS_FAST_BILINEAR, NULL, NULL, NULL); + + if (context) + { +Index: xbmc-16.0-Jarvis/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp +@@ -2932,7 +2932,7 @@ void CLinuxRendererGL::ToRGBFrame(YV12Im + } + else if (m_format == RENDER_FMT_NV12) + { +- srcFormat = PIX_FMT_NV12; ++ srcFormat = AV_PIX_FMT_NV12; + for (int i = 0; i < 2; i++) + { + src[i] = im->plane[i]; +@@ -2941,13 +2941,13 @@ void CLinuxRendererGL::ToRGBFrame(YV12Im + } + else if (m_format == RENDER_FMT_YUYV422) + { +- srcFormat = PIX_FMT_YUYV422; ++ srcFormat = AV_PIX_FMT_YUYV422; + src[0] = im->plane[0]; + srcStride[0] = im->stride[0]; + } + else if (m_format == RENDER_FMT_UYVY422) + { +- srcFormat = PIX_FMT_UYVY422; ++ srcFormat = AV_PIX_FMT_UYVY422; + src[0] = im->plane[0]; + srcStride[0] = im->stride[0]; + } +@@ -2965,8 +2965,8 @@ void CLinuxRendererGL::ToRGBFrame(YV12Im + + m_context = sws_getCachedContext(m_context, + im->width, im->height, (AVPixelFormat)srcFormat, +- im->width, im->height, (AVPixelFormat)PIX_FMT_BGRA, +- SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL); ++ im->width, im->height, (AVPixelFormat)AV_PIX_FMT_BGRA, ++ SWS_FAST_BILINEAR, NULL, NULL, NULL); + + uint8_t *dst[] = { m_rgbBuffer, 0, 0, 0 }; + int dstStride[] = { (int)m_sourceWidth * 4, 0, 0, 0 }; +@@ -2995,7 +2995,7 @@ void CLinuxRendererGL::ToRGBFields(YV12I + + if (m_format == RENDER_FMT_YUV420P) + { +- srcFormat = PIX_FMT_YUV420P; ++ srcFormat = AV_PIX_FMT_YUV420P; + for (int i = 0; i < 3; i++) + { + srcTop[i] = im->plane[i]; +@@ -3006,7 +3006,7 @@ void CLinuxRendererGL::ToRGBFields(YV12I + } + else if (m_format == RENDER_FMT_NV12) + { +- srcFormat = PIX_FMT_NV12; ++ srcFormat = AV_PIX_FMT_NV12; + for (int i = 0; i < 2; i++) + { + srcTop[i] = im->plane[i]; +@@ -3017,7 +3017,7 @@ void CLinuxRendererGL::ToRGBFields(YV12I + } + else if (m_format == RENDER_FMT_YUYV422) + { +- srcFormat = PIX_FMT_YUYV422; ++ srcFormat = AV_PIX_FMT_YUYV422; + srcTop[0] = im->plane[0]; + srcStrideTop[0] = im->stride[0] * 2; + srcBot[0] = im->plane[0] + im->stride[0]; +@@ -3025,7 +3025,7 @@ void CLinuxRendererGL::ToRGBFields(YV12I + } + else if (m_format == RENDER_FMT_UYVY422) + { +- srcFormat = PIX_FMT_UYVY422; ++ srcFormat = AV_PIX_FMT_UYVY422; + srcTop[0] = im->plane[0]; + srcStrideTop[0] = im->stride[0] * 2; + srcBot[0] = im->plane[0] + im->stride[0]; +@@ -3045,8 +3045,8 @@ void CLinuxRendererGL::ToRGBFields(YV12I + + m_context = sws_getCachedContext(m_context, + im->width, im->height >> 1, (AVPixelFormat)srcFormat, +- im->width, im->height >> 1, (AVPixelFormat)PIX_FMT_BGRA, +- SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL); ++ im->width, im->height >> 1, (AVPixelFormat)AV_PIX_FMT_BGRA, ++ SWS_FAST_BILINEAR, NULL, NULL, NULL); + uint8_t *dstTop[] = { m_rgbBuffer, 0, 0, 0 }; + uint8_t *dstBot[] = { m_rgbBuffer + m_sourceWidth * m_sourceHeight * 2, 0, 0, 0 }; + int dstStride[] = { (int)m_sourceWidth * 4, 0, 0, 0 }; +Index: xbmc-16.0-Jarvis/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp +@@ -2006,8 +2006,8 @@ void CLinuxRendererGLES::UploadYV12Textu + #endif + { + m_sw_context = sws_getCachedContext(m_sw_context, +- im->width, im->height, PIX_FMT_YUV420P, +- im->width, im->height, PIX_FMT_RGBA, ++ im->width, im->height, AV_PIX_FMT_YUV420P, ++ im->width, im->height, AV_PIX_FMT_RGBA, + SWS_FAST_BILINEAR, NULL, NULL, NULL); + + uint8_t *src[] = { im->plane[0], im->plane[1], im->plane[2], 0 }; +Index: xbmc-16.0-Jarvis/xbmc/cores/VideoRenderers/WinRenderer.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/cores/VideoRenderers/WinRenderer.cpp ++++ xbmc-16.0-Jarvis/xbmc/cores/VideoRenderers/WinRenderer.cpp +@@ -94,16 +94,16 @@ CWinRenderer::~CWinRenderer() + UnInit(); + } + +-static enum PixelFormat PixelFormatFromFormat(ERenderFormat format) ++static enum AVPixelFormat PixelFormatFromFormat(ERenderFormat format) + { +- if (format == RENDER_FMT_DXVA) return PIX_FMT_NV12; +- if (format == RENDER_FMT_YUV420P) return PIX_FMT_YUV420P; +- if (format == RENDER_FMT_YUV420P10) return PIX_FMT_YUV420P10; +- if (format == RENDER_FMT_YUV420P16) return PIX_FMT_YUV420P16; +- if (format == RENDER_FMT_NV12) return PIX_FMT_NV12; +- if (format == RENDER_FMT_UYVY422) return PIX_FMT_UYVY422; +- if (format == RENDER_FMT_YUYV422) return PIX_FMT_YUYV422; +- return PIX_FMT_NONE; ++ if (format == RENDER_FMT_DXVA) return AV_PIX_FMT_NV12; ++ if (format == RENDER_FMT_YUV420P) return AV_PIX_FMT_YUV420P; ++ if (format == RENDER_FMT_YUV420P10) return AV_PIX_FMT_YUV420P10; ++ if (format == RENDER_FMT_YUV420P16) return AV_PIX_FMT_YUV420P16; ++ if (format == RENDER_FMT_NV12) return AV_PIX_FMT_NV12; ++ if (format == RENDER_FMT_UYVY422) return AV_PIX_FMT_UYVY422; ++ if (format == RENDER_FMT_YUYV422) return AV_PIX_FMT_YUYV422; ++ return AV_PIX_FMT_NONE; + } + + void CWinRenderer::ManageTextures() +@@ -719,13 +719,13 @@ void CWinRenderer::Render(DWORD flags) + + void CWinRenderer::RenderSW() + { +- enum PixelFormat format = PixelFormatFromFormat(m_format); ++ enum AVPixelFormat format = PixelFormatFromFormat(m_format); + + // 1. convert yuv to rgb + m_sw_scale_ctx = sws_getCachedContext(m_sw_scale_ctx, + m_sourceWidth, m_sourceHeight, format, +- m_sourceWidth, m_sourceHeight, PIX_FMT_BGRA, +- SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL); ++ m_sourceWidth, m_sourceHeight, AV_PIX_FMT_BGRA, ++ SWS_FAST_BILINEAR, NULL, NULL, NULL); + + YUVBuffer* buf = (YUVBuffer*)m_VideoBuffers[m_iYV12RenderBuffer]; + +Index: xbmc-16.0-Jarvis/xbmc/pictures/Picture.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/pictures/Picture.cpp ++++ xbmc-16.0-Jarvis/xbmc/pictures/Picture.cpp +@@ -342,9 +342,9 @@ bool CPicture::ScaleImage(uint8_t *in_pi + uint8_t *out_pixels, unsigned int out_width, unsigned int out_height, unsigned int out_pitch, + CPictureScalingAlgorithm::Algorithm scalingAlgorithm /* = CPictureScalingAlgorithm::NoAlgorithm */) + { +- struct SwsContext *context = sws_getContext(in_width, in_height, PIX_FMT_BGRA, +- out_width, out_height, PIX_FMT_BGRA, +- CPictureScalingAlgorithm::ToSwscale(scalingAlgorithm) | SwScaleCPUFlags(), NULL, NULL, NULL); ++ struct SwsContext *context = sws_getContext(in_width, in_height, AV_PIX_FMT_BGRA, ++ out_width, out_height, AV_PIX_FMT_BGRA, ++ CPictureScalingAlgorithm::ToSwscale(scalingAlgorithm), NULL, NULL, NULL); + + uint8_t *src[] = { in_pixels, 0, 0, 0 }; + int srcStride[] = { (int)in_pitch, 0, 0, 0 }; +Index: xbmc-16.0-Jarvis/xbmc/video/FFmpegVideoDecoder.cpp +=================================================================== +--- xbmc-16.0-Jarvis.orig/xbmc/video/FFmpegVideoDecoder.cpp ++++ xbmc-16.0-Jarvis/xbmc/video/FFmpegVideoDecoder.cpp +@@ -252,7 +252,7 @@ bool FFmpegVideoDecoder::nextFrame( CBas + return false; + + // Due to a bug in swsscale we need to allocate one extra line of data +- if ( avpicture_alloc( m_pFrameRGB, PIX_FMT_RGB32, m_frameRGBwidth, m_frameRGBheight + 1 ) < 0 ) ++ if ( avpicture_alloc( m_pFrameRGB, AV_PIX_FMT_RGB32, m_frameRGBwidth, m_frameRGBheight + 1 ) < 0 ) + return false; + } + +@@ -287,7 +287,7 @@ bool FFmpegVideoDecoder::nextFrame( CBas + + // We got the video frame, render it into the picture buffer + struct SwsContext * context = sws_getContext( m_pCodecCtx->width, m_pCodecCtx->height, m_pCodecCtx->pix_fmt, +- m_frameRGBwidth, m_frameRGBheight, PIX_FMT_RGB32, SWS_FAST_BILINEAR, NULL, NULL, NULL ); ++ m_frameRGBwidth, m_frameRGBheight, AV_PIX_FMT_RGB32, SWS_FAST_BILINEAR, NULL, NULL, NULL ); + + sws_scale( context, m_pFrame->data, m_pFrame->linesize, 0, m_pCodecCtx->height, + m_pFrameRGB->data, m_pFrameRGB->linesize ); diff --git a/srcpkgs/kodi/template b/srcpkgs/kodi/template index 90c514a4fd..d645fa11fe 100644 --- a/srcpkgs/kodi/template +++ b/srcpkgs/kodi/template @@ -1,5 +1,3 @@ -broken="ffmpeg 3.0" - # Template file for 'kodi' pkgname=kodi version=16.1