2011-10-11 08:44:27 -05:00
|
|
|
|
2012-07-19 15:03:55 -05:00
|
|
|
#include <fstream>
|
2011-10-11 08:44:27 -05:00
|
|
|
#include <iostream>
|
|
|
|
|
#include <map>
|
|
|
|
|
#include <queue>
|
2012-10-14 03:43:52 -05:00
|
|
|
#include <tr1/memory>
|
2011-10-11 08:44:27 -05:00
|
|
|
#include "../include/OpenShot.h"
|
2012-11-16 15:38:58 -06:00
|
|
|
#include <omp.h>
|
2011-10-11 08:44:27 -05:00
|
|
|
|
|
|
|
|
using namespace openshot;
|
2012-10-14 03:43:52 -05:00
|
|
|
using namespace tr1;
|
2011-10-11 08:44:27 -05:00
|
|
|
|
|
|
|
|
void FrameReady(int number)
|
|
|
|
|
{
|
|
|
|
|
cout << "Frame #: " << number << " is ready!" << endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
2012-11-07 17:45:13 -06:00
|
|
|
// // Create a reader
|
|
|
|
|
// DummyReader r1(Framerate(24,1), 720, 480, 22000, 2, 5.0);
|
|
|
|
|
//
|
|
|
|
|
// // Map frames
|
|
|
|
|
// FrameMapper mapping(&r1, Framerate(60, 1), PULLDOWN_CLASSIC);
|
|
|
|
|
// mapping.PrintMapping();
|
|
|
|
|
//
|
|
|
|
|
// return 0;
|
2012-10-30 18:53:26 -05:00
|
|
|
|
|
|
|
|
|
2012-11-16 17:15:44 -06:00
|
|
|
// //omp_set_num_threads(1);
|
|
|
|
|
// //omp_set_nested(true);
|
|
|
|
|
// //#pragma omp parallel
|
|
|
|
|
// //{
|
|
|
|
|
// //#pragma omp single
|
|
|
|
|
// //{
|
|
|
|
|
// cout << "Start reading JPEGS" << endl;
|
|
|
|
|
// for (int x = 0; x <= 500; x++)
|
|
|
|
|
// {
|
|
|
|
|
// //#pragma omp task firstprivate(x)
|
|
|
|
|
// //{
|
|
|
|
|
// cout << x << endl;
|
|
|
|
|
// ImageReader r("/home/jonathan/Desktop/TEMP/1.jpg");
|
|
|
|
|
// tr1::shared_ptr<Frame> f(r.GetFrame(1));
|
|
|
|
|
// //f->Save("/home/jonathan/Desktop/TEMP/1.jpg", 1.0);
|
|
|
|
|
// r.Close();
|
|
|
|
|
// //} // end omp task
|
|
|
|
|
//
|
|
|
|
|
// } // end for loop
|
|
|
|
|
//
|
|
|
|
|
// //} // end omp single
|
|
|
|
|
// //} // end omp parallel
|
|
|
|
|
// cout << "Done reading JPEGS" << endl;
|
|
|
|
|
// return 0;
|
2012-11-16 15:38:58 -06:00
|
|
|
|
2012-10-30 18:53:26 -05:00
|
|
|
|
2012-10-29 01:47:39 -05:00
|
|
|
// Create timeline
|
2012-11-20 16:22:50 -06:00
|
|
|
Timeline t(624, 348, Framerate(24,1), 44100, 2);
|
2012-11-29 17:28:22 -06:00
|
|
|
t.color.blue.AddPoint(1, 0);
|
|
|
|
|
t.color.blue.AddPoint(300, 65000);
|
2012-10-29 01:47:39 -05:00
|
|
|
|
|
|
|
|
// Add some clips
|
2012-11-20 10:15:39 -06:00
|
|
|
//Clip c1(new FFmpegReader("/home/jonathan/Apps/videcho_site/media/user_files/videos/bd0bf442-3221-11e2-8bf6-001fd00ee3aa.webm"));
|
2012-12-03 04:51:17 -06:00
|
|
|
//Clip c1(new FFmpegReader("/home/jonathan/Videos/Movie Music/02 - Shattered [Turn The Car Around] (Album Version).mp3"));
|
2012-12-03 13:03:04 -06:00
|
|
|
FFmpegReader r1("../../src/examples/piano.wav");
|
|
|
|
|
Clip c1(new FFmpegReader("/home/jonathan/Videos/sintel_trailer-720p.mp4"));
|
|
|
|
|
Clip c2(new ImageReader("/home/jonathan/Desktop/logo.png"));
|
|
|
|
|
Clip c3(new FFmpegReader("/home/jonathan/Videos/sintel_trailer-720p.mp4"));
|
2012-12-03 04:51:17 -06:00
|
|
|
//Clip c3(new FFmpegReader("/home/jonathan/Videos/Movie Music/01 Whip It.mp3"));
|
2012-11-12 01:25:35 -06:00
|
|
|
c1.Position(0.0);
|
|
|
|
|
c1.gravity = GRAVITY_CENTER;
|
2012-11-13 00:11:20 -06:00
|
|
|
c1.scale = SCALE_FIT;
|
2012-11-12 01:25:35 -06:00
|
|
|
c1.End(20);
|
2012-11-29 16:32:48 -06:00
|
|
|
c1.Layer(2);
|
|
|
|
|
c1.volume.AddPoint(1, 0.0);
|
|
|
|
|
c1.volume.AddPoint(100, 0.5);
|
|
|
|
|
c1.volume.AddPoint(200, 0.0);
|
|
|
|
|
c1.volume.AddPoint(300, 0.5);
|
2012-11-29 23:11:50 -06:00
|
|
|
|
2012-11-29 16:32:48 -06:00
|
|
|
c1.Waveform(true);
|
2012-11-29 23:11:50 -06:00
|
|
|
// c1.wave_color.blue.AddPoint(1, 0);
|
|
|
|
|
// c1.wave_color.red.AddPoint(1, 65280);
|
|
|
|
|
// c1.wave_color.red.AddPoint(300, 0);
|
|
|
|
|
// c1.wave_color.green.AddPoint(1, 0);
|
|
|
|
|
// c1.wave_color.green.AddPoint(300, 65280);
|
|
|
|
|
|
2012-11-29 16:32:48 -06:00
|
|
|
//c1.scale_x.AddPoint(1, 0.5, LINEAR);
|
|
|
|
|
//c1.scale_y.AddPoint(1, 0.5, LINEAR);
|
2012-11-12 01:25:35 -06:00
|
|
|
|
|
|
|
|
c2.Position(0.0);
|
2012-11-29 16:32:48 -06:00
|
|
|
c2.Layer(1);
|
2012-11-13 22:07:49 -06:00
|
|
|
c2.gravity = GRAVITY_BOTTOM_RIGHT;
|
2012-11-12 01:25:35 -06:00
|
|
|
c2.scale = SCALE_NONE;
|
2012-11-13 22:07:49 -06:00
|
|
|
c2.alpha.AddPoint(1, 1);
|
|
|
|
|
c2.alpha.AddPoint(120, 0);
|
|
|
|
|
c2.location_x.AddPoint(1, -0.01);
|
|
|
|
|
c2.location_x.AddPoint(300, -1);
|
|
|
|
|
c2.location_y.AddPoint(1, -0.02);
|
2012-11-12 01:25:35 -06:00
|
|
|
c2.End(20);
|
2012-11-08 04:35:21 -06:00
|
|
|
|
2012-11-29 16:32:48 -06:00
|
|
|
c3.Layer(0);
|
2012-11-13 00:11:20 -06:00
|
|
|
c3.End(20);
|
2012-11-13 22:07:49 -06:00
|
|
|
c3.gravity = GRAVITY_CENTER;
|
2012-11-29 16:32:48 -06:00
|
|
|
c3.volume.AddPoint(1, 0.5);
|
2012-11-17 01:57:57 -06:00
|
|
|
//c3.scale_x.AddPoint(1, 0.1);
|
|
|
|
|
//c3.scale_x.AddPoint(300, 2.0);
|
2012-11-13 22:07:49 -06:00
|
|
|
//c3.scale_y.AddPoint(1, 0.1);
|
|
|
|
|
//c3.scale_y.AddPoint(300, 2.0);
|
2012-11-08 04:35:21 -06:00
|
|
|
|
2012-11-12 01:25:35 -06:00
|
|
|
//c2.scale_x.AddPoint(1, 1);
|
|
|
|
|
//c2.scale_x.AddPoint(300, 3.5);
|
2012-11-08 04:35:21 -06:00
|
|
|
|
2012-11-12 01:25:35 -06:00
|
|
|
//c2.scale_y.AddPoint(1, 1);
|
|
|
|
|
//c2.scale_y.AddPoint(300, 3.5);
|
|
|
|
|
|
|
|
|
|
//c1.scale_x.AddPoint(1, 1);
|
|
|
|
|
//c1.scale_x.AddPoint(300, 1.5);
|
|
|
|
|
|
|
|
|
|
//c1.scale_y.AddPoint(1, 1);
|
|
|
|
|
//c1.scale_y.AddPoint(300, 1.5);
|
|
|
|
|
|
|
|
|
|
//c1.alpha.AddPoint(1, 1);
|
|
|
|
|
//c1.alpha.AddPoint(30, 0);
|
|
|
|
|
|
2012-11-13 22:07:49 -06:00
|
|
|
//c2.alpha.AddPoint(1, 0);
|
|
|
|
|
//c2.alpha.AddPoint(100, 1);
|
|
|
|
|
//c2.alpha.AddPoint(200, 0);
|
|
|
|
|
//c2.alpha.AddPoint(300, 1);
|
2012-11-08 04:35:21 -06:00
|
|
|
|
2012-11-13 22:07:49 -06:00
|
|
|
//c2.location_x.AddPoint(1, 0);
|
|
|
|
|
//c2.location_x.AddPoint(300, 1.0);
|
2012-11-08 04:35:21 -06:00
|
|
|
|
2012-11-12 01:25:35 -06:00
|
|
|
//c2.location_y.AddPoint(1, 0);
|
|
|
|
|
//c2.location_y.AddPoint(300, 1);
|
2012-11-08 04:35:21 -06:00
|
|
|
|
2012-11-12 01:25:35 -06:00
|
|
|
//c2.rotation.AddPoint(1, 0);
|
|
|
|
|
//c2.rotation.AddPoint(300, 360);
|
2012-11-08 04:35:21 -06:00
|
|
|
|
2012-10-29 01:47:39 -05:00
|
|
|
|
|
|
|
|
// LINEAR Reverse
|
|
|
|
|
//c1.time.AddPoint(1, 500, LINEAR);
|
|
|
|
|
//c1.time.AddPoint(500, 1, LINEAR);
|
|
|
|
|
|
|
|
|
|
// LINEAR Slow Reverse (sounds wavy, due to periodic repeated frames)
|
|
|
|
|
//c1.time.AddPoint(1, 500, LINEAR);
|
|
|
|
|
//c1.time.AddPoint(500, 100, LINEAR);
|
|
|
|
|
|
|
|
|
|
// LINEAR Slow Reverse X2 (smooth)
|
|
|
|
|
//c1.time.AddPoint(1, 500, LINEAR);
|
|
|
|
|
//c1.time.AddPoint(500, 250, LINEAR);
|
|
|
|
|
|
|
|
|
|
// LINEAR Slow Reverse X4 (smooth)
|
2012-11-07 17:45:13 -06:00
|
|
|
//c1.time.AddPoint(1, 500, LINEAR);
|
|
|
|
|
//c1.time.AddPoint(750, 250, LINEAR);
|
2012-10-29 01:47:39 -05:00
|
|
|
|
|
|
|
|
// LINEAR Fast Reverse (sounds wavy, due to periodic repeated frames)
|
|
|
|
|
//c1.time.AddPoint(1, 600, LINEAR);
|
|
|
|
|
//c1.time.AddPoint(500, 1, LINEAR);
|
|
|
|
|
|
|
|
|
|
// LINEAR Slow Forward
|
|
|
|
|
//c1.time.AddPoint(1, 1000, LINEAR);
|
|
|
|
|
//c1.time.AddPoint(500, 1, LINEAR);
|
|
|
|
|
|
|
|
|
|
// // BEZIER Reverse
|
|
|
|
|
// openshot::Point p1(1,500);
|
|
|
|
|
// p1.handle_left = Coordinate(1,500);
|
|
|
|
|
// p1.handle_right = Coordinate(250,500);
|
2012-10-21 05:29:29 -05:00
|
|
|
//
|
2012-10-29 01:47:39 -05:00
|
|
|
// openshot::Point p2(500,100);
|
|
|
|
|
// p1.handle_left = Coordinate(500,350);
|
|
|
|
|
// p1.handle_right = Coordinate(500,100);
|
2012-10-17 09:57:02 -05:00
|
|
|
//
|
2012-10-29 01:47:39 -05:00
|
|
|
// c1.time.AddPoint(p1);
|
|
|
|
|
// c1.time.AddPoint(p2);
|
|
|
|
|
|
2012-10-21 05:29:29 -05:00
|
|
|
// c1.time.AddPoint(1, 500, LINEAR);
|
2012-10-29 01:47:39 -05:00
|
|
|
// c1.time.AddPoint(500, 1, LINEAR);
|
|
|
|
|
// c1.time.AddPoint(1, 500, LINEAR);
|
|
|
|
|
// c1.time.AddPoint(200, 200);
|
|
|
|
|
// c1.time.AddPoint(500, 500, LINEAR);
|
2012-11-07 17:45:13 -06:00
|
|
|
// c1.time.PrintValues();
|
2012-10-29 01:47:39 -05:00
|
|
|
|
|
|
|
|
// Add clips
|
2012-11-17 03:13:00 -06:00
|
|
|
t.AddClip(&c1);
|
2012-11-29 17:28:22 -06:00
|
|
|
//t.AddClip(&c2);
|
|
|
|
|
//t.AddClip(&c3);
|
2012-10-29 01:47:39 -05:00
|
|
|
|
2012-12-03 04:51:17 -06:00
|
|
|
r1.Open();
|
2012-10-29 01:47:39 -05:00
|
|
|
|
|
|
|
|
// Create a writer
|
|
|
|
|
FFmpegWriter w("/home/jonathan/output.webm");
|
2012-12-03 04:51:17 -06:00
|
|
|
r1.DisplayInfo();
|
2012-10-29 01:47:39 -05:00
|
|
|
|
|
|
|
|
// Set options
|
|
|
|
|
//w.SetAudioOptions(true, "libmp3lame", 44100, 2, 128000, false);
|
2012-12-03 13:03:04 -06:00
|
|
|
w.SetAudioOptions(true, "libvorbis", 48000, 2, 128000);
|
2012-12-03 04:51:17 -06:00
|
|
|
w.SetVideoOptions(true, "libvpx", Fraction(24,1), 624, 348, Fraction(1,1), false, false, 2000000);
|
2012-10-29 01:47:39 -05:00
|
|
|
|
|
|
|
|
// Prepare Streams
|
|
|
|
|
w.PrepareStreams();
|
|
|
|
|
|
|
|
|
|
// Write header
|
|
|
|
|
w.WriteHeader();
|
|
|
|
|
|
|
|
|
|
// Output stream info
|
|
|
|
|
w.OutputStreamInfo();
|
|
|
|
|
|
2012-12-03 13:03:04 -06:00
|
|
|
for (int frame = 1; frame <= 100; frame++)
|
2012-10-29 01:47:39 -05:00
|
|
|
{
|
2012-12-03 04:51:17 -06:00
|
|
|
tr1::shared_ptr<Frame> f = r1.GetFrame(frame);
|
2012-10-29 01:47:39 -05:00
|
|
|
if (f)
|
|
|
|
|
{
|
2012-12-03 04:51:17 -06:00
|
|
|
//if (frame >= 13)
|
2012-12-03 13:03:04 -06:00
|
|
|
//f->DisplayWaveform();
|
2012-11-20 10:15:39 -06:00
|
|
|
|
2012-10-29 01:47:39 -05:00
|
|
|
// Write frame
|
|
|
|
|
cout << "queue frame " << frame << " (" << f->number << ", " << f << ")" << endl;
|
|
|
|
|
w.WriteFrame(f);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Write Footer
|
|
|
|
|
w.WriteTrailer();
|
|
|
|
|
|
|
|
|
|
// Close writer & reader
|
|
|
|
|
w.Close();
|
|
|
|
|
|
|
|
|
|
// Close timeline
|
|
|
|
|
t.Close();
|
|
|
|
|
|
|
|
|
|
cout << "Successfully Finished Timeline DEMO" << endl;
|
|
|
|
|
return 0;
|
2012-10-05 17:05:33 -05:00
|
|
|
|
|
|
|
|
|
2012-10-05 01:58:27 -05:00
|
|
|
|
2012-10-10 02:49:34 -05:00
|
|
|
|
|
|
|
|
// Create timeline
|
|
|
|
|
// Framerate fps(30000,1000);
|
|
|
|
|
// Timeline t(640, 480, fps);
|
|
|
|
|
//
|
|
|
|
|
// // Add some clips
|
|
|
|
|
// Clip c1("../../src/examples/test.mp4");
|
|
|
|
|
// c1.Layer(2);
|
|
|
|
|
// c1.Position(0.0);
|
|
|
|
|
// c1.rotation.AddPoint(60, 360);
|
|
|
|
|
//
|
|
|
|
|
// // Add clips
|
|
|
|
|
// t.AddClip(&c1);
|
|
|
|
|
//
|
|
|
|
|
// // Request frames
|
|
|
|
|
// for (int x=1; x<=100; x++)
|
|
|
|
|
// t.GetFrame(x);
|
|
|
|
|
//
|
|
|
|
|
// // Close timeline
|
|
|
|
|
// t.Close();
|
|
|
|
|
//
|
|
|
|
|
// cout << "Successfully Finished Timeline DEMO" << endl;
|
|
|
|
|
// return 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-08-31 15:19:17 -05:00
|
|
|
//openshot::ImageReader i("/home/jonathan/Apps/videcho_site/media/logos/watermark3.png");
|
|
|
|
|
//openshot::Frame* overlay = i.GetFrame(1);
|
|
|
|
|
//i.DisplayInfo();
|
2012-08-15 17:27:14 -05:00
|
|
|
|
2012-07-19 15:03:55 -05:00
|
|
|
// openshot::FFmpegReader r("../../src/examples/test.mp4");
|
|
|
|
|
// openshot::FFmpegReader r("../../src/examples/test1.mp4");
|
2012-10-14 21:09:22 -05:00
|
|
|
// openshot::FFmpegReader r("../../src/examples/piano.wav");
|
2012-08-12 02:14:15 -05:00
|
|
|
// openshot::FFmpegReader r("/home/jonathan/Videos/big-buck-bunny_trailer.webm");
|
|
|
|
|
|
2012-11-08 04:35:21 -06:00
|
|
|
openshot::FFmpegReader r("/home/jonathan/Videos/sintel-1024-stereo.mp4");
|
2012-08-21 21:51:00 -05:00
|
|
|
// openshot::FFmpegReader r("/home/jonathan/Videos/OpenShot_Now_In_3d.mp4");
|
2012-10-12 00:54:53 -05:00
|
|
|
// openshot::FFmpegReader r("/home/jonathan/Videos/sintel_trailer-720p.mp4");
|
2011-12-11 20:42:50 -06:00
|
|
|
// openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/piano.wav");
|
2012-08-22 17:31:12 -05:00
|
|
|
// openshot::FFmpegReader r("/home/jonathan/Music/Army of Lovers/Crucified/Army of Lovers - Crucified [Single Version].mp3");
|
2012-02-26 16:45:50 -06:00
|
|
|
// openshot::FFmpegReader r("/home/jonathan/Documents/OpenShot Art/test.jpeg");
|
2011-10-27 11:27:44 -05:00
|
|
|
// openshot::FFmpegReader r("/home/jonathan/Videos/60fps.mp4");
|
2011-10-11 08:44:27 -05:00
|
|
|
// openshot::FFmpegReader r("/home/jonathan/Aptana Studio Workspace/OpenShotLibrary/src/examples/asdf.wdf");
|
|
|
|
|
|
2012-10-17 09:57:02 -05:00
|
|
|
|
2012-10-27 21:36:08 -05:00
|
|
|
|
|
|
|
|
// Display debug info
|
|
|
|
|
r.Open();
|
|
|
|
|
r.DisplayInfo();
|
|
|
|
|
|
|
|
|
|
// for (int frame = 1; frame <= 300; frame++)
|
2012-10-21 05:29:29 -05:00
|
|
|
// {
|
|
|
|
|
// tr1::shared_ptr<Frame> f = r.GetFrame(frame);
|
|
|
|
|
// }
|
2012-10-27 21:36:08 -05:00
|
|
|
// return 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-29 01:47:39 -05:00
|
|
|
// // Create a writer
|
|
|
|
|
// FFmpegWriter w("/home/jonathan/output.webm");
|
|
|
|
|
// w.DisplayInfo();
|
|
|
|
|
//
|
|
|
|
|
// // Set options
|
|
|
|
|
// w.SetAudioOptions(true, "libvorbis", 44100, 2, 128000, false);
|
|
|
|
|
// //w.SetAudioOptions(true, "libmp3lame", 44100, 2, 128000, false);
|
|
|
|
|
//
|
|
|
|
|
// w.SetVideoOptions(true, "libvpx", Fraction(24,1), 320, 240, Fraction(1,1), false, false, 2000000);
|
|
|
|
|
// //w.SetVideoOptions(true, "libx264", Fraction(24,1), 320, 240, Fraction(1,1), false, false, 2000000);
|
|
|
|
|
// //w.SetVideoOptions(true, "libtheora", Fraction(24,1), 320, 240, Fraction(1,1), false, false, 2000000);
|
|
|
|
|
//
|
|
|
|
|
// // Prepare Streams
|
|
|
|
|
// w.PrepareStreams();
|
|
|
|
|
//
|
|
|
|
|
// // Set Options
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "quality", "good");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "g", "120");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "qmin", "11");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "qmax", "51");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "profile", "0");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "speed", "0");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "level", "216");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "rc_lookahead", "16");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "rc_min_rate", "100000");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "rc_max_rate", "24000000");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "slices", "4");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "arnr_max_frames", "7");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "arnr_strength", "5");
|
|
|
|
|
//// w.SetOption(VIDEO_STREAM, "arnr_type", "3");
|
|
|
|
|
//
|
|
|
|
|
// // Write header
|
|
|
|
|
// w.WriteHeader();
|
|
|
|
|
//
|
|
|
|
|
// // Output stream info
|
|
|
|
|
// w.OutputStreamInfo();
|
|
|
|
|
//
|
|
|
|
|
// //Frame *f = r.GetFrame(1);
|
|
|
|
|
//
|
|
|
|
|
// //for (int frame = 131; frame >= 1; frame--)
|
|
|
|
|
// for (int frame = 1; frame <= 300; frame++)
|
|
|
|
|
// {
|
|
|
|
|
// tr1::shared_ptr<Frame> f = r.GetFrame(frame);
|
|
|
|
|
// //f->AddOverlayNumber(0);
|
|
|
|
|
// //f->Display();
|
|
|
|
|
//
|
|
|
|
|
// // Write frame
|
|
|
|
|
// cout << "queue frame " << frame << endl;
|
|
|
|
|
// w.WriteFrame(f);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // Write Footer
|
|
|
|
|
// w.WriteTrailer();
|
|
|
|
|
//
|
|
|
|
|
// // Close writer & reader
|
|
|
|
|
// w.Close();
|
|
|
|
|
// r.Close();
|
2011-10-11 08:44:27 -05:00
|
|
|
|
|
|
|
|
|
2012-07-19 15:03:55 -05:00
|
|
|
cout << "Successfully executed Main.cpp!" << endl;
|
2011-10-11 08:44:27 -05:00
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|