|
@@ -54,22 +54,7 @@ extern "C" {
|
|
|
}
|
|
|
|
|
|
//compatibility for libav 9.18 in ubuntu 14.04, 52.66.100 is ffmpeg 2.2.3
|
|
|
-#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(52, 66, 100)
|
|
|
-#define VCMI_USE_OLD_AVUTIL
|
|
|
-#endif // LIBSWSCALE_VERSION_INT
|
|
|
-
|
|
|
-#ifdef VCMI_USE_OLD_AVUTIL
|
|
|
-
|
|
|
-#define AVPixelFormat PixelFormat
|
|
|
-#define AV_PIX_FMT_NONE PIX_FMT_NONE
|
|
|
-#define AV_PIX_FMT_YUV420P PIX_FMT_YUV420P
|
|
|
-#define AV_PIX_FMT_BGR565 PIX_FMT_BGR565
|
|
|
-#define AV_PIX_FMT_BGR24 PIX_FMT_BGR24
|
|
|
-#define AV_PIX_FMT_BGR32 PIX_FMT_BGR32
|
|
|
-#define AV_PIX_FMT_RGB565 PIX_FMT_RGB565
|
|
|
-#define AV_PIX_FMT_RGB24 PIX_FMT_RGB24
|
|
|
-#define AV_PIX_FMT_RGB32 PIX_FMT_RGB32
|
|
|
-
|
|
|
+#if (LIBAVUTIL_VERSION_INT < AV_VERSION_INT(52, 66, 100))
|
|
|
inline AVFrame * av_frame_alloc()
|
|
|
{
|
|
|
return avcodec_alloc_frame();
|
|
@@ -80,16 +65,28 @@ inline void av_frame_free(AVFrame ** frame)
|
|
|
av_free(*frame);
|
|
|
*frame = nullptr;
|
|
|
}
|
|
|
-
|
|
|
#endif // VCMI_USE_OLD_AVUTIL
|
|
|
|
|
|
+//fix for travis-ci
|
|
|
+#if (LIBAVUTIL_VERSION_INT < AV_VERSION_INT(52, 0, 0))
|
|
|
+ #define AVPixelFormat PixelFormat
|
|
|
+ #define AV_PIX_FMT_NONE PIX_FMT_NONE
|
|
|
+ #define AV_PIX_FMT_YUV420P PIX_FMT_YUV420P
|
|
|
+ #define AV_PIX_FMT_BGR565 PIX_FMT_BGR565
|
|
|
+ #define AV_PIX_FMT_BGR24 PIX_FMT_BGR24
|
|
|
+ #define AV_PIX_FMT_BGR32 PIX_FMT_BGR32
|
|
|
+ #define AV_PIX_FMT_RGB565 PIX_FMT_RGB565
|
|
|
+ #define AV_PIX_FMT_RGB24 PIX_FMT_RGB24
|
|
|
+ #define AV_PIX_FMT_RGB32 PIX_FMT_RGB32
|
|
|
+#endif
|
|
|
+
|
|
|
class CVideoPlayer : public IMainVideoPlayer
|
|
|
{
|
|
|
int stream; // stream index in video
|
|
|
AVFormatContext *format;
|
|
|
AVCodecContext *codecContext; // codec context for stream
|
|
|
AVCodec *codec;
|
|
|
- AVFrame *frame;
|
|
|
+ AVFrame *frame;
|
|
|
struct SwsContext *sws;
|
|
|
|
|
|
AVIOContext * context;
|
|
@@ -120,7 +117,7 @@ public:
|
|
|
void show(int x, int y, SDL_Surface *dst, bool update = true) override; //blit current frame
|
|
|
void redraw(int x, int y, SDL_Surface *dst, bool update = true) override; //reblits buffer
|
|
|
void update(int x, int y, SDL_Surface *dst, bool forceRedraw, bool update = true) override; //moves to next frame if appropriate, and blits it or blits only if redraw parameter is set true
|
|
|
-
|
|
|
+
|
|
|
// Opens video, calls playVideo, closes video; returns playVideo result (if whole video has been played)
|
|
|
bool openAndPlayVideo(std::string name, int x, int y, SDL_Surface *dst, bool stopOnKey = false, bool scale = false) override;
|
|
|
|