if (format) {
f << "format " << format->as_metadata () << "\n";
}
- f << "left_crop " << left_crop << "\n";
- f << "right_crop " << right_crop << "\n";
- f << "top_crop " << top_crop << "\n";
- f << "bottom_crop " << bottom_crop << "\n";
+ f << "left_crop " << crop.left << "\n";
+ f << "right_crop " << crop.right << "\n";
+ f << "top_crop " << crop.top << "\n";
+ f << "bottom_crop " << crop.bottom << "\n";
for (vector<Filter const *>::const_iterator i = filters.begin(); i != filters.end(); ++i) {
f << "filter " << (*i)->id () << "\n";
}
} else if (k == "format") {
format = Format::from_metadata (v);
} else if (k == "left_crop") {
- left_crop = atoi (v.c_str ());
+ crop.left = atoi (v.c_str ());
} else if (k == "right_crop") {
- right_crop = atoi (v.c_str ());
+ crop.right = atoi (v.c_str ());
} else if (k == "top_crop") {
- top_crop = atoi (v.c_str ());
+ crop.top = atoi (v.c_str ());
} else if (k == "bottom_crop") {
- bottom_crop = atoi (v.c_str ());
+ crop.bottom = atoi (v.c_str ());
} else if (k == "filter") {
filters.push_back (Filter::from_id (v));
} else if (k == "scaler") {
} else if (k == "content_digest") {
content_digest = v;
}
-
- /* Itsy bitsy hack: compute digest here if don't have one (for backwards compatibility) */
- if (content_digest.empty() && !content.empty()) {
- content_digest = md5_digest (content_path ());
- }
}
Size
FilmState::cropped_size (Size s) const
{
- s.width -= left_crop + right_crop;
- s.height -= top_crop + bottom_crop;
+ s.width -= crop.left + crop.right;
+ s.height -= crop.top + crop.bottom;
return s;
}
FilmState::content_type () const
{
#if BOOST_FILESYSTEM_VERSION == 3
- string const ext = filesystem::path(content).extension().string();
+ string ext = filesystem::path(content).extension().string();
#else
- string const ext = filesystem::path(content).extension();
+ string ext = filesystem::path(content).extension();
#endif
+
+ transform (ext.begin(), ext.end(), ext.begin(), ::tolower);
+
if (ext == ".tif" || ext == ".tiff" || ext == ".jpg" || ext == ".jpeg" || ext == ".png") {
return STILL;
}
return VIDEO;
}
+
+/** @return Number of bytes per sample of a single channel */
+int
+FilmState::bytes_per_sample () const
+{
+ switch (audio_sample_format) {
+ case AV_SAMPLE_FMT_S16:
+ return 2;
+ default:
+ return 0;
+ }
+
+ return 0;
+}