X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_ffmpeg%2Fmptr_ffmpeg.cpp;h=12fa556b58af381fb9304626027a5d3d4fdf2597;hb=48bbcdc963c394122d294519d43330e046433129;hp=bc4cc7b0b1db4257380e34fb478c44c8f97c64ea;hpb=9698bd80061a79c7f9e6940d2cfba7d34cd4c120;p=synfig.git diff --git a/synfig-core/trunk/src/modules/mod_ffmpeg/mptr_ffmpeg.cpp b/synfig-core/trunk/src/modules/mod_ffmpeg/mptr_ffmpeg.cpp index bc4cc7b..12fa556 100644 --- a/synfig-core/trunk/src/modules/mod_ffmpeg/mptr_ffmpeg.cpp +++ b/synfig-core/trunk/src/modules/mod_ffmpeg/mptr_ffmpeg.cpp @@ -34,6 +34,20 @@ #include #include "mptr_ffmpeg.h" #include +#include +#if HAVE_SYS_WAIT_H + #include +#endif +#if HAVE_IO_H + #include +#endif +#if HAVE_PROCESS_H + #include +#endif +#if HAVE_FCNTL_H + #include +#endif +#include #include #include #include @@ -46,6 +60,12 @@ using namespace synfig; using namespace std; using namespace etl; +#if defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID) + #define UNIX_PIPE_TO_PROCESSES +#elif defined(HAVE__SPAWNLP) && defined(HAVE__PIPE) && defined(HAVE_CWAIT) + #define WIN32_PIPE_TO_PROCESSES +#endif + /* === G L O B A L S ======================================================= */ SYNFIG_IMPORTER_INIT(ffmpeg_mptr); @@ -63,14 +83,109 @@ ffmpeg_mptr::seek_to(int frame) { if(file) { - pclose(file); + fclose(file); + int status; +#if defined(WIN32_PIPE_TO_PROCESSES) + cwait(&status,pid,0); +#elif defined(UNIX_PIPE_TO_PROCESSES) + waitpid(pid,&status,0); +#endif } - string command; +#if defined(WIN32_PIPE_TO_PROCESSES) + + int p[2]; + int stdin_fileno, stdout_fileno; + + if(_pipe(p, 512, O_BINARY | O_NOINHERIT) < 0) { + cerr<<"Unable to open pipe to ffmpeg"<