Ejemplo n.º 1
0
        /// <summary>
        /// Called when metadata request returns (or simulated in SongInfoRetrieve
        /// to skip metadata request)
        /// </summary>
        private void REST_ResultMetaDataMuziekweb(object sender, bool success, ResultSongs resultSongs, object userState = null)
        {
            try
            {
                ResultFingerprintRecognition resultRecognitions = userState as ResultFingerprintRecognition;

                Console.WriteLine("Detected: " + resultRecognitions.FingerTracks[0].FingerTrackReference.ToString() + " Q=" + (resultRecognitions.TimeStatistics.TotalQueryTime.TotalMilliseconds / 1000).ToString("#0.000"));
                if (resultSongs != null && resultSongs.Songs.Count > 0)
                {
                    Console.WriteLine("MetaData: " + SongInfo(resultSongs.Songs[0]));
                }
                Console.Write("  P=" + resultRecognitions.FingerTracks[0].SearchStrategy.SearchName + " (I=" + resultRecognitions.FingerTracks[0].SearchStrategy.SearchIteration.ToString() + ")");
                Console.Write(" | BER=" + resultRecognitions.FingerTracks[0].BER.ToString());
                Console.Write(" | Index=" + resultRecognitions.FingerTracks[0].SearchStrategy.IndexNumberInMatchList.ToString() + " | HitCount=" + resultRecognitions.FingerTracks[0].SearchStrategy.SubFingerCountHitInFingerprint.ToString());
                Console.WriteLine();
            }
            finally
            {
                // Release detecttask so new one can be initiated
                lock (lockObject)
                {
                    detectTask = null;
                }
            }
        }
Ejemplo n.º 2
0
 private void SongInfoRetrieve(ResultFingerprintRecognition resultRecognitions)
 {
     if (RetrieveMetadataFromMuziekweb(resultRecognitions.FingerTracks[0].FingerTrackReference))
     {
         detectTask.RetrieveMetaDataMuziekweb(resultRecognitions.FingerTracks[0].FingerTrackReference, resultRecognitions, REST_ResultMetaDataMuziekweb);
     }
     else
     {
         // No metadata just show what we got
         REST_ResultMetaDataMuziekweb(this, false, null, resultRecognitions);
     }
 }
Ejemplo n.º 3
0
        private void REST_ResultFingerDetect(object sender, bool success, ResultFingerprintRecognition resultRecognitions, object userState = null)
        {
            if (success && resultRecognitions != null && resultRecognitions.FingerTracks.Count > 0)
            {
                SongInfoRetrieve(resultRecognitions);
                // Leave detectTask intact, because we need to do a second call to get the metadata
                return;
            }

            try
            {
                if (resultRecognitions != null)
                {
                    string line = string.Empty;
                    switch (resultRecognitions.RecognizeCode)
                    {
                    case RecognizeCode.EXCEPTION:
                        line = "Error: " + resultRecognitions.RecognizeResult;
                        break;

                    case RecognizeCode.TIMEOUT:
                        line      = "Timeout. Waiting 30 seconds before submitting detect query again.";
                        waitUntil = DateTime.Now.AddSeconds(30);
                        break;

                    case RecognizeCode.SERVERNOTFOUND:
                        line      = "Server not found. Waiting 30 seconds before submitting detect query again.";
                        waitUntil = DateTime.Now.AddSeconds(30);
                        break;

                    case RecognizeCode.OK:
                        if (resultRecognitions.FingerTracks.Count == 0)
                        {
                            line = "Unknown song. Q=" + (resultRecognitions.TimeStatistics.TotalQueryTime.TotalMilliseconds / 1000).ToString("#0.000");
                        }
                        break;

                    default:
                        line = "Unknown error (" + resultRecognitions.RecognizeResult + ").";
                        break;
                    } //switch
                    if (line.Length > 0)
                    {
                        Console.WriteLine(line);
                    }

#if TIMEQUERYINFO
                    Console.Write("  QTotal=" + (resultRecognitions.TimeStatistics.TotalQueryTime.TotalMilliseconds / 1000).ToString("#0.000"));
                    Console.Write(" QSubF=" + (resultRecognitions.TimeStatistics.SubFingerQueryTime.TotalMilliseconds / 1000).ToString("#0.000"));
                    Console.Write(" QFinger=" + (resultRecognitions.TimeStatistics.FingerLoadTime.TotalMilliseconds / 1000).ToString("#0.000"));
                    Console.Write(" QMatch=" + (resultRecognitions.TimeStatistics.MatchTime.TotalMilliseconds / 1000).ToString("#0.000"));
                    Console.WriteLine();
#endif
                    Console.WriteLine();
                }

                CleanUpDict(false);
            }
            finally
            {
                // Release detetctask so new one can be initiated
                lock (lockObject)
                {
                    detectTask = null;
                }
            }
        }