Control: tags -1 patch
Hi,
On 06/06/18 14:26, James Cowgill wrote:
> On Wed, 24 Jan 2018 22:26:50 + jcowg...@debian.org wrote:
>> Source: opencv
>> Version: 3.2.0+dfsg-4
>> 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.
>
> It seems upstream has fixed this in OpenCV 3.4. Do you know if there are
> plans to package 3.4 soon or should I try to backport the relevant
> patches to 3.2?
It turns out the backport was very easy - a single upstream PR contains
all the changes needed to get 3.2 building with FFmpeg 4.0. Patch attached.
James
Description: Fix FTBFS with FFmpeg 4.0
Origin: upstream, https://github.com/opencv/opencv/commit/b1d208891b9f6ae3968730b120a5d0dcbba679d0
Bug: https://github.com/opencv/opencv/pull/10011
Bug-Debian: https://bugs.debian.org/888386
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/modules/videoio/src/cap_ffmpeg_impl.hpp
+++ b/modules/videoio/src/cap_ffmpeg_impl.hpp
@@ -149,6 +149,10 @@ extern "C" {
#define AV_PIX_FMT_GRAY16BE PIX_FMT_GRAY16BE
#endif
+#ifndef PKT_FLAG_KEY
+#define PKT_FLAG_KEY AV_PKT_FLAG_KEY
+#endif
+
#if LIBAVUTIL_BUILD >= (LIBAVUTIL_VERSION_MICRO >= 100 \
? CALC_FFMPEG_VERSION(52, 38, 100) : CALC_FFMPEG_VERSION(52, 13, 0))
#define USE_AV_FRAME_GET_BUFFER 1
@@ -1538,7 +1542,11 @@ static AVStream *icv_add_video_stream_FF
// some formats want stream headers to be seperate
if(oc->oformat->flags & AVFMT_GLOBALHEADER)
{
+#if LIBAVCODEC_BUILD > CALC_FFMPEG_VERSION(56, 35, 0)
+c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
+#else
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
+#endif
}
#endif
@@ -1566,23 +1574,24 @@ static int icv_av_write_frame_FFMPEG( AV
#endif
int ret = OPENCV_NO_FRAMES_WRITTEN_CODE;
-if (oc->oformat->flags & AVFMT_RAWPICTURE) {
+#if LIBAVFORMAT_BUILD < CALC_FFMPEG_VERSION(57, 0, 0)
+if (oc->oformat->flags & AVFMT_RAWPICTURE)
+{
/* raw video case. The API will change slightly in the near
futur for that */
AVPacket pkt;
av_init_packet();
-#ifndef PKT_FLAG_KEY
-#define PKT_FLAG_KEY AV_PKT_FLAG_KEY
-#endif
-
pkt.flags |= PKT_FLAG_KEY;
pkt.stream_index= video_st->index;
pkt.data= (uint8_t *)picture;
pkt.size= sizeof(AVPicture);
ret = av_write_frame(oc, );
-} else {
+}
+else
+#endif
+{
/* encode the image */
AVPacket pkt;
av_init_packet();
@@ -1740,7 +1749,9 @@ void CvVideoWriter_FFMPEG::close()
/* write the trailer, if any */
if(ok && oc)
{
-if( (oc->oformat->flags & AVFMT_RAWPICTURE) == 0 )
+#if LIBAVFORMAT_BUILD < CALC_FFMPEG_VERSION(57, 0, 0)
+if (!(oc->oformat->flags & AVFMT_RAWPICTURE))
+#endif
{
for(;;)
{
@@ -2036,7 +2047,11 @@ bool CvVideoWriter_FFMPEG::open( const c
outbuf = NULL;
-if (!(oc->oformat->flags & AVFMT_RAWPICTURE)) {
+
+#if LIBAVFORMAT_BUILD < CALC_FFMPEG_VERSION(57, 0, 0)
+if (!(oc->oformat->flags & AVFMT_RAWPICTURE))
+#endif
+{
/* allocate output buffer */
/* assume we will never get codec output with more than 4 bytes per pixel... */
outbuf_size = width*height*4;
@@ -2335,7 +2350,11 @@ AVStream* OutputMediaStream_FFMPEG::addV
// some formats want stream headers to be seperate
if (oc->oformat->flags & AVFMT_GLOBALHEADER)
{
-c->flags |= CODEC_FLAG_GLOBAL_HEADER;
+#if LIBAVCODEC_BUILD > CALC_FFMPEG_VERSION(56, 35, 0)
+c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
+#else
+c->flags |= CODEC_FLAG_GLOBAL_HEADER;
+#endif
}
#endif
signature.asc
Description: OpenPGP digital signature