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/ffdiaporama/files/ffdiaporama-2.1-ffmpeg-3.0....

197 lines
9.4 KiB

--- src/ffDiaporama/engine/cBaseMediaFile.cpp 2014-02-09 10:48:04.000000000 +0100
+++ src/ffDiaporama/engine/cBaseMediaFile.cpp 2016-02-21 19:00:43.129114600 +0100
@@ -113,10 +113,23 @@
#define VC_USERDATA 0x00000008
#define VC_FLUSHED 0x00000010
-#define PIXFMT PIX_FMT_RGB24
+#if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ #define PIXELFORMAT AVPixelFormat
+ #define PIXFMT AV_PIX_FMT_RGB24
+#else
+ #define PIXELFORMAT PixelFormat
+ #define PIXFMT PIX_FMT_RGB24
+#endif
#define QTPIXFMT QImage::Format_RGB888
-AVFrame *ALLOCFRAME() { return avcodec_alloc_frame(); }
+AVFrame *ALLOCFRAME() { return
+ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ av_frame_alloc();
+ #else
+ avcodec_alloc_frame();
+ #endif
+}
+
void FREEFRAME(AVFrame **Buf){ avcodec_free_frame(Buf); *Buf=NULL; }
//****************************************************************************************************************************************************************
@@ -2402,7 +2415,7 @@
AVFrame *FrameRGB=ALLOCFRAME();
if ((FrameRGB)&&(!Thumbnail.isNull())) {
avpicture_fill((AVPicture *)FrameRGB,Thumbnail.bits(),PIXFMT,RealW,RealH);
- struct SwsContext *img_convert_ctx=sws_getContext(FrameYUV->width,FrameYUV->height,(PixelFormat)FrameYUV->format,RealW,RealH,PIXFMT,SWS_FAST_BILINEAR,NULL,NULL,NULL);
+ struct SwsContext *img_convert_ctx=sws_getContext(FrameYUV->width,FrameYUV->height,(PIXELFORMAT)FrameYUV->format,RealW,RealH,PIXFMT,SWS_FAST_BILINEAR,NULL,NULL,NULL);
if (img_convert_ctx!=NULL) {
int ret = sws_scale(img_convert_ctx,FrameYUV->data,FrameYUV->linesize,0,FrameYUV->height,FrameRGB->data,FrameRGB->linesize);
if (ret>0) {
@@ -3482,7 +3495,7 @@
struct SwsContext *img_convert_ctx=sws_getContext(
Frame->width, // Src width
Frame->height, // Src height
- (PixelFormat)Frame->format, // Src Format
+ (PIXELFORMAT)Frame->format, // Src Format
W, // Destination width
H, // Destination height
PIXFMT, // Destination Format
--- src/ffDiaporama/engine/cDeviceModelDef.h 2016-02-21 19:53:00.487286000 +0100
+++ src/ffDiaporama/engine/cDeviceModelDef.h 2016-02-21 19:52:47.623287800 +0100
@@ -53,7 +53,9 @@
#include <libavutil/mathematics.h>
#include <libavutil/pixdesc.h>
-#include <libavutil/audioconvert.h>
+#if (LIBAVUTIL_VERSION_INT<AV_VERSION_INT(54,31,100))
+ #include <libavutil/audioconvert.h>
+#endif
#include <libavcodec/avcodec.h>
@@ -90,10 +92,10 @@
#define RESAMPLE_MAX_CHANNELS 32
#endif
- #include "libavfilter/avcodec.h"
- #include "libavfilter/buffersink.h"
- #include "libavfilter/buffersrc.h"
- #if ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,48,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,39,100))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,19,104))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(55,5,100))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(3,90,100))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,5,101))&&(LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(0,17,104)))
+ #if ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(55,17,103))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(57,24,102))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(57,25,100))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(57,0,101))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(6,31,100))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(4,0,100))&&(LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(2,0,101)))
+ #define FFMPEGVERSIONINT 300
+ #define FFMPEGVERSION "FFmpeg 3.0 or higher"
+ #elif ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,48,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,39,100))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,19,104))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(55,5,100))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(3,90,100))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,5,101))&&(LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(0,17,104)))
#define FFMPEGVERSIONINT 210
#define FFMPEGVERSION "FFmpeg 2.1 or higher"
#elif ((LIBAVUTIL_VERSION_INT>=AV_VERSION_INT(52,38,100))&&(LIBAVCODEC_VERSION_INT>=AV_VERSION_INT(55,18,102))&&(LIBAVFORMAT_VERSION_INT>=AV_VERSION_INT(55,12,100))&&(LIBAVDEVICE_VERSION_INT>=AV_VERSION_INT(55,3,100))&&(LIBAVFILTER_VERSION_INT>=AV_VERSION_INT(3,79,101))&&(LIBSWSCALE_VERSION_INT>=AV_VERSION_INT(2,3,100))&&(LIBSWRESAMPLE_VERSION_INT>=AV_VERSION_INT(0,17,102)))
@@ -108,6 +110,13 @@
#else
// unsupported version
#endif
+ #if (FFMPEGVERSIONINT<300)
+ #include "libavfilter/avcodec.h"
+ #else
+ #include "libavcodec/avcodec.h"
+ #endif
+ #include "libavfilter/buffersink.h"
+ #include "libavfilter/buffersrc.h"
#endif
}
--- src/ffDiaporama/engine/_EncodeVideo.cpp 2016-02-22 08:19:13.935794200 +0100
+++ src/ffDiaporama/engine/_EncodeVideo.cpp 2016-02-22 08:33:52.928215900 +0100
@@ -20,7 +20,11 @@
#include "_EncodeVideo.h"
-#define PIXFMT PIX_FMT_RGB24
+#if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ #define PIXFMT AV_PIX_FMT_RGB24
+#else
+ #define PIXFMT PIX_FMT_RGB24
+#endif
#define QTPIXFMT QImage::Format_RGB888
//*************************************************************************************************************************************************
@@ -410,8 +414,13 @@
// Setup codec parameters
VideoStream->codec->width =ImageWidth;
VideoStream->codec->height =ImageHeight;
+ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ VideoStream->codec->pix_fmt =AV_PIX_FMT_YUV420P;
+ #else
VideoStream->codec->pix_fmt =PIX_FMT_YUV420P;
+ #endif
VideoStream->codec->time_base =VideoFrameRate;
+ VideoStream->time_base =VideoFrameRate;
VideoStream->codec->sample_aspect_ratio =PixelAspectRatio;
VideoStream->sample_aspect_ratio =PixelAspectRatio;
if ((codec->id!=AV_CODEC_ID_H264)||(!VBR)) {
@@ -434,7 +443,11 @@
} else if (codec->id==AV_CODEC_ID_MJPEG) {
//-qscale 2 -qmin 2 -qmax 2
+ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ VideoStream->codec->pix_fmt =AV_PIX_FMT_YUVJ420P;
+ #else
VideoStream->codec->pix_fmt =PIX_FMT_YUVJ420P;
+ #endif
VideoStream->codec->qmin =2;
VideoStream->codec->qmax =2;
VideoStream->codec->bit_rate_tolerance =(ImageWidth*ImageHeight*2*VideoFrameRate.den/VideoFrameRate.num)*2;
@@ -564,7 +577,11 @@
#endif
// Create and prepare VideoFrame and VideoFrameBuf
- VideoFrame=avcodec_alloc_frame(); // Allocate structure for RGB image
+ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ VideoFrame=av_frame_alloc();
+ #else
+ VideoFrame=avcodec_alloc_frame();
+ #endif
if (!VideoFrame) {
ToLog(LOGMSG_CRITICAL,"EncodeVideo-OpenVideoStream: avcodec_alloc_frame() failed");
return false;
@@ -654,7 +671,11 @@
return false;
}
+ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ AudioFrame=av_frame_alloc();
+ #else
AudioFrame=avcodec_alloc_frame();
+ #endif
if (AudioFrame==NULL) {
ToLog(LOGMSG_CRITICAL,QString("EncodeVideo-OpenAudioStream:: avcodec_alloc_frame failed"));
return false;
@@ -1095,7 +1116,11 @@
if (Continue) {
// Init AudioFrame
AVRational AVR;
+ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ av_frame_unref(AudioFrame);
+ #else
avcodec_get_frame_defaults(AudioFrame);
+ #endif
AVR.num =1;
AVR.den =AudioStream->codec->sample_rate;
AudioFrame->nb_samples =DestPacketSize/DestSampleSize;
@@ -1180,7 +1205,11 @@
int errcode;
if (Image) {
- avcodec_get_frame_defaults(VideoFrame);
+ #if (defined(FFMPEG)&&(FFMPEGVERSIONINT>=300))
+ av_frame_unref(AudioFrame);
+ #else
+ avcodec_get_frame_defaults(AudioFrame);
+ #endif
if (avpicture_fill(
(AVPicture *)VideoFrame, // Frame to prepare
VideoFrameBuf, // Buffer which will contain the image data
@@ -1225,9 +1254,14 @@
}
}
- if ((VideoFrameNbr%VideoStream->codec->gop_size)==0) VideoFrame->pict_type=AV_PICTURE_TYPE_I;
- else VideoFrame->pict_type=(AVPictureType)0;
+ if ((VideoFrameNbr%VideoStream->codec->gop_size)==0)
+ VideoFrame->pict_type=AV_PICTURE_TYPE_I;
+ else
+ VideoFrame->pict_type=(AVPictureType)0;
VideoFrame->pts=VideoFrameNbr;
+ VideoFrame->format=VideoStream->codec->pix_fmt;
+ VideoFrame->width=VideoStream->codec->width;
+ VideoFrame->height=VideoStream->codec->height;
if ((Continue)&&(!StopProcessWanted)) {