| @@ -443,6 +443,19 @@ fi | |||||
| AM_CONDITIONAL(USE_IMLIB2, test "${ac_cv_my_have_imlib2}" = "yes") | AM_CONDITIONAL(USE_IMLIB2, test "${ac_cv_my_have_imlib2}" = "yes") | ||||
| # Use libavcodec? (required for movie encoding) | |||||
| ac_cv_my_have_ffmpeg=yes | |||||
| PKG_CHECK_MODULES([LIBAVCODEC], [libavcodec], [:], [ac_cv_my_have_ffmpeg=no]) | |||||
| PKG_CHECK_MODULES([LIBAVFORMAT], [libavformat], [:], [ac_cv_my_have_ffmpeg=no]) | |||||
| PKG_CHECK_MODULES([LIBSWSCALE], [libswscale], [:], [ac_cv_my_have_ffmpeg=no]) | |||||
| if test "${ac_cv_my_have_ffmpeg}" != "no"; then | |||||
| AC_DEFINE(USE_FFMPEG, 1, Define to 1 to use FFmpeg) | |||||
| LOL_CFLAGS="${LOL_CFLAGS} ${LIBAVFORMAT_CFLAGS} ${LIBAVCODEC_CFLAGS} ${CFLAGSWSCALE_LIBS}" | |||||
| LOL_LIBS="${LOL_LIBS} ${LIBAVFORMAT_LIBS} ${LIBAVCODEC_LIBS} ${LIBSWSCALE_LIBS}" | |||||
| fi | |||||
| AM_CONDITIONAL(USE_FFMPEG, test "${ac_cv_my_have_ffmpeg}" != "no") | |||||
| dnl Use GTK+? (required for the deushax editor) | dnl Use GTK+? (required for the deushax editor) | ||||
| ac_cv_my_have_gtkgl="no" | ac_cv_my_have_gtkgl="no" | ||||
| PKG_CHECK_MODULES(GTK, gtk+-2.0, [ac_cv_my_have_gtkgl="yes"], [:]) | PKG_CHECK_MODULES(GTK, gtk+-2.0, [ac_cv_my_have_gtkgl="yes"], [:]) | ||||
| @@ -37,8 +37,8 @@ liblolcore_headers = \ | |||||
| \ | \ | ||||
| lol/base/all.h \ | lol/base/all.h \ | ||||
| lol/base/avl_tree.h lol/base/features.h lol/base/tuple.h lol/base/types.h \ | lol/base/avl_tree.h lol/base/features.h lol/base/tuple.h lol/base/types.h \ | ||||
| lol/base/array.h lol/base/assert.h lol/base/string.h lol/base/hash.h lol/base/map.h \ | |||||
| lol/base/enum.h lol/base/log.h \ | |||||
| lol/base/array.h lol/base/assert.h lol/base/string.h lol/base/hash.h \ | |||||
| lol/base/map.h lol/base/enum.h lol/base/log.h \ | |||||
| \ | \ | ||||
| lol/math/all.h \ | lol/math/all.h \ | ||||
| lol/math/functions.h lol/math/vector.h lol/math/half.h lol/math/real.h \ | lol/math/functions.h lol/math/vector.h lol/math/half.h lol/math/real.h \ | ||||
| @@ -53,7 +53,7 @@ liblolcore_headers = \ | |||||
| lol/sys/init.h lol/sys/file.h lol/sys/thread.h lol/sys/timer.h \ | lol/sys/init.h lol/sys/file.h lol/sys/thread.h lol/sys/timer.h \ | ||||
| \ | \ | ||||
| lol/image/all.h \ | lol/image/all.h \ | ||||
| lol/image/pixel.h lol/image/color.h lol/image/image.h \ | |||||
| lol/image/pixel.h lol/image/color.h lol/image/image.h lol/image/movie.h \ | |||||
| \ | \ | ||||
| lol/gpu/all.h \ | lol/gpu/all.h \ | ||||
| lol/gpu/shader.h lol/gpu/indexbuffer.h lol/gpu/vertexbuffer.h \ | lol/gpu/shader.h lol/gpu/indexbuffer.h lol/gpu/vertexbuffer.h \ | ||||
| @@ -122,6 +122,7 @@ liblolcore_sources = \ | |||||
| image/dither/ostromoukhov.cpp image/dither/ordered.cpp \ | image/dither/ostromoukhov.cpp image/dither/ordered.cpp \ | ||||
| image/filter/convolution.cpp image/filter/color.cpp \ | image/filter/convolution.cpp image/filter/color.cpp \ | ||||
| image/filter/dilate.cpp image/filter/median.cpp image/filter/yuv.cpp \ | image/filter/dilate.cpp image/filter/median.cpp image/filter/yuv.cpp \ | ||||
| image/movie.cpp \ | |||||
| \ | \ | ||||
| loldebug.h \ | loldebug.h \ | ||||
| debug/fps.cpp debug/fps.h debug/lines.cpp \ | debug/fps.cpp debug/fps.h debug/lines.cpp \ | ||||
| @@ -0,0 +1,69 @@ | |||||
| // | |||||
| // Lol Engine | |||||
| // | |||||
| // Copyright: (c) 2010-2014 Sam Hocevar <sam@hocevar.net> | |||||
| // This program is free software; you can redistribute it and/or | |||||
| // modify it under the terms of the Do What The Fuck You Want To | |||||
| // Public License, Version 2, as published by Sam Hocevar. See | |||||
| // http://www.wtfpl.net/ for more details. | |||||
| // | |||||
| #include <lol/engine-internal.h> | |||||
| #if USE_FFMPEG | |||||
| extern "C" | |||||
| { | |||||
| # include <libavformat/avformat.h> | |||||
| } | |||||
| #endif | |||||
| namespace lol | |||||
| { | |||||
| #if USE_FFMPEG | |||||
| static bool g_ready = false; | |||||
| #endif | |||||
| class MovieData | |||||
| { | |||||
| #if USE_FFMPEG | |||||
| #endif | |||||
| friend class Movie; | |||||
| }; | |||||
| /* | |||||
| * Public Movie class | |||||
| */ | |||||
| Movie::Movie(String const &name, ivec2 size, float fps) | |||||
| : m_data(new MovieData()) | |||||
| { | |||||
| #if USE_FFMPEG | |||||
| if (!g_ready) | |||||
| { | |||||
| g_ready = true; | |||||
| av_register_all(); | |||||
| } | |||||
| #endif | |||||
| } | |||||
| Movie::~Movie() | |||||
| { | |||||
| #if USE_FFMPEG | |||||
| #endif | |||||
| delete m_data; | |||||
| } | |||||
| void Movie::Feed(Image const &image) | |||||
| { | |||||
| #if USE_FFMPEG | |||||
| #endif | |||||
| } | |||||
| } /* namespace lol */ | |||||
| @@ -13,4 +13,5 @@ | |||||
| #include <lol/image/pixel.h> | #include <lol/image/pixel.h> | ||||
| #include <lol/image/color.h> | #include <lol/image/color.h> | ||||
| #include <lol/image/image.h> | #include <lol/image/image.h> | ||||
| #include <lol/image/movie.h> | |||||
| @@ -0,0 +1,42 @@ | |||||
| // | |||||
| // Lol Engine | |||||
| // | |||||
| // Copyright: (c) 2010-2014 Sam Hocevar <sam@hocevar.net> | |||||
| // This program is free software; you can redistribute it and/or | |||||
| // modify it under the terms of the Do What The Fuck You Want To | |||||
| // Public License, Version 2, as published by Sam Hocevar. See | |||||
| // http://www.wtfpl.net/ for more details. | |||||
| // | |||||
| #pragma once | |||||
| // | |||||
| // The Movie class | |||||
| // --------------- | |||||
| // | |||||
| #include <lol/image/movie.h> | |||||
| namespace lol | |||||
| { | |||||
| class Movie | |||||
| { | |||||
| public: | |||||
| Movie(String const &name, ivec2 size, float fps); | |||||
| /* TODO: Rule of three */ | |||||
| #if 0 | |||||
| Movie(Movie const &other); | |||||
| Movie & operator =(Movie other); | |||||
| #endif | |||||
| ~Movie(); | |||||
| void Feed(Image const &image); | |||||
| private: | |||||
| class MovieData *m_data; | |||||
| }; | |||||
| } /* namespace lol */ | |||||
| @@ -164,6 +164,7 @@ | |||||
| <ClCompile Include="image\combine.cpp" /> | <ClCompile Include="image\combine.cpp" /> | ||||
| <ClCompile Include="image\image.cpp" /> | <ClCompile Include="image\image.cpp" /> | ||||
| <ClCompile Include="image\kernel.cpp" /> | <ClCompile Include="image\kernel.cpp" /> | ||||
| <ClCompile Include="image\movie.cpp" /> | |||||
| <ClCompile Include="image\noise.cpp" /> | <ClCompile Include="image\noise.cpp" /> | ||||
| <ClCompile Include="image\pixel.cpp" /> | <ClCompile Include="image\pixel.cpp" /> | ||||
| <ClCompile Include="image\resample.cpp" /> | <ClCompile Include="image\resample.cpp" /> | ||||
| @@ -320,6 +321,7 @@ | |||||
| <ClInclude Include="lol\image\all.h" /> | <ClInclude Include="lol\image\all.h" /> | ||||
| <ClInclude Include="lol\image\color.h" /> | <ClInclude Include="lol\image\color.h" /> | ||||
| <ClInclude Include="lol\image\image.h" /> | <ClInclude Include="lol\image\image.h" /> | ||||
| <ClInclude Include="lol\image\movie.h" /> | |||||
| <ClInclude Include="lol\image\pixel.h" /> | <ClInclude Include="lol\image\pixel.h" /> | ||||
| <ClInclude Include="lol\math\all.h" /> | <ClInclude Include="lol\math\all.h" /> | ||||
| <ClInclude Include="lol\math\array2d.h" /> | <ClInclude Include="lol\math\array2d.h" /> | ||||
| @@ -105,6 +105,9 @@ | |||||
| <ClCompile Include="debug\fps.cpp"> | <ClCompile Include="debug\fps.cpp"> | ||||
| <Filter>debug</Filter> | <Filter>debug</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="image\movie.cpp"> | |||||
| <Filter>image</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="debug\record.cpp"> | <ClCompile Include="debug\record.cpp"> | ||||
| <Filter>debug</Filter> | <Filter>debug</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -735,6 +738,9 @@ | |||||
| <ClInclude Include="lol\image\pixel.h"> | <ClInclude Include="lol\image\pixel.h"> | ||||
| <Filter>lol\image</Filter> | <Filter>lol\image</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="lol\image\movie.h"> | |||||
| <Filter>lol\image</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="input\keys.h"> | <ClInclude Include="input\keys.h"> | ||||
| <Filter>input</Filter> | <Filter>input</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||