From 19f28e88a5dfed82e9844f69210f7c045f18ca8e Mon Sep 17 00:00:00 2001 From: Rainer Hochecker Date: Wed, 1 Nov 2017 16:12:13 +0100 Subject: [PATCH] ffmpeg: drop deprecated symbols and functions --- xbmc/cdrip/EncoderFFmpeg.cpp | 4 +- .../AudioEngine/Encoders/AEEncoderFFmpeg.h | 2 +- .../AudioEngine/Engines/ActiveAE/ActiveAE.cpp | 2 +- .../Engines/ActiveAE/ActiveAEFilter.cpp | 6 +-- .../DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp | 6 +-- .../Overlay/DVDOverlayCodecFFmpeg.cpp | 2 +- .../DVDCodecs/Video/DVDVideoCodec.h | 1 + .../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 39 +++++-------------- .../DVDCodecs/Video/DVDVideoPPFFmpeg.cpp | 5 +-- .../VideoPlayer/DVDCodecs/Video/VAAPI.cpp | 4 +- .../DVDDemuxers/DVDDemuxClient.cpp | 6 +-- .../DVDDemuxers/DVDDemuxFFmpeg.cpp | 6 +-- .../VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp | 4 +- xbmc/cores/VideoPlayer/VideoPlayerVideo.cpp | 1 - xbmc/guilib/FFmpegImage.cpp | 4 +- xbmc/utils/BitstreamConverter.cpp | 12 +++--- 16 files changed, 40 insertions(+), 64 deletions(-) Index: kodi-17.6+dfsg1/xbmc/cdrip/EncoderFFmpeg.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cdrip/EncoderFFmpeg.cpp +++ kodi-17.6+dfsg1/xbmc/cdrip/EncoderFFmpeg.cpp @@ -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) Index: kodi-17.6+dfsg1/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h +++ kodi-17.6+dfsg1/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.h @@ -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; Index: kodi-17.6+dfsg1/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp +++ kodi-17.6+dfsg1/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp @@ -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(); Index: kodi-17.6+dfsg1/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp +++ kodi-17.6+dfsg1/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEFilter.cpp @@ -91,8 +91,8 @@ return false; } - AVFilter* srcFilter = avfilter_get_by_name("abuffer"); - AVFilter* outFilter = avfilter_get_by_name("abuffersink"); + const AVFilter* srcFilter = avfilter_get_by_name("abuffer"); + const 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, m_sampleRate, @@ -121,7 +121,7 @@ bool CActiveAEFilter::CreateAtempoFilter() { - AVFilter *atempo; + const AVFilter *atempo; atempo = avfilter_get_by_name("atempo"); m_pFilterCtxAtempo = avfilter_graph_alloc_filter(m_pFilterGraph, atempo, "atempo"); Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp @@ -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; Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp @@ -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! Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodec.h =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodec.h +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodec.h @@ -118,6 +118,7 @@ int8_t* qp_table; //< Quantization parameters, primarily used by filters int qstride; int qscale_type; + int pict_type; unsigned int iWidth; unsigned int iHeight; Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp @@ -171,7 +171,7 @@ ctx->SetHardware(NULL); avctx->get_buffer2 = avcodec_default_get_buffer2; avctx->slice_flags = 0; - avctx->hwaccel_context = 0; + av_buffer_unref(&avctx->hw_frames_ctx); } const AVPixelFormat * cur = fmt; @@ -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; @@ -400,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); } @@ -791,6 +781,7 @@ m_droppedFrames = 0; m_iLastKeyframe = m_pCodecContext->has_b_frames; avcodec_flush_buffers(m_pCodecContext); + av_frame_unref(m_pFrame); if (m_pHardware) m_pHardware->Reset(); @@ -883,22 +874,10 @@ 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); + pDvdVideoPicture->pict_type = m_pFrame->pict_type; if (pDvdVideoPicture->iRepeatPicture) pDvdVideoPicture->dts = DVD_NOPTS_VALUE; @@ -989,8 +968,8 @@ return -1; } - AVFilter* srcFilter = avfilter_get_by_name("buffer"); - AVFilter* outFilter = avfilter_get_by_name("buffersink"); // should be last filter in the graph for now + const AVFilter* srcFilter = avfilter_get_by_name("buffer"); + const 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", m_pCodecContext->width, Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoPPFFmpeg.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoPPFFmpeg.cpp +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoPPFFmpeg.cpp @@ -132,15 +132,12 @@ } } - int pict_type = (m_pSource->qscale_type != DVP_QSCALE_MPEG1) ? - PP_PICT_TYPE_QP2 : 0; - pp_postprocess((const uint8_t**)m_pSource->data, m_pSource->iLineSize, m_pTarget->data, m_pTarget->iLineSize, m_pSource->iWidth, m_pSource->iHeight, m_pSource->qp_table, m_pSource->qstride, m_pMode, m_pContext, - pict_type); //m_pSource->iFrameType); + m_pSource->pict_type | m_pSource->qscale_type ? PP_PICT_TYPE_QP2 : 0); //Copy frame information over to target, but make sure it is set as allocated should decoder have forgotten m_pTarget->iFlags = m_pSource->iFlags | DVP_FLAG_ALLOCATED; Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp @@ -3090,8 +3090,8 @@ 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, Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp @@ -25,7 +25,7 @@ #include "settings/Settings.h" #include "../DVDClock.h" -#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - FF_INPUT_BUFFER_PADDING_SIZE) +#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) class CDemuxStreamClientInternal @@ -179,9 +179,9 @@ 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; } } Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp @@ -78,7 +78,7 @@ {} }; -#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - FF_INPUT_BUFFER_PADDING_SIZE) +#define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) std::string CDemuxStreamAudioFFmpeg::GetStreamName() { @@ -1881,12 +1881,12 @@ // 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 { Index: kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp +++ kodi-17.6+dfsg1/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxUtils.cpp @@ -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 Index: kodi-17.6+dfsg1/xbmc/guilib/FFmpegImage.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/guilib/FFmpegImage.cpp +++ kodi-17.6+dfsg1/xbmc/guilib/FFmpegImage.cpp @@ -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; Index: kodi-17.6+dfsg1/xbmc/utils/BitstreamConverter.cpp =================================================================== --- kodi-17.6+dfsg1.orig/xbmc/utils/BitstreamConverter.cpp +++ kodi-17.6+dfsg1/xbmc/utils/BitstreamConverter.cpp @@ -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");