Le 23.09.20 à 23:26, Camille Moulin a écrit :
Hi Tom,
On 22/09/2020 07:43, amin...@mailbox.org wrote:


Hi,

Apologies if this is answered in the docs - a quick search didn't uncover the 
answers.
Generally speaking, the documentation of the file format could be
improved :-(


I'm wondering about the "kdenlive:file_hash" property in the file XML:

   - Which hashing algorithm is used?

 From what I understand, it's seems to be md5, but, for performance
reasons,  it's calculated only on the first and last Mo of the file if
the file is bigger than 2Mo

In ./src/bin/projectclip.cpp, starting line 820:

         QFile file(clipUrl());
         if (file.open(QIODevice::ReadOnly)) { // write size and hash
only if resource points to a file
             /*
              * 1 MB = 1 second per 450 files (or faster)
              * 10 MB = 9 seconds per 450 files (or faster)
              */
             if (file.size() > 2000000) {
                 fileData = file.read(1000000);
                 if (file.seek(file.size() - 1000000)) {
                     fileData.append(file.readAll());
                 }
             } else {
                 fileData = file.readAll();
             }
             file.close();
ClipController::setProducerProperty(QStringLiteral("kdenlive:file_size"),
QString::number(file.size()));
             fileHash = QCryptographicHash::hash(fileData,
QCryptographicHash::Md5);
         }

That's correct.


   - When are the hashes checked? E.g. if I save a kdenlive file, quit, then 
reopen it, will the hashes of the files on disk be checked?
Yes, I think so

That's a very good question. In fact the hash not really checked during normal usage. It is updated when Kdenlive is running and detects that the file was changed or when the user triggers reloading a clip, but does not seem to be checked on project opening. Thinking of it, I think that if the user changes a clip when Kdenlive is not running, opening the project will contain an incorrect hash, leading to possible bugs.


It would be much safer to check it on each project opening... I will investigate and come back to you.


Regards,

Jean-Baptiste

  Are there other points at which it's checked? Can the user manually start a 
check?
I guess that if you reload the clip, it will check it and update it if
modified.

HTH,

Camille

Reply via email to