[vlc-commits] [Git][videolan/vlc][master] 2 commits: fingerprinter: move `chroma_fingerprint` from stack to the module structure
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sat May 30 17:37:56 UTC 2026
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
206bd508 by Fatih Uzunoglu at 2026-05-30T17:26:53+00:00
fingerprinter: move `chroma_fingerprint` from stack to the module structure
This is done because chromaprint may access the variable after `DoFingerprint()`
returns (observed when fingerprinting is aborted).
- - - - -
310220af by Fatih Uzunoglu at 2026-05-30T17:26:53+00:00
fingerprinter: set `fingerprint-data` in `Open()` instead of `DoFingerprint()`
- - - - -
1 changed file:
- modules/misc/fingerprinter.c
Changes:
=====================================
modules/misc/fingerprinter.c
=====================================
@@ -46,6 +46,7 @@ struct fingerprinter_sys_t
vlc_thread_t thread;
vlc_player_t *player;
vlc_player_listener_id *listener_id;
+ chromaprint_fingerprint_t chroma_fingerprint;
atomic_bool abort;
@@ -184,13 +185,8 @@ static void DoFingerprint( fingerprinter_thread_t *p_fingerprinter,
}
input_item_SetURI( p_item, psz_uri ) ;
- chromaprint_fingerprint_t chroma_fingerprint;
-
- chroma_fingerprint.psz_fingerprint = NULL;
- chroma_fingerprint.i_duration = fp->i_duration;
-
- var_Create( p_fingerprinter, "fingerprint-data", VLC_VAR_ADDRESS );
- var_SetAddress( p_fingerprinter, "fingerprint-data", &chroma_fingerprint );
+ p_fingerprinter->p_sys->chroma_fingerprint.psz_fingerprint = NULL;
+ p_fingerprinter->p_sys->chroma_fingerprint.i_duration = fp->i_duration;
vlc_player_t *player = p_fingerprinter->p_sys->player;
vlc_player_Lock(player);
@@ -208,9 +204,13 @@ static void DoFingerprint( fingerprinter_thread_t *p_fingerprinter,
vlc_player_CondWait(player,
&p_fingerprinter->p_sys->processing.cond);
- fp->psz_fingerprint = chroma_fingerprint.psz_fingerprint;
- if( !fp->i_duration ) /* had not given hint */
- fp->i_duration = chroma_fingerprint.i_duration;
+ if( !p_fingerprinter->p_sys->abort )
+ {
+ fp->psz_fingerprint = p_fingerprinter->p_sys->chroma_fingerprint.psz_fingerprint;
+ p_fingerprinter->p_sys->chroma_fingerprint.psz_fingerprint = NULL;
+ if( !fp->i_duration ) /* had not given hint */
+ fp->i_duration = p_fingerprinter->p_sys->chroma_fingerprint.i_duration;
+ }
}
vlc_player_Unlock(player);
@@ -277,6 +277,9 @@ static int Open(vlc_object_t *p_this)
goto error;
}
+ var_Create( p_fingerprinter, "fingerprint-data", VLC_VAR_ADDRESS );
+ var_SetAddress( p_fingerprinter, "fingerprint-data", &p_fingerprinter->p_sys->chroma_fingerprint );
+
return VLC_SUCCESS;
error:
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/2406b5f1b49dde462b7f3ac720a7a40e9e52cd5d...310220aff81e35fe0c4b056f0c020fcc0ea2e039
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/2406b5f1b49dde462b7f3ac720a7a40e9e52cd5d...310220aff81e35fe0c4b056f0c020fcc0ea2e039
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help
More information about the vlc-commits
mailing list