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.
197 lines
9.4 KiB
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)) {
|
|
|