Fix bugs in previous commit that caused FTBFS in synfig and ETL FTBFS with older...
[synfig.git] / synfig-core / tags / stable / src / modules / mod_yuv420p / trgt_yuv.cpp
index 3f65801..bad2dca 100644 (file)
@@ -6,6 +6,7 @@
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -64,7 +65,7 @@ SYNFIG_TARGET_SET_CVS_ID(yuv,"$Id$");
 
 yuv::yuv(const char *FILENAME):
        filename(FILENAME),
-       file( (filename=="-")?stdout:fopen(filename.c_str(),"wb") ),
+       file( (filename=="-")?stdout:fopen(filename.c_str(),POPEN_BINARY_WRITE_TYPE) ),
        dithering(true)
 {
        // YUV420P doesn't have an alpha channel
@@ -76,6 +77,18 @@ yuv::~yuv()
 }
 
 bool
+yuv::init()
+{
+       if (!file)
+               return false;
+
+       fprintf(file.get(), "YUV4MPEG2 W%d H%d F%d:1 Ip\n",
+                       desc.get_w(), desc.get_h(),
+                       round_to_int(desc.get_frame_rate()));
+       return true;
+}
+
+bool
 yuv::set_rend_desc(RendDesc *given_desc)
 {
        given_desc->clear_flags();
@@ -95,6 +108,7 @@ yuv::set_rend_desc(RendDesc *given_desc)
 bool
 yuv::start_frame(synfig::ProgressCallback */*callback*/)
 {
+       fprintf(file.get(), "FRAME\n");
        return static_cast<bool>(file);
 }