Control: tags -1 + patch On Wed, Jan 24, 2018 at 10:26:50PM +0000, jcowg...@debian.org wrote: > Source: opal > Version: 3.10.10~dfsg2-2.1 > Severity: important > User: debian-multime...@lists.debian.org > Usertags: ffmpeg-3.5-transition > > Hi, > > Your package FTBFS with the upcoming version 3.5 of FFmpeg. In FFmpeg 3.5, > there are a number of API changes which will cause many packages to FTBFS. > For this reason I have uploaded an early development snapshot to experimental > before the 3.5 release in an attempt to fix some of these a bit quicker. > While 3.5 has not been finalized and the ABI is not stable yet, there should > not be any significant API breakages before the release.
Attached is a patch which at least makes opal build. I think probably some of the "#if" guards are wrong and should be replaced with new API, but I'm not sure. Hope it helps. Cheers, -- Iain Lane [ i...@orangesquash.org.uk ] Debian Developer [ la...@debian.org ] Ubuntu Developer [ la...@ubuntu.com ]
Description: FFmpeg 4.0 compatibility Author: Iain Lane <iain.l...@canonical.com> Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=888357 Forwarded: yes Index: b/plugins/video/H.263-1998/h263-1998.cxx =================================================================== --- a/plugins/video/H.263-1998/h263-1998.cxx +++ b/plugins/video/H.263-1998/h263-1998.cxx @@ -230,7 +230,7 @@ m_context->opaque = this; - m_context->flags = CODEC_FLAG_TRUNCATED // Possible missing packets + m_context->flags = AV_CODEC_FLAG_TRUNCATED // Possible missing packets ; m_context->pix_fmt = AV_PIX_FMT_YUV420P; @@ -341,9 +341,9 @@ // Level 3+ // works with eyeBeam if (atoi(value) == 1) - m_context->flags |= CODEC_FLAG_AC_PRED; + m_context->flags |= AV_CODEC_FLAG_AC_PRED; else - m_context->flags &= ~CODEC_FLAG_AC_PRED; + m_context->flags &= ~AV_CODEC_FLAG_AC_PRED; return; } @@ -351,9 +351,9 @@ // Annex J: Deblocking Filter // works with eyeBeam if (atoi(value) == 1) - m_context->flags |= CODEC_FLAG_LOOP_FILTER; + m_context->flags |= AV_CODEC_FLAG_LOOP_FILTER; else - m_context->flags &= ~CODEC_FLAG_LOOP_FILTER; + m_context->flags &= ~AV_CODEC_FLAG_LOOP_FILTER; return; } @@ -420,9 +420,11 @@ m_context->max_qdiff = 10; // was 3 // max q difference between frames m_context->qcompress = 0.5; // qscale factor between easy & hard scenes (0.0-1.0) +#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(52, 0, 0) // Lagrange multipliers - this is how the context defaults do it: m_context->lmin = m_context->qmin * FF_QP2LAMBDA; m_context->lmax = m_context->qmax * FF_QP2LAMBDA; +#endif // YUV420P input m_inputFrame->linesize[0] = m_context->width; @@ -599,7 +601,7 @@ #ifdef CODEC_FLAG_H263P_UMV m_context->flags &= ~CODEC_FLAG_H263P_UMV; #endif - m_context->flags &= ~CODEC_FLAG_4MV; + m_context->flags &= ~AV_CODEC_FLAG_4MV; #if LIBAVCODEC_RTP_MODE m_context->flags &= ~CODEC_FLAG_H263P_AIC; #endif Index: b/plugins/video/H.263-1998/rfc2429.cxx =================================================================== --- a/plugins/video/H.263-1998/rfc2429.cxx +++ b/plugins/video/H.263-1998/rfc2429.cxx @@ -286,7 +286,7 @@ unsigned char * RFC2429Frame::GetBuffer() { - memset (m_encodedFrame.ptr + m_encodedFrame.pos,0 , FF_INPUT_BUFFER_PADDING_SIZE); + memset (m_encodedFrame.ptr + m_encodedFrame.pos,0 , AV_INPUT_BUFFER_PADDING_SIZE); return (m_encodedFrame.ptr); } @@ -340,10 +340,10 @@ unsigned remBytes = packet.GetPayloadSize() - headerPLEN - (headerV ? 3 : 2); - if ((m_encodedFrame.pos + (headerP ? 2 : 0) + remBytes) > (m_maxFrameSize - FF_INPUT_BUFFER_PADDING_SIZE)) { + if ((m_encodedFrame.pos + (headerP ? 2 : 0) + remBytes) > (m_maxFrameSize - AV_INPUT_BUFFER_PADDING_SIZE)) { PTRACE(2, "H.263-RFC2429", "Trying to add " << remBytes << " bytes to frame at position " << m_encodedFrame.pos + (headerP ? 2 : 0) - << " bytes while maximum frame size is " << m_maxFrameSize << "-" << FF_INPUT_BUFFER_PADDING_SIZE << " bytes"); + << " bytes while maximum frame size is " << m_maxFrameSize << "-" << AV_INPUT_BUFFER_PADDING_SIZE << " bytes"); return false; } Index: b/plugins/video/MPEG4-ffmpeg/mpeg4.cxx =================================================================== --- a/plugins/video/MPEG4-ffmpeg/mpeg4.cxx +++ b/plugins/video/MPEG4-ffmpeg/mpeg4.cxx @@ -546,11 +546,14 @@ // Reduce the difference in quantization between frames. m_avcontext->qblur = 0.3f; +#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(52, 0, 0) // default is tex^qComp; 1 is constant bitrate m_avcontext->rc_eq = (char*) "1"; +#endif //avcontext->rc_eq = "tex^qComp"; // These ones technically could be dynamic, I think m_avcontext->rc_min_rate = 0; +#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(52, 0, 0) // This is set to 0 in ffmpeg.c, the command-line utility. m_avcontext->rc_initial_cplx = 0.0f; @@ -560,6 +563,7 @@ // the "vbv buffer", not bits per second, so nobody really knows how // it works. m_avcontext->rc_buffer_aggressivity = 1.0f; +#endif // Ratecontrol buffer size, in bits. Usually 0.5-1 second worth. // 224 kbyte is what VLC uses, and it seems to fix the quantization pulse (at Level 5) @@ -592,10 +596,10 @@ m_avcontext->flags |= CODEC_FLAG_4MV; // 4 motion vectors #else m_avcontext->max_b_frames=0; /*don't use b frames*/ - m_avcontext->flags|=CODEC_FLAG_AC_PRED; + m_avcontext->flags|=AV_CODEC_FLAG_AC_PRED; /*c->flags|=CODEC_FLAG_QPEL;*/ /*don't enable this one: this forces profile_level to advanced simple profile */ - m_avcontext->flags|=CODEC_FLAG_4MV; - m_avcontext->flags|=CODEC_FLAG_LOOP_FILTER; + m_avcontext->flags|=AV_CODEC_FLAG_4MV; + m_avcontext->flags|=AV_CODEC_FLAG_LOOP_FILTER; #endif m_avcontext->opaque = this; // for use in RTP callback } @@ -631,9 +635,11 @@ m_avcontext->qmax = round ( (double)(31 - m_videoQMin) / 31 * m_videoTSTO + m_videoQMin); m_avcontext->qmax = std::min( m_avcontext->qmax, 31); +#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(52, 0, 0) // Lagrange multipliers - this is how the context defaults do it: m_avcontext->lmin = m_avcontext->qmin * FF_QP2LAMBDA; m_avcontext->lmax = m_avcontext->qmax * FF_QP2LAMBDA; +#endif // If framesize has changed or is not yet initialized, fix it up if((unsigned)m_avcontext->width != m_frameWidth || (unsigned)m_avcontext->height != m_frameHeight) { @@ -661,7 +667,7 @@ { delete[] m_rawFrameBuffer; } - m_rawFrameBuffer = new BYTE[m_rawFrameLen + FF_INPUT_BUFFER_PADDING_SIZE]; + m_rawFrameBuffer = new BYTE[m_rawFrameLen + AV_INPUT_BUFFER_PADDING_SIZE]; if (m_encFrameBuffer) { @@ -671,7 +677,7 @@ m_encFrameBuffer = new BYTE[m_encFrameLen]; // Clear the back padding - memset(m_rawFrameBuffer + m_rawFrameLen, 0, FF_INPUT_BUFFER_PADDING_SIZE); + memset(m_rawFrameBuffer + m_rawFrameLen, 0, AV_INPUT_BUFFER_PADDING_SIZE); const unsigned fsz = m_frameWidth * m_frameHeight; m_avpicture->data[0] = m_rawFrameBuffer; // luminance m_avpicture->data[1] = m_rawFrameBuffer + fsz; // first chroma channel @@ -1322,7 +1328,7 @@ // void MPEG4DecoderContext::SetStaticDecodingParams() { - m_avcontext->flags |= CODEC_FLAG_4MV; + m_avcontext->flags |= AV_CODEC_FLAG_4MV; m_avcontext->workaround_bugs = 0; // no workaround for buggy implementations } Index: b/plugins/video/H.264/h264-x264.cxx =================================================================== --- a/plugins/video/H.264/h264-x264.cxx +++ b/plugins/video/H.264/h264-x264.cxx @@ -1078,7 +1078,7 @@ #ifdef CODEC_FLAG2_DROP_FRAME_TIMECODE CODEC_FLAG2_DROP_FRAME_TIMECODE | #endif - CODEC_FLAG2_CHUNKS; + AV_CODEC_FLAG2_CHUNKS; if ((m_picture = FFMPEGLibraryInstance.AvcodecAllocFrame()) == NULL) return false;
signature.asc
Description: PGP signature