28 #include "../include/ChunkWriter.h"
33 local_reader(reader), path(path), chunk_size(24*3), chunk_count(1), frame_count(1), is_writing(false),
34 default_extension(
".webm"), default_vcodec(
"libvpx"), default_acodec(
"libvorbis"), last_frame_needed(false), is_open(false)
47 write_json_meta_data();
54 string ChunkWriter::get_chunk_path(int64_t chunk_number,
string folder,
string extension)
57 stringstream chunk_count_string;
58 chunk_count_string << chunk_number;
59 QString padded_count =
"%1";
60 padded_count = padded_count.arg(chunk_count_string.str().c_str(), 6,
'0');
61 if (folder.length() != 0 && extension.length() != 0)
63 return QDir::cleanPath(QString(path.c_str()) + QDir::separator() + folder.c_str() + QDir::separator() + padded_count + extension.c_str()).toStdString();
65 else if (folder.length() == 0 && extension.length() != 0)
67 return QDir::cleanPath(QString(path.c_str()) + QDir::separator() + padded_count + extension.c_str()).toStdString();
69 else if (folder.length() != 0 && extension.length() == 0)
71 return QDir::cleanPath(QString(path.c_str()) + QDir::separator() + folder.c_str()).toStdString();
81 throw WriterClosed(
"The ChunkWriter is closed. Call Open() before calling this method.", path);
87 frame->Save(get_chunk_path(chunk_count,
"",
".jpeg"), 1.0);
90 create_folder(get_chunk_path(chunk_count,
"final",
""));
91 writer_final =
new FFmpegWriter(get_chunk_path(chunk_count,
"final", default_extension));
96 create_folder(get_chunk_path(chunk_count,
"preview",
""));
97 writer_preview =
new FFmpegWriter(get_chunk_path(chunk_count,
"preview", default_extension));
102 create_folder(get_chunk_path(chunk_count,
"thumb",
""));
103 writer_thumb =
new FFmpegWriter(get_chunk_path(chunk_count,
"thumb", default_extension));
119 last_frame_needed =
true;
124 if (last_frame_needed)
142 last_frame_needed =
false;
155 if (frame_count % chunk_size == 0 && frame_count >= chunk_size)
157 cout <<
"Done with chunk" << endl;
158 cout <<
"frame_count: " << frame_count << endl;
159 cout <<
"chunk_size: " << chunk_size << endl;
162 for (
int z = 0; z<12; z++)
176 writer_final->
Close();
177 writer_preview->
Close();
178 writer_thumb->
Close();
199 for (int64_t number = start; number <= length; number++)
202 std::shared_ptr<Frame> f = reader->
GetFrame(number);
213 for (int64_t number = start; number <= length; number++)
216 std::shared_ptr<Frame> f = local_reader->
GetFrame(number);
229 cout <<
"Final chunk" << endl;
230 cout <<
"frame_count: " << frame_count << endl;
231 cout <<
"chunk_size: " << chunk_size << endl;
234 for (
int z = 0; z<12; z++)
248 writer_final->
Close();
249 writer_preview->
Close();
250 writer_thumb->
Close();
267 local_reader->
Close();
271 void ChunkWriter::write_json_meta_data()
274 string json_path = QDir::cleanPath(QString(path.c_str()) + QDir::separator() +
"info.json").toStdString();
278 myfile.open (json_path.c_str());
279 myfile << local_reader->
Json() << endl;
284 void ChunkWriter::create_folder(
string path)
286 QDir dir(path.c_str());
293 bool ChunkWriter::is_chunk_valid()