Index: head/multimedia/vdr-plugin-markad/Makefile =================================================================== --- head/multimedia/vdr-plugin-markad/Makefile (revision 468980) +++ head/multimedia/vdr-plugin-markad/Makefile (revision 468981) @@ -1,56 +1,54 @@ # Created by: Juergen Lock # $FreeBSD$ PORTNAME= vdr-plugin-markad PORTVERSION= 0.1.4 PORTREVISION= 6 CATEGORIES= multimedia MASTER_SITES= http://projects.vdr-developer.org/attachments/download/1041/ DISTNAME= ${PORTNAME:S/-plugin-/-/}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX} MAINTAINER= ports@FreeBSD.org COMMENT= Video Disk Recorder - MarkAd plugin LICENSE= GPLv2+ LICENSE_FILE= ${WRKSRC}/COPYING -BROKEN= fails to build with ffmpeg 4.0 - LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg RESTRICTED= Installs station logos USES= pkgconfig tar:tgz WRKSRC= ${WRKDIR}/${PLUGIN}-${DISTVERSION} VDR_PLUGIN_MAKEFILES= ${WRKSRC}/command/Makefile ${WRKSRC}/plugin/Makefile DEFINES= -DDATADIR=\\\"${DATADIR}\\\" -DPREFIX=\\\"${PREFIX}\\\" MAKE_ARGS= DATADIR=${DATADIR} FREEBSD=1 MAKE_ENV= DEFINES="${DEFINES}" PORTDOCS= README HISTORY PORTDATA= logos OPTIONS_DEFINE= DOCS NLS .include "${.CURDIR}/../vdr/Makefile.plugins" # for libexecinfo: (so that __builtin_frame_address() finds the top # of the stack) .if ${ARCH} == "amd64" CFLAGS+= -fno-omit-frame-pointer CPPFLAGS+= -fno-omit-frame-pointer .endif post-patch: post-patch-plugin @${LN} -s ../lib ../locale ${WRKSRC} pre-install: @${MKDIR} ${STAGEDIR}${PREFIX}/lib/vdr post-install: post-install-pluginlocales post-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} (cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${STAGEDIR}${DOCSDIR}) .include Index: head/multimedia/vdr-plugin-markad/files/patch-command_decoder.cpp =================================================================== --- head/multimedia/vdr-plugin-markad/files/patch-command_decoder.cpp (revision 468980) +++ head/multimedia/vdr-plugin-markad/files/patch-command_decoder.cpp (revision 468981) @@ -1,165 +1,192 @@ --- command/decoder.cpp.orig 2012-04-02 19:41:15 UTC +++ command/decoder.cpp @@ -6,11 +6,17 @@ */ #include +#ifndef __FreeBSD__ #include +#else +#include +#include +#endif #include #include #include #include +#include #include "decoder.h" -@@ -113,6 +119,7 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH +@@ -113,6 +119,7 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa noticeERRVID=false; +#ifndef __FreeBSD__ cpu_set_t cpumask; uint len = sizeof(cpumask); int cpucount=1; -@@ -120,6 +127,12 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH +@@ -120,6 +127,12 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa { cpucount=CPU_COUNT(&cpumask); } +#else + int cpucount; + size_t cpus_size = sizeof(cpucount); + if (sysctlbyname("hw.ncpu", &cpucount, &cpus_size, NULL, 0) == -1) + cpucount = 1; +#endif if (Threads==-1) { -@@ -151,28 +164,28 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH +@@ -151,41 +164,47 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa } video_codec=NULL; - CodecID video_codecid; + AVCodecID video_codecid; if (useH264) { - video_codecid=CODEC_ID_H264; + video_codecid=AV_CODEC_ID_H264; } else { - video_codecid=CODEC_ID_MPEG2VIDEO_XVMC; ++#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC + video_codecid=AV_CODEC_ID_MPEG2VIDEO_XVMC; ++#else ++ video_codecid=AV_CODEC_ID_MPEG2VIDEO; ++#endif } video_codec = avcodec_find_decoder(video_codecid); - if ((!video_codec) && (video_codecid==CODEC_ID_MPEG2VIDEO_XVMC)) ++#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC + if ((!video_codec) && (video_codecid==AV_CODEC_ID_MPEG2VIDEO_XVMC)) { // fallback to MPEG2VIDEO - video_codecid=CODEC_ID_MPEG2VIDEO; + video_codecid=AV_CODEC_ID_MPEG2VIDEO; video_codec=avcodec_find_decoder(video_codecid); } ++#endif if (video_codec) { - video_context = avcodec_alloc_context(); + video_context = avcodec_alloc_context3(NULL); if (video_context) { - if (video_codec->capabilities & CODEC_CAP_TRUNCATED) -@@ -183,7 +196,7 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH +- if (video_codec->capabilities & CODEC_CAP_TRUNCATED) +- video_context->flags|=CODEC_FLAG_TRUNCATED; // we do not send complete frames ++ if (video_codec->capabilities & AV_CODEC_CAP_TRUNCATED) ++ video_context->flags|=AV_CODEC_FLAG_TRUNCATED; // we do not send complete frames +- video_context->flags2|=CODEC_FLAG2_FAST; // really? ++ video_context->flags2|=AV_CODEC_FLAG2_FAST; // really? + video_context->skip_idct=AVDISCARD_ALL; + av_log_set_level(AV_LOG_FATAL); // silence decoder output - if (video_codecid==CODEC_ID_H264) + if (video_codecid==AV_CODEC_ID_H264) { - video_context->flags2|=CODEC_FLAG2_CHUNKS; // needed for H264! +- video_context->flags2|=CODEC_FLAG2_CHUNKS; // needed for H264! ++ video_context->flags2|=AV_CODEC_FLAG2_CHUNKS; // needed for H264! } -@@ -198,15 +211,15 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH + else + { +@@ -198,17 +217,23 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa #else int ret=avcodec_open(video_context, video_codec); #endif - if ((ret < 0) && (video_codecid==CODEC_ID_MPEG2VIDEO_XVMC)) ++#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC + if ((ret < 0) && (video_codecid==AV_CODEC_ID_MPEG2VIDEO_XVMC)) ++#else ++ if (ret < 0) ++#endif { // fallback to MPEG2VIDEO - video_codecid=CODEC_ID_MPEG2VIDEO; + video_codecid=AV_CODEC_ID_MPEG2VIDEO; video_codec=avcodec_find_decoder(video_codecid); if (video_codec) { video_context->codec_type=AVMEDIA_TYPE_UNKNOWN; - video_context->codec_id=CODEC_ID_NONE; + video_context->codec_id=AV_CODEC_ID_NONE; video_context->codec_tag=0; ++#if LIBAVCODEC_VERSION_INT < ((58<<16)+(0<<8)+0) memset(video_context->codec_name,0,sizeof(video_context->codec_name)); ++#endif #if LIBAVCODEC_VERSION_INT >= ((53<<16)+(5<<8)+0) -@@ -225,13 +238,13 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH + video_context->thread_count=threadcount; + ret=avcodec_open2(video_context, video_codec, NULL); +@@ -225,13 +250,15 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa { switch (video_codecid) { - case CODEC_ID_H264: + case AV_CODEC_ID_H264: esyslog("could not open codec for H264"); break; - case CODEC_ID_MPEG2VIDEO_XVMC: ++#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC + case AV_CODEC_ID_MPEG2VIDEO_XVMC: esyslog("could not open codec MPEG2 (XVMC)"); break; - case CODEC_ID_MPEG2VIDEO: ++#endif + case AV_CODEC_ID_MPEG2VIDEO: esyslog("could not open codec MPEG2"); break; default: -@@ -256,7 +269,7 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH +@@ -256,7 +283,7 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa } #endif - video_frame = avcodec_alloc_frame(); + video_frame = av_frame_alloc(); if (!video_frame) { esyslog("could not allocate frame"); -@@ -286,13 +299,13 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH +@@ -286,13 +313,15 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threa { switch (video_codecid) { - case CODEC_ID_H264: + case AV_CODEC_ID_H264: esyslog("codec for H264 not found"); break; - case CODEC_ID_MPEG2VIDEO_XVMC: ++#ifdef AV_CODEC_ID_MPEG2VIDEO_XVMC + case AV_CODEC_ID_MPEG2VIDEO_XVMC: esyslog("codec for MPEG2 (XVMC) not found"); break; - case CODEC_ID_MPEG2VIDEO: ++#endif + case AV_CODEC_ID_MPEG2VIDEO: esyslog("codec for MPEG2 not found"); break; default: -@@ -321,7 +334,7 @@ bool cMarkAdDecoder::Clear() +@@ -321,7 +350,7 @@ bool cMarkAdDecoder::Clear() { avcodec_flush_buffers(video_context); AVCodecContext *dest; - dest=avcodec_alloc_context(); + dest=avcodec_alloc_context3(NULL); if (dest) { if (avcodec_copy_context(dest,video_context)!=0) ret=false; -@@ -384,7 +397,7 @@ bool cMarkAdDecoder::DecodeVideo(MarkAdC +@@ -384,7 +413,7 @@ bool cMarkAdDecoder::DecodeVideo(MarkAdContext *maCont if (!video_frame) return false; maContext->Video.Data.Valid=false; - if ((video_context->codec_id==CODEC_ID_H264) && (!video_context->skip_frame)) + if ((video_context->codec_id==AV_CODEC_ID_H264) && (!video_context->skip_frame)) { // with H264 we cannot set skip_frame just to NONKEY, is depends on Interlaced... if (maContext->Video.Info.Height)