]> git.sesse.net Git - ffmpeg/commitdiff
avformat/chromaprint: Fix writing raw fingerprint
authorAndriy Gelman <andriy.gelman@gmail.com>
Sun, 6 Oct 2019 05:49:49 +0000 (01:49 -0400)
committerGyan Doshi <ffmpeg@gyani.pro>
Wed, 16 Oct 2019 05:04:51 +0000 (10:34 +0530)
The pointer fp after the call to chromaprint_get_raw_fingerpoint() points to an array
of uint32_t whereas the current code assumed just a char stream. Thus when writing the
raw fingerprint, the output would be truncated by a factor of 4.

For reference the declaration of the function from chromaprint.h is:
int chromaprint_get_raw_fingerprint(ChromaprintContext *ctx, uint32_t **fingerprint, int *size);

libavformat/chromaprint.c

index a4c0b97d99c410a964a1efb4516b0b14bbea7e1d..faa92ca0dbfc56c13341f408b1a49397e9d6bc4d 100644 (file)
@@ -136,7 +136,7 @@ static int write_trailer(AVFormatContext *s)
 
     switch (cpr->fp_format) {
     case FINGERPRINT_RAW:
-        avio_write(pb, fp, size);
+        avio_write(pb, fp, size * 4); //fp points to array of uint32_t
         break;
     case FINGERPRINT_COMPRESSED:
     case FINGERPRINT_BASE64: