-template <class A, class R, class F>
-optional<VerifyPictureAssetResult>
-verify_picture_asset_type (shared_ptr<const ReelFileAsset> reel_file_asset, function<void (float)> progress)
-{
- auto asset = dynamic_pointer_cast<A>(reel_file_asset->asset_ref().asset());
- if (!asset) {
- return optional<VerifyPictureAssetResult>();
- }
+ if (auto mono_asset = dynamic_pointer_cast<MonoPictureAsset>(reel_file_asset->asset_ref().asset())) {
+ auto reader = mono_asset->start_read ();
+ for (int64_t i = 0; i < duration; ++i) {
+ auto frame = reader->get_frame (i);
+ biggest_frame = max(biggest_frame, frame->size());
+ if (!mono_asset->encrypted() || mono_asset->key()) {
+ vector<VerificationNote> j2k_notes;
+ verify_j2k (frame, j2k_notes);
+ check_and_add (j2k_notes);
+ }
+ progress (float(i) / duration);
+ }
+ } else if (auto stereo_asset = dynamic_pointer_cast<StereoPictureAsset>(asset)) {
+ auto reader = stereo_asset->start_read ();
+ for (int64_t i = 0; i < duration; ++i) {
+ auto frame = reader->get_frame (i);
+ biggest_frame = max(biggest_frame, max(frame->left()->size(), frame->right()->size()));
+ if (!stereo_asset->encrypted() || mono_asset->key()) {
+ vector<VerificationNote> j2k_notes;
+ verify_j2k (frame->left(), j2k_notes);
+ verify_j2k (frame->right(), j2k_notes);
+ check_and_add (j2k_notes);
+ }
+ progress (float(i) / duration);
+ }