Date: Fri, 4 Nov 2016 08:52:20 +0000 (UTC) From: Jan Beich <jbeich@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r425306 - in branches/2016Q4/x11-toolkits/nucleo: . files Message-ID: <201611040852.uA48qKO1040770@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jbeich Date: Fri Nov 4 08:52:19 2016 New Revision: 425306 URL: https://svnweb.freebsd.org/changeset/ports/425306 Log: MFH: r425305 x11-toolkits/nucleo: unbreak build with ffmpeg 3.x In file included from nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:14: nucleo/plugins/ffmpeg/ffmpegImageSink.H:39:10: error: ISO C++ forbids forward references to 'enum' types enum PixelFormat srcEncoding ; ^ nucleo/plugins/ffmpeg/ffmpegImageSink.H:39:22: error: field has incomplete type 'enum PixelFormat' enum PixelFormat srcEncoding ; ^ nucleo/plugins/ffmpeg/ffmpegImageSink.H:39:10: note: forward declaration of 'nucleo::PixelFormat' enum PixelFormat srcEncoding ; ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:131:44: error: use of undeclared identifier 'CODEC_ID_NONE'; did you mean 'AV_CODEC_ID_NONE'? else if (output_format->video_codec == CODEC_ID_NONE) { ^~~~~~~~~~~~~ AV_CODEC_ID_NONE /usr/local/include/libavcodec/avcodec.h:192:5: note: 'AV_CODEC_ID_NONE' declared here AV_CODEC_ID_NONE, ^ nucleo/plugins/ffmpeg/ffmpegImageSource.cxx:132:8: error: use of undeclared identifier 'PIX_FMT_GRAY8'; did you mean 'AV_PIX_FMT_GRAY8'? case PIX_FMT_GRAY8: ^~~~~~~~~~~~~ AV_PIX_FMT_GRAY8 /usr/local/include/libavutil/pixfmt.h:70:5: note: 'AV_PIX_FMT_GRAY8' declared here AV_PIX_FMT_GRAY8, ///< Y , 8bpp ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:265:34: error: use of undeclared identifier 'PIX_FMT_GRAY8'; did you mean 'AV_PIX_FMT_GRAY8'? case Image::L: srcEncoding = PIX_FMT_GRAY8 ; break ; ^~~~~~~~~~~~~ AV_PIX_FMT_GRAY8 /usr/local/include/libavutil/pixfmt.h:70:5: note: 'AV_PIX_FMT_GRAY8' declared here AV_PIX_FMT_GRAY8, ///< Y , 8bpp ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:266:42: error: use of undeclared identifier 'PIX_FMT_YUV420P'; did you mean 'AV_PIX_FMT_YUV420P'? case Image::YpCbCr420: srcEncoding = PIX_FMT_YUV420P ; break ; ^~~~~~~~~~~~~~~ AV_PIX_FMT_YUV420P /usr/local/include/libavutil/pixfmt.h:62:5: note: 'AV_PIX_FMT_YUV420P' declared here AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:267:28: error: use of undeclared identifier 'PIX_FMT_RGB24'; did you mean 'AV_PIX_FMT_RGB24'? default: srcEncoding = PIX_FMT_RGB24 ; break ; ^~~~~~~~~~~~~ AV_PIX_FMT_RGB24 /usr/local/include/libavutil/pixfmt.h:64:5: note: 'AV_PIX_FMT_RGB24' declared here AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:270:5: error: use of undeclared identifier 'avcodec_get_frame_defaults' avcodec_get_frame_defaults(&srcPic) ; ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:274:3: error: use of undeclared identifier 'avcodec_get_frame_defaults' avcodec_get_frame_defaults(&convPic) ; ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:303:22: error: use of undeclared identifier 'PIX_FMT_RGB24'; did you mean 'AV_PIX_FMT_RGB24'? if (srcEncoding==PIX_FMT_RGB24) convertImage(img, Image::RGB) ; ^~~~~~~~~~~~~ AV_PIX_FMT_RGB24 /usr/local/include/libavutil/pixfmt.h:64:5: note: 'AV_PIX_FMT_RGB24' declared here AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:329:20: error: use of undeclared identifier 'avcodec_encode_video'; did you mean 'avcodec_encode_video2'? int out_size = avcodec_encode_video(cctx, video_outbuf, video_outbuf_size, picture) ; ^~~~~~~~~~~~~~~~~~~~ avcodec_encode_video2 /usr/local/include/libavcodec/avcodec.h:5322:5: note: 'avcodec_encode_video2' declared here int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, ^ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx:329:47: error: cannot initialize a parameter of type 'AVPacket *' with an lvalue of type 'uint8_t *' (aka 'unsigned char *') int out_size = avcodec_encode_video(cctx, video_outbuf, video_outbuf_size, picture) ; ^~~~~~~~~~~~ /usr/local/include/libavcodec/avcodec.h:5322:60: note: passing argument to parameter 'avpkt' here int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, ^ PR: 207547 Approved by: ports-secteam blanket Added: branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo_plugins_ffmpeg_ffmpegImageSink.H - copied unchanged from r425305, head/x11-toolkits/nucleo/files/patch-nucleo_plugins_ffmpeg_ffmpegImageSink.H Modified: branches/2016Q4/x11-toolkits/nucleo/Makefile branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo__plugins__ffmpeg__ffmpegImageSink.cxx branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo__plugins__ffmpeg__ffmpegImageSource.cxx Directory Properties: branches/2016Q4/ (props changed) Modified: branches/2016Q4/x11-toolkits/nucleo/Makefile ============================================================================== --- branches/2016Q4/x11-toolkits/nucleo/Makefile Fri Nov 4 08:48:49 2016 (r425305) +++ branches/2016Q4/x11-toolkits/nucleo/Makefile Fri Nov 4 08:52:19 2016 (r425306) @@ -3,7 +3,7 @@ PORTNAME= nucleo PORTVERSION= 0.7.6 -PORTREVISION= 14 +PORTREVISION= 15 CATEGORIES= x11-toolkits MASTER_SITES= http://insitu.lri.fr/metisse/download/nucleo/ Modified: branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo__plugins__ffmpeg__ffmpegImageSink.cxx ============================================================================== --- branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo__plugins__ffmpeg__ffmpegImageSink.cxx Fri Nov 4 08:48:49 2016 (r425305) +++ branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo__plugins__ffmpeg__ffmpegImageSink.cxx Fri Nov 4 08:52:19 2016 (r425306) @@ -1,6 +1,6 @@ ---- nucleo/plugins/ffmpeg/ffmpegImageSink.cxx.orig 2009-05-25 14:53:15.000000000 +0200 -+++ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx 2015-07-03 23:24:23.255152399 +0200 -@@ -118,11 +118,11 @@ namespace nucleo { +--- nucleo/plugins/ffmpeg/ffmpegImageSink.cxx.orig 2009-05-25 12:53:15 UTC ++++ nucleo/plugins/ffmpeg/ffmpegImageSink.cxx +@@ -118,17 +118,17 @@ namespace nucleo { output_format = 0 ; if (uri.scheme=="mpegts-udp") { @@ -15,6 +15,13 @@ } std::string message ; + if (!output_format) + message = "Unable to find the requested format" ; +- else if (output_format->video_codec == CODEC_ID_NONE) { ++ else if (output_format->video_codec == AV_CODEC_ID_NONE) { + output_format = 0 ; + message = "Not a video format" ; + } else if (output_format->flags & AVFMT_NOFILE) { @@ -156,12 +156,13 @@ namespace nucleo { snprintf(format_context->filename, sizeof(format_context->filename), "%s", filename.c_str()) ; @@ -30,15 +37,17 @@ // ---------------- -@@ -190,7 +191,7 @@ namespace nucleo { +@@ -190,8 +191,8 @@ namespace nucleo { AVCodecContext *codec_context = vstream->codec ; codec_context->codec_id = output_format->video_codec ; - codec_context->codec_type = CODEC_TYPE_VIDEO ; +- codec_context->pix_fmt = PIX_FMT_YUV420P ; + codec_context->codec_type = AVMEDIA_TYPE_VIDEO ; - codec_context->pix_fmt = PIX_FMT_YUV420P ; ++ codec_context->pix_fmt = AV_PIX_FMT_YUV420P ; codec_context->width = img->getWidth() ; // must be a multiple of two codec_context->height = img->getHeight() ; // must be a multiple of two + codec_context->me_method = ME_EPZS ; // ME_ZERO @@ -210,12 +211,7 @@ namespace nucleo { || !strcmp(format_context->oformat->name, "3gp")) codec_context->flags |= CODEC_FLAG_GLOBAL_HEADER ; @@ -71,7 +80,7 @@ std::cerr << "ffmpegImageSink: could not open " << filename << std::endl ; return false ; } -@@ -245,17 +241,17 @@ namespace nucleo { +@@ -245,37 +241,37 @@ namespace nucleo { int port = uri.port ; if (!port) port = 1234 ; sender = new UdpSender(uri.host.c_str(), port) ; @@ -92,8 +101,70 @@ video_outbuf_size = 256*1024 ; // FIXME ? video_outbuf = new uint8_t [video_outbuf_size] ; -@@ -346,7 +342,7 @@ namespace nucleo { - pkt.size = out_size ; + + switch (img->getEncoding()) { + case Image::ARGB: +- // PIX_FMT_RGBA32 is endian-sensitive... +- // srcEncoding = ByteOrder::isLittleEndian() ? PIX_FMT_RGB24 : PIX_FMT_RGBA32 ; +- srcEncoding = PIX_FMT_RGB24 ; ++ // AV_PIX_FMT_RGBA32 is endian-sensitive... ++ // srcEncoding = ByteOrder::isLittleEndian() ? AV_PIX_FMT_RGB24 : AV_PIX_FMT_RGBA32 ; ++ srcEncoding = AV_PIX_FMT_RGB24 ; + break ; +- case Image::L: srcEncoding = PIX_FMT_GRAY8 ; break ; +- case Image::YpCbCr420: srcEncoding = PIX_FMT_YUV420P ; break ; +- default: srcEncoding = PIX_FMT_RGB24 ; break ; ++ case Image::L: srcEncoding = AV_PIX_FMT_GRAY8 ; break ; ++ case Image::YpCbCr420: srcEncoding = AV_PIX_FMT_YUV420P ; break ; ++ default: srcEncoding = AV_PIX_FMT_RGB24 ; break ; + } + +- avcodec_get_frame_defaults(&srcPic) ; ++ av_frame_unref(&srcPic) ; + if (codec_context->pix_fmt==srcEncoding) + picture = &srcPic ; + else { +- avcodec_get_frame_defaults(&convPic) ; ++ av_frame_unref(&convPic) ; + int size = avpicture_get_size(codec_context->pix_fmt, codec_context->width, codec_context->height) ; + avpicture_fill((AVPicture *)&convPic, + new uint8_t [size], +@@ -304,7 +300,7 @@ namespace nucleo { + // std::cerr << "base: " << vstream->time_base.num << " / " << vstream->time_base.den << std::endl ; + + AVCodecContext *cctx = vstream->codec ; +- if (srcEncoding==PIX_FMT_RGB24) convertImage(img, Image::RGB) ; ++ if (srcEncoding==AV_PIX_FMT_RGB24) convertImage(img, Image::RGB) ; + resizeImage(img, cctx->width, cctx->height) ; + avpicture_fill((AVPicture *)&srcPic, img->getData(), srcEncoding, + cctx->width, cctx->height) ; +@@ -330,23 +326,23 @@ namespace nucleo { + picture->pts = pts ; + // std::cerr << "pts: " << pts << std::endl ; + +- int out_size = avcodec_encode_video(cctx, video_outbuf, video_outbuf_size, picture) ; +- if (!out_size) { +- std::cerr << "ffmpegImageSink: avcodec_encode_video returned 0" << std::endl ; ++ AVPacket pkt ; ++ av_init_packet(&pkt) ; ++ pkt.data = video_outbuf ; ++ pkt.size = video_outbuf_size ; ++ ++ int got_packet = 0 ; ++ int ret = avcodec_encode_video2(cctx, &pkt, picture, &got_packet) ; ++ if (ret) { ++ std::cerr << "ffmpegImageSink: avcodec_encode_video2 failed" << std::endl ; + stop() ; + return false ; + } + +- // std::cerr << "out_size = " << out_size << std::endl ; +- +- AVPacket pkt ; +- av_init_packet(&pkt) ; + pkt.stream_index = vstream->index ; +- pkt.data = video_outbuf ; +- pkt.size = out_size ; if (cctx->coded_frame) { pkt.pts = pkt.dts = pts ; - if (cctx->coded_frame->key_frame) pkt.flags |= PKT_FLAG_KEY ; Modified: branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo__plugins__ffmpeg__ffmpegImageSource.cxx ============================================================================== --- branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo__plugins__ffmpeg__ffmpegImageSource.cxx Fri Nov 4 08:48:49 2016 (r425305) +++ branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo__plugins__ffmpeg__ffmpegImageSource.cxx Fri Nov 4 08:52:19 2016 (r425306) @@ -1,6 +1,6 @@ ---- nucleo/plugins/ffmpeg/ffmpegImageSource.cxx.orig +--- nucleo/plugins/ffmpeg/ffmpegImageSource.cxx.orig 2009-05-25 12:53:15 UTC +++ nucleo/plugins/ffmpeg/ffmpegImageSource.cxx -@@ -47,23 +47,23 @@ +@@ -47,23 +47,23 @@ namespace nucleo { bool ffmpegImageSource::start(void) { @@ -28,7 +28,7 @@ video_stream = i ; found_video_stream = true ; } else -@@ -86,7 +86,7 @@ +@@ -86,7 +86,7 @@ namespace nucleo { return false ; } @@ -37,7 +37,7 @@ if (ret<0) { std::cerr << "ffmpegImageSource: unable to open codec" << std::endl ; return false ; -@@ -123,7 +123,7 @@ +@@ -123,39 +123,39 @@ namespace nucleo { #endif int got_picture = 0 ; @@ -46,3 +46,42 @@ av_free_packet(&packet) ; if (!got_picture) continue ; + lastImage.setTimeStamp() ; + switch (cctx->pix_fmt) { +- case PIX_FMT_GRAY8: ++ case AV_PIX_FMT_GRAY8: + lastImage.setDims(cctx->width, cctx->height) ; + lastImage.setEncoding(Image::L) ; + lastImage.setData(frame.data[0], cctx->width*cctx->height, Image::NONE) ; + break ; +- case PIX_FMT_RGB24: ++ case AV_PIX_FMT_RGB24: + lastImage.setDims(cctx->width, cctx->height) ; + lastImage.setEncoding(Image::RGB) ; + lastImage.setData(frame.data[0], (cctx->width*cctx->height)*3, Image::NONE) ; + break ; + default: // Convert everything else to RGB24 +- // PIX_FMT_YUV420P has three separate plans and ffmpeg converts ++ // AV_PIX_FMT_YUV420P has three separate plans and ffmpeg converts + // them to RGB faster than nucleo does... +- // PIX_FMT_RGBA32 and PIX_FMT_RGB565 are stored in cpu endianness ++ // AV_PIX_FMT_RGBA32 and AV_PIX_FMT_RGB565 are stored in cpu endianness + // On OS X (powerpc), they correspond to Image::ARGB and Image::RGB565 + lastImage.prepareFor(cctx->width, cctx->height, Image::RGB) ; + AVFrame tmpframe ; +- avpicture_fill((AVPicture*)&tmpframe, lastImage.getData(), PIX_FMT_RGB24, ++ avpicture_fill((AVPicture*)&tmpframe, lastImage.getData(), AV_PIX_FMT_RGB24, + cctx->width, cctx->height) ; + #if NO_SOFTWARE_SCALER +- img_convert((AVPicture*)&tmpframe, PIX_FMT_RGB24, ++ img_convert((AVPicture*)&tmpframe, AV_PIX_FMT_RGB24, + (AVPicture*)&frame, cctx->pix_fmt, cctx->width, cctx->height) ; + #else + SwsContext *swsc = 0 ; + swsc = sws_getCachedContext(swsc, + cctx->width, cctx->height, cctx->pix_fmt, +- cctx->width, cctx->height, PIX_FMT_RGB24, ++ cctx->width, cctx->height, AV_PIX_FMT_RGB24, + SWS_BICUBIC, NULL, NULL, NULL) ; + if (!swsc) { + std::cerr << "ffmpegImageSource: sws_getCachedContext failed" << std::endl ; Copied: branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo_plugins_ffmpeg_ffmpegImageSink.H (from r425305, head/x11-toolkits/nucleo/files/patch-nucleo_plugins_ffmpeg_ffmpegImageSink.H) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2016Q4/x11-toolkits/nucleo/files/patch-nucleo_plugins_ffmpeg_ffmpegImageSink.H Fri Nov 4 08:52:19 2016 (r425306, copy of r425305, head/x11-toolkits/nucleo/files/patch-nucleo_plugins_ffmpeg_ffmpegImageSink.H) @@ -0,0 +1,11 @@ +--- nucleo/plugins/ffmpeg/ffmpegImageSink.H.orig 2009-05-25 12:53:15 UTC ++++ nucleo/plugins/ffmpeg/ffmpegImageSink.H +@@ -36,7 +36,7 @@ namespace nucleo { + AVFrame srcPic, convPic, *picture ; + int video_outbuf_size ; + uint8_t *video_outbuf ; +- enum PixelFormat srcEncoding ; ++ enum AVPixelFormat srcEncoding ; + + std::string filename ; // if used as a file sink +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611040852.uA48qKO1040770>