Bug#888386: opencv: FTBFS with FFmpeg 4.0

2018-06-17 Thread James Cowgill
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


Bug#888386: opencv: FTBFS with FFmpeg 4.0

2018-06-06 Thread James Cowgill
Control: tags -1 fixed-upstream

Hi,

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?

James



signature.asc
Description: OpenPGP digital signature