2010-01-20 5 views
2

Je travaille sur un système d'enregistrement audio. Ma tâche consiste à extraire le code temporel SMPTE du flux d'entrée audio, généré par un dispositif de synchronisation. J'utilise ASIO SDK pour obtenir le code temporel de chaque tampon de rappel mais c'est toujours zéro. Peut-être que quelqu'un a de l'expérience dans ASIO SDK (ou toute autre plate-forme/SDK qui peut être utilisée pour extraire le timecode SMPTE du flux audio) pourrait m'aider?Extraction du timecode SMPTE à partir du flux audio

Cordialement, Ben

Répondre

1

LTC est simple, donc si rien d'autre, vous pouvez simplement analyser le flux audio pour les données LTC, as documented on wikipedia. Chaque trame de 80 bits se termine par 0011 1111 1111 1101, il suffit de rechercher la séquence d'octets à synchroniser, puis de convertir les données de tampon commençant après cette séquence de synchronisation en un tableau d'éléments de structure timecode_t à 80 bits. Si votre buffer est dimensionné en multiple de 80, vos calculs seront plus faciles (mais vous devez tester la perte de synchronisation, car les cartes son perdent des bits avec des dépassements). La partie difficile est que si je ne me trompe pas, le code temporel "bits" ne sont pas les mêmes que les bits du flux audio échantillonné, donc vous devrez mettre en œuvre une logique pour détecter la séquence de bits. Cela peut être simplement une vérification en boucle pour les changements de signaux appropriés et l'ajout de bits au tampon selon le cas (puis en appelant la fonction pour interpréter le tampon quand il est plein).

+0

Bonjour Justin, merci d'avoir répondu. Mon problème est le suivant: le pilote ASIO me renvoie toujours le code temporel = 0, donc je ne peux pas le décoder comme vous le suggérez. Le pilote ASIO renvoie le flux audio séparément du code temporel. Le champ 'tcSamples' de la structure infos pilote semble être le seul endroit où je pourrais chercher du code temporel, et c'est toujours 0. Donc, je ne sais pas quoi faire ensuite ... – Ben

+0

Les données SMPT LTC sont les flux audio. Vous devez décoder ce flux audio pour obtenir les données. Il y a des bibliothèques auxquelles vous pouvez remettre votre tampon et elles renvoient une structure, ou vous pouvez faire ce que j'ai suggéré et l'implémenter vous-même. Si utiliser une bibliothèque lgpl est OK pour votre projet http://ltcsmpte.sourceforge.net/ peut fonctionner, ou il peut être Linux seulement (mon expérience est à peu près tout Linux). Ou vous pouvez trouver une bibliothèque Windows qui fait la même chose. –

Questions connexes