commit:     03d7a29c19acd548611a8cd1f17f01745d1f5f6d
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 17 09:26:05 2017 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sat Jun 17 09:28:05 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=03d7a29c

media-video/kino: Fix build with ffmpeg-3 (#539894), drop support for dead 
gstreamer:0.10

Package-Manager: Portage-2.3.6, Repoman-2.3.2

 media-video/kino/files/kino-1.3.4-ffmpeg3.patch    | 157 +++++++++++++++++++++
 .../files/kino-1.3.4-libavcodec-pkg-config.patch   |   4 +-
 media-video/kino/kino-1.3.4-r1.ebuild              | 105 ++++++++++++++
 3 files changed, 264 insertions(+), 2 deletions(-)

diff --git a/media-video/kino/files/kino-1.3.4-ffmpeg3.patch 
b/media-video/kino/files/kino-1.3.4-ffmpeg3.patch
new file mode 100644
index 00000000000..57849d74e5c
--- /dev/null
+++ b/media-video/kino/files/kino-1.3.4-ffmpeg3.patch
@@ -0,0 +1,157 @@
+--- ./src.orig/frame.cc        2016-12-18 12:25:48.480275083 -0600
++++ ./src/frame.cc     2016-12-18 12:54:17.800740672 -0600
+@@ -103,7 +103,7 @@
+       av_register_all();
+       libavcodec = avcodec_alloc_context3(NULL);
+       avcodec_open2( libavcodec,
+-                       avcodec_find_decoder( CODEC_ID_DVVIDEO ), NULL );
++                       avcodec_find_decoder( AV_CODEC_ID_DVVIDEO ), NULL );
+       pthread_mutex_unlock( &avcodec_mutex );
+       data = ( unsigned char* ) av_mallocz( 144000 );
+ #if defined(HAVE_SWSCALE)
+@@ -1060,7 +1060,7 @@
+ int Frame::ExtractRGB( void * rgb )
+ {
+ #if defined(HAVE_LIBAVCODEC)
+-      AVFrame *frame = avcodec_alloc_frame();
++      AVFrame *frame = av_frame_alloc();
+       AVPicture dest;
+       int got_picture;
+ 
+@@ -1072,17 +1072,17 @@
+       avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );
+       if ( got_picture )
+       {
+-              avpicture_fill( &dest, static_cast<uint8_t*>( rgb ), 
PIX_FMT_RGB24, GetWidth(), GetHeight() );
++              avpicture_fill( &dest, static_cast<uint8_t*>( rgb ), 
AV_PIX_FMT_RGB24, GetWidth(), GetHeight() );
+ #if defined(HAVE_SWSCALE)
+               if ( !imgConvertRgbCtx )
+                       imgConvertRgbCtx = sws_getContext( libavcodec->width, 
libavcodec->height, libavcodec->pix_fmt,
+-                              GetWidth(), GetHeight(), PIX_FMT_RGB24, 
SWS_FAST_BILINEAR, NULL, NULL, NULL );
++                              GetWidth(), GetHeight(), AV_PIX_FMT_RGB24, 
SWS_FAST_BILINEAR, NULL, NULL, NULL );
+               sws_scale( imgConvertRgbCtx, frame->data, frame->linesize, 0, 
libavcodec->height, dest.data, dest.linesize );
+ #else
+-              img_convert( &dest, PIX_FMT_RGB24, 
reinterpret_cast<AVPicture*>( frame ), libavcodec->pix_fmt, GetWidth(), 
GetHeight() );
++              img_convert( &dest, AV_PIX_FMT_RGB24, 
reinterpret_cast<AVPicture*>( frame ), libavcodec->pix_fmt, GetWidth(), 
GetHeight() );
+ #endif
+       }
+-      av_free( frame );
++      av_frame_free( &frame );
+ #else
+       unsigned char *pixels[ 3 ];
+       int pitches[ 3 ];
+@@ -1125,7 +1125,7 @@
+ int Frame::ExtractYUV( void *yuv )
+ {
+ #if defined(HAVE_LIBAVCODEC)
+-      AVFrame *frame = avcodec_alloc_frame();;
++      AVFrame *frame = av_frame_alloc();;
+       AVPicture output;
+       int got_picture;
+ 
+@@ -1137,14 +1137,14 @@
+       avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );
+       if ( got_picture )
+       {
+-              avpicture_fill( &output, static_cast<uint8_t*>( yuv ), 
PIX_FMT_YUV422, GetWidth(), GetHeight() );
++              avpicture_fill( &output, static_cast<uint8_t*>( yuv ), 
AV_PIX_FMT_YUYV422, GetWidth(), GetHeight() );
+ #if defined(HAVE_SWSCALE)
+               if ( !imgConvertYuvCtx )
+                       imgConvertYuvCtx = sws_getContext( libavcodec->width, 
libavcodec->height, libavcodec->pix_fmt,
+-                              GetWidth(), GetHeight(), PIX_FMT_YUV422, 
SWS_FAST_BILINEAR, NULL, NULL, NULL );
++                              GetWidth(), GetHeight(), AV_PIX_FMT_YUYV422, 
SWS_FAST_BILINEAR, NULL, NULL, NULL );
+               sws_scale( imgConvertYuvCtx, frame->data, frame->linesize, 0, 
libavcodec->height, output.data, output.linesize );
+ #else
+-              img_convert( &output, PIX_FMT_YUV422, (AVPicture *)frame, 
libavcodec->pix_fmt, GetWidth(), GetHeight() );
++              img_convert( &output, AV_PIX_FMT_YUYV422, (AVPicture *)frame, 
libavcodec->pix_fmt, GetWidth(), GetHeight() );
+ #endif
+       }
+       av_free( frame );
+@@ -1164,7 +1164,7 @@
+ int Frame::ExtractYUV420( uint8_t *yuv, uint8_t *output[ 3 ] )
+ {
+ #if defined(HAVE_LIBAVCODEC)
+-      AVFrame *frame = avcodec_alloc_frame();
++      AVFrame *frame = av_frame_alloc();
+       int got_picture;
+ 
+         AVPacket pkt;
+@@ -1176,7 +1176,7 @@
+ 
+       int width = GetWidth(), height = GetHeight();
+ 
+-      if ( libavcodec->pix_fmt == PIX_FMT_YUV420P )   // PAL
++      if ( libavcodec->pix_fmt == AV_PIX_FMT_YUV420P )   // PAL
+       {
+               int h2 = height / 2;
+               int w2 = width / 2;
+@@ -1204,7 +1204,7 @@
+                       }
+               }
+       }
+-      else // libavcodec.pix_fmt == PIX_FMT_YUV411P // NTSC
++      else // libavcodec.pix_fmt == AV_PIX_FMT_YUV411P // NTSC
+       {
+               int w4 = width / 4;
+ 
+@@ -1341,7 +1341,7 @@
+                       avformatEncoder->oformat = av_guess_format( "dv", NULL, 
NULL );
+                       AVStream* vst = avformat_new_stream( avformatEncoder, 
NULL );
+                       vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
+-                      vst->codec->codec_id = CODEC_ID_DVVIDEO;
++                      vst->codec->codec_id = AV_CODEC_ID_DVVIDEO;
+                       vst->codec->bit_rate = 25000000;
+                       vst->start_time = 0;
+                       AVCodecContext *avcodecEncoder = vst->codec;
+@@ -1366,14 +1366,14 @@
+ #endif
+                       avcodecEncoder->thread_count = 2;
+                       avcodecEncoder->time_base= isPAL ? ( AVRational ){ 1, 
25 } : ( AVRational ){ 1001, 30000 };
+-                      avcodecEncoder->pix_fmt = isPAL ? PIX_FMT_YUV420P : 
PIX_FMT_YUV411P;
++                      avcodecEncoder->pix_fmt = isPAL ? AV_PIX_FMT_YUV420P : 
AV_PIX_FMT_YUV411P;
+                       avcodecEncoder->flags |= CODEC_FLAG_INTERLACED_DCT;
+-                      avcodec_open2( avcodecEncoder, avcodec_find_encoder( 
CODEC_ID_DVVIDEO ), NULL );
++                      avcodec_open2( avcodecEncoder, avcodec_find_encoder( 
AV_CODEC_ID_DVVIDEO ), NULL );
+                       av_new_packet( &avpacketEncoder, 144000 );
+                       tempImage = ( uint8_t* ) av_malloc(
+                               avpicture_get_size( avcodecEncoder->pix_fmt, 
avcodecEncoder->width, avcodecEncoder->height ) );
+ #if defined(HAVE_SWSCALE)
+-                      imgConvertEncoderCtx = sws_getContext( 
avcodecEncoder->width, avcodecEncoder->height, PIX_FMT_RGB24,
++                      imgConvertEncoderCtx = sws_getContext( 
avcodecEncoder->width, avcodecEncoder->height, AV_PIX_FMT_RGB24,
+                               avcodecEncoder->width, avcodecEncoder->height, 
avcodecEncoder->pix_fmt, SWS_FAST_BILINEAR, NULL, NULL, NULL);
+ #endif
+               }
+@@ -1452,8 +1452,8 @@
+       if ( CreateEncoder( IsPAL(), IsWide() ) )
+       {
+ #if defined(HAVE_LIBAVCODEC)
+-              AVFrame *input = avcodec_alloc_frame();
+-              AVFrame *output = avcodec_alloc_frame();
++              AVFrame *input = av_frame_alloc();
++              AVFrame *output = av_frame_alloc();
+ 
+               if ( input && output )
+               {
+@@ -1464,16 +1464,19 @@
+ 
+                       // Convert color space
+                       avpicture_fill( ( AVPicture* )output, tempImage, 
avcodecEncoder->pix_fmt, width, height );
+-                      avpicture_fill( ( AVPicture* )input, rgb, 
PIX_FMT_RGB24, width, height );
++                      avpicture_fill( ( AVPicture* )input, rgb, 
AV_PIX_FMT_RGB24, width, height );
+ #if defined(HAVE_SWSCALE)
+                       sws_scale( imgConvertEncoderCtx, input->data, 
input->linesize, 0, height,
+                               output->data, output->linesize);
+ #else
+-                      img_convert( ( AVPicture* )output, 
avcodecEncoder->pix_fmt, ( AVPicture* )input, PIX_FMT_RGB24, width, height );
++                      img_convert( ( AVPicture* )output, 
avcodecEncoder->pix_fmt, ( AVPicture* )input, AV_PIX_FMT_RGB24, width, height );
+ #endif
+ 
+                       // Encode
+-                      bytesInFrame = avcodec_encode_video( avcodecEncoder, 
avpacketEncoder.data, size, output );
++
++                      // bytesInFrame = avcodec_encode_video( avcodecEncoder, 
avpacketEncoder.data, size, output );
++                        int got_packet;  
++                      bytesInFrame = avcodec_encode_video2( avcodecEncoder, 
&avpacketEncoder, output, &got_packet );
+                         avformatEncoder->pb = avio_alloc_context(data, 
bytesInFrame, 0, NULL, NULL, NULL, NULL);
+                       avpacketEncoder.size = bytesInFrame;
+                       if ( !isEncoderHeaderWritten )

diff --git a/media-video/kino/files/kino-1.3.4-libavcodec-pkg-config.patch 
b/media-video/kino/files/kino-1.3.4-libavcodec-pkg-config.patch
index d6a8953cf00..c5cd12106f5 100644
--- a/media-video/kino/files/kino-1.3.4-libavcodec-pkg-config.patch
+++ b/media-video/kino/files/kino-1.3.4-libavcodec-pkg-config.patch
@@ -1,5 +1,5 @@
---- a/kino-1.3.4/configure.in  2009-09-08 02:35:23.000000000 -0400
-+++ b/kino-1.3.4/configure.in  2014-01-27 14:53:01.366063037 -0500
+--- a/configure.in     2009-09-08 02:35:23.000000000 -0400
++++ b/configure.in     2014-01-27 14:53:01.366063037 -0500
 @@ -221,7 +221,7 @@
                if (test "x$avcodec_include" != x) || (test "x$avcodec_lib" != 
x) ; then
                        local_legacy_ffmpeg_test

diff --git a/media-video/kino/kino-1.3.4-r1.ebuild 
b/media-video/kino/kino-1.3.4-r1.ebuild
new file mode 100644
index 00000000000..173197e1a2d
--- /dev/null
+++ b/media-video/kino/kino-1.3.4-r1.ebuild
@@ -0,0 +1,105 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+inherit autotools ltprune udev
+
+DESCRIPTION="Kino is a non-linear DV editor for GNU/Linux"
+HOMEPAGE="http://www.kinodv.org/";
+SRC_URI="mirror://sourceforge/kino/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+IUSE="alsa dvdr gpac lame libav quicktime sox vorbis"
+
+# Optional dependency on cinelerra-cvs (as a replacement for libquicktime)
+# dropped because kino may run with it but won't build anymore.
+
+CDEPEND="
+       >=x11-libs/gtk+-2.6.0:2
+       >=gnome-base/libglade-2.5.0
+       >=dev-libs/glib-2:2
+       x11-libs/libXv
+       dev-libs/libxml2:2
+       media-libs/audiofile
+       >=sys-libs/libraw1394-1.0.0
+       >=sys-libs/libavc1394-0.4.1
+       >=media-libs/libdv-0.103
+       media-libs/libsamplerate
+       media-libs/libiec61883
+       media-libs/libv4l:0=
+       alsa? ( >=media-libs/alsa-lib-1.0.9 )
+       !libav? ( >=media-video/ffmpeg-3:0= )
+       libav? ( media-video/libav:0= ) 
+       quicktime? ( >=media-libs/libquicktime-0.9.5 )
+"
+DEPEND="${CDEPEND}
+       dev-util/intltool
+"
+RDEPEND="${CDEPEND}
+       media-video/mjpegtools
+       media-sound/rawrec
+       dvdr? ( media-video/dvdauthor
+               app-cdr/dvd+rw-tools )
+       gpac? ( media-video/gpac )
+       lame? ( media-sound/lame )
+       sox? ( media-sound/sox )
+       vorbis? ( media-sound/vorbis-tools )
+"
+
+src_prepare() {
+       default
+
+       # Deactivating automagic alsa configuration, bug #134725
+       if ! use alsa ; then
+               sed -i -e "s:HAVE_ALSA 1:HAVE_ALSA 0:" configure || die
+       fi
+
+       # Fix bug #169590
+       # 
https://sourceforge.net/tracker/?func=detail&aid=3304495&group_id=14103&atid=314103
+       sed -i \
+               -e '/\$(LIBQUICKTIME_LIBS) \\/d' \
+               -e '/^[[:space:]]*\$(SRC_LIBS)/ a\
+       \$(LIBQUICKTIME_LIBS) \\' \
+               src/Makefile.in || die
+
+       # Fix test failure discovered in bug #193947
+       # 
https://sourceforge.net/tracker/?func=detail&aid=3304499&group_id=14103&atid=314103
+       sed -i -e '$a\
+\
+ffmpeg/libavcodec/ps2/idct_mmi.c\
+ffmpeg/libavcodec/sparc/dsputil_vis.c\
+ffmpeg/libavcodec/sparc/vis.h\
+ffmpeg/libavutil/bswap.h\
+ffmpeg/libswscale/yuv2rgb_template.c\
+src/export.h\
+src/message.cc\
+src/page_bttv.cc' po/POTFILES.in || die
+
+       sed -i -e 's:^#include <quicktime.h>:#include <lqt/quicktime.h>:' 
src/filehandler.h || die
+       eapply "${FILESDIR}/${P}-v4l1.patch"
+       eapply "${FILESDIR}/${P}-libav-0.7.patch"
+       eapply "${FILESDIR}/${P}-libav-0.8.patch"
+       eapply "${FILESDIR}/${P}-libavcodec-pkg-config.patch"
+       eapply "${FILESDIR}/${P}-ffmpeg3.patch"
+
+       mv configure.in configure.ac || die
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               --disable-local-ffmpeg \
+               $(use_enable quicktime) \
+               $(use_with sparc dv1394) \
+               --with-udev-rules-dir="$(get_udevdir)"/rules.d \
+               CPPFLAGS="-I${ROOT}usr/include/libavcodec 
-I${ROOT}usr/include/libavformat -I${ROOT}usr/include/libswscale"
+}
+
+src_install() {
+       default
+       mv "${ED}/$(get_udevdir)"/rules.d/{,99-}kino.rules
+       fowners root:root -R /usr/share/kino/help #177378
+       prune_libtool_files --all #385361
+}

Reply via email to