You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/media-video/kino/files/kino-1.3.4-ffmpeg3.patch

158 lines
6.6 KiB

--- ./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 )