Lock inverted index cache

This commit is contained in:
ConfusedPolarBear 2022-09-01 23:24:00 -05:00
parent 98684fadab
commit 6dc3a5fa41

View File

@ -14,6 +14,8 @@ namespace ConfusedPolarBear.Plugin.IntroSkipper;
/// </summary> /// </summary>
public static class FFmpegWrapper public static class FFmpegWrapper
{ {
private static readonly object InvertedIndexCacheLock = new();
// FFmpeg logs lines similar to the following: // FFmpeg logs lines similar to the following:
// [silencedetect @ 0x000000000000] silence_start: 12.34 // [silencedetect @ 0x000000000000] silence_start: 12.34
// [silencedetect @ 0x000000000000] silence_end: 56.123 | silence_duration: 43.783 // [silencedetect @ 0x000000000000] silence_end: 56.123 | silence_duration: 43.783
@ -183,9 +185,12 @@ public static class FFmpegWrapper
/// <returns>Inverted index.</returns> /// <returns>Inverted index.</returns>
public static Dictionary<uint, int> CreateInvertedIndex(Guid id, uint[] fingerprint) public static Dictionary<uint, int> CreateInvertedIndex(Guid id, uint[] fingerprint)
{ {
if (InvertedIndexCache.TryGetValue(id, out var cached)) lock (InvertedIndexCacheLock)
{ {
return cached; if (InvertedIndexCache.TryGetValue(id, out var cached))
{
return cached;
}
} }
var invIndex = new Dictionary<uint, int>(); var invIndex = new Dictionary<uint, int>();
@ -199,7 +204,10 @@ public static class FFmpegWrapper
invIndex[point] = i; invIndex[point] = i;
} }
InvertedIndexCache[id] = invIndex; lock (InvertedIndexCacheLock)
{
InvertedIndexCache[id] = invIndex;
}
return invIndex; return invIndex;
} }