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=1e7470adf35a4807b20069dfb3785455bf4635ac;hpb=70bcefce2ab011a11014f36fc129b473cc0bc61e;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 1e7470a..12fa556 100644 --- a/synfig-core/trunk/src/modules/mod_ffmpeg/mptr_ffmpeg.cpp +++ b/synfig-core/trunk/src/modules/mod_ffmpeg/mptr_ffmpeg.cpp @@ -2,6 +2,8 @@ /*! \file mptr_ffmpeg.cpp ** \brief ppm Target Module ** +** $Id$ +** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley ** @@ -32,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 @@ -44,13 +60,19 @@ 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); SYNFIG_IMPORTER_SET_NAME(ffmpeg_mptr,"ffmpeg"); SYNFIG_IMPORTER_SET_EXT(ffmpeg_mptr,"avi"); SYNFIG_IMPORTER_SET_VERSION(ffmpeg_mptr,"0.1"); -SYNFIG_IMPORTER_SET_CVS_ID(ffmpeg_mptr,"$Id: mptr_ffmpeg.cpp,v 1.1.1.1 2005/01/04 01:23:10 darco Exp $"); +SYNFIG_IMPORTER_SET_CVS_ID(ffmpeg_mptr,"$Id$"); /* === M E T H O D S ======================================================= */ @@ -61,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"<