[FFmpeg-cvslog] avformat/chromaprint: Fix writing raw fingerprint

Andriy Gelman git at videolan.org
Wed Oct 16 08:08:19 EEST 2019


ffmpeg | branch: master | Andriy Gelman <andriy.gelman at gmail.com> | Sun Oct  6 01:49:49 2019 -0400| [e14f5fd0a6983838b5fe3c6ad1c2ec2f2d8e49df] | committer: Gyan Doshi

avformat/chromaprint: Fix writing raw fingerprint

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);

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e14f5fd0a6983838b5fe3c6ad1c2ec2f2d8e49df
---

 libavformat/chromaprint.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/chromaprint.c b/libavformat/chromaprint.c
index a4c0b97d99..faa92ca0db 100644
--- a/libavformat/chromaprint.c
+++ b/libavformat/chromaprint.c
@@ -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:



More information about the ffmpeg-cvslog mailing list