- list<string> notes;
-
- if (flags & LIBDCP_METADATA) {
- if (_mxf_name != other->_mxf_name) {
- notes.push_back ("MXF names differ");
- }
- if (_fps != other->_fps) {
- notes.push_back ("MXF frames per second differ");
- }
- if (_length != other->_length) {
- notes.push_back ("MXF lengths differ");
- }
- }
-
- if (flags & MXF_BITWISE) {
-
- if (digest() != other->digest()) {
- notes.push_back ("MXF digests differ");
- }
-
- if (filesystem::file_size (mxf_path()) != filesystem::file_size (other->mxf_path())) {
- notes.push_back (mxf_path().string() + " and " + other->mxf_path().string() + " sizes differ");
- return notes;
- }
-
- ifstream a (mxf_path().string().c_str(), ios::binary);
- ifstream b (other->mxf_path().string().c_str(), ios::binary);
-
- int buffer_size = 65536;
- char abuffer[buffer_size];
- char bbuffer[buffer_size];
-
- int n = filesystem::file_size (mxf_path ());
-
- while (n) {
- int const t = min (n, buffer_size);
- a.read (abuffer, t);
- b.read (bbuffer, t);
-
- if (memcmp (abuffer, bbuffer, t) != 0) {
- notes.push_back (mxf_path().string() + " and " + other->mxf_path().string() + " content differs");
- return notes;
- }
-
- n -= t;
- }