X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_libavcodec%2Ftrgt_av.cpp;h=5ad733aba2220061eee63975a0e280c3115e2217;hb=74582e201a1a01b4e71e50f7de88f6936bb3edee;hp=8a3e373dbe68f3e49df8de42a4b5da5408776f0f;hpb=d061d675f5eecd50db043141ae5d2ad3edde83b7;p=synfig.git diff --git a/synfig-core/trunk/src/modules/mod_libavcodec/trgt_av.cpp b/synfig-core/trunk/src/modules/mod_libavcodec/trgt_av.cpp index 8a3e373..5ad733a 100644 --- a/synfig-core/trunk/src/modules/mod_libavcodec/trgt_av.cpp +++ b/synfig-core/trunk/src/modules/mod_libavcodec/trgt_av.cpp @@ -6,6 +6,8 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2008 Paul Wise +** Copyright (c) 2008 Gerco Ballintijn ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -35,7 +37,30 @@ extern "C" { -#include + +/* + ffmpeg library headers have historically had multiple locations. + We should check all of the locations to be more portable. +*/ + +#ifdef HAVE_LIBAVFORMAT_AVFORMAT_H +# include +#elif defined(HAVE_AVFORMAT_H) +# include +#elif defined(HAVE_FFMPEG_AVFORMAT_H) +# include +#endif + +#ifdef WITH_LIBSWSCALE +#ifdef HAVE_LIBSWSCALE_SWSCALE_H +# include +#elif defined(HAVE_SWSCALE_H) +# include +#elif defined(HAVE_FFMPEG_SWSCALE_H) +# include +#endif +#endif + } #include @@ -389,9 +414,23 @@ public: if ( pict && context->pix_fmt != PIX_FMT_RGB24 ) { //We're using RGBA at the moment, write custom conversion code later (get less accuracy errors) +#ifdef WITH_LIBSWSCALE + struct SwsContext* img_convert_ctx = + sws_getContext(context->width, context->height, PIX_FMT_RGB24, + context->width, context->height, context->pix_fmt, + SWS_BICUBIC, NULL, NULL, NULL); + + sws_scale(img_convert_ctx, pict->data, pict->linesize, + + 0, context->height, encodable->data, + encodable->linesize); + + sws_freeContext (img_convert_ctx); +#else img_convert((AVPicture *)encodable, context->pix_fmt, (AVPicture *)pict, PIX_FMT_RGB24, context->width, context->height); +#endif pict = encodable; } @@ -674,7 +713,11 @@ public: if(!(format->flags & AVFMT_NOFILE)) { /* close the output file */ +#if LIBAVFORMAT_VERSION_INT >= (52<<16) + url_fclose(formatc->pb); +#else url_fclose(&formatc->pb); +#endif } /* free the stream */