SDKStructures des producteurs - Amazon Kinesis Video Streams

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

SDKStructures des producteurs

Cette section contient des informations sur les structures que vous pouvez utiliser pour fournir des données à l'objet Kinesis Video Streams Producer.

DeviceInfo/DefaultDeviceInfoProvider

Les DefaultDeviceInfoProviderobjets DeviceInfoet contrôlent le comportement de l'objet Kinesis Video Streams Producer.

Champs réservés aux membres

  • version — Valeur entière utilisée pour s'assurer que la version correcte de la structure est utilisée avec la version actuelle de la base de code. La version actuelle est spécifiée à l'aide de la macro DEVICE_INFO_CURRENT_VERSION.

  • name — Le nom lisible par l'homme du périphérique.

  • tagCount/tags — Non utilisé actuellement.

  • streamCount— Le nombre maximum de flux que l'appareil peut gérer. Il pré-alloue initialement le stockage des pointeurs vers les objets de flux, mais les objets de flux réels sont créés ultérieurement. La valeur par défaut est de 16 flux, mais vous pouvez la modifier dans le fichier DefaultDeviceInfoProvider.cpp.

  • storageInfo: objet qui décrit la configuration de stockage principale. Pour de plus amples informations, veuillez consulter StorageInfo.

StorageInfo

Spécifie la configuration du stockage principal pour Kinesis Video Streams.

L'implémentation par défaut est basée sur une implémentation de tas rapide à fragmentation faible, optimisée pour le streaming. Elle utilise l'allocateur MEMALLOC, qui peut être remplacé sur une plate-forme donnée. Certaines plates-formes ont une allocation de mémoire virtuelle sans renforcement d'allocation par des pages physiques. À mesure que la mémoire est utilisée, les pages virtuelles sont renforcées par les pages physiques. Cela entraîne une sollicitation moindre de la mémoire sur l'ensemble du système lorsque le stockage est sous-utilisé.

Calculez le volume de stockage par défaut selon la formule suivante. Le paramètre DefragmentationFactor doit être défini sur 1.2 (20 pour cent).

Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor

Dans l'exemple suivant, un appareil dispose de flux audio et vidéo. Le flux audio possède 512 échantillons par seconde avec un échantillon moyen de 100 octets. Le flux vidéo possède 25 images par seconde avec une moyenne de 10 000 octets. Chaque flux comporte 3 minutes de durée de mise en tampon.

Size = (512 * 100 * (3 * 60) + 25 * 10000 * (3 * 60)) * 1.2 = (9216000 + 45000000) * 1.2 = 65059200 = ~ 66MB.

Si le périphérique dispose de plus de mémoire disponible, nous vous recommandons d'ajouter de la mémoire au stockage afin d'éviter une fragmentation importante.

Vérifiez que la taille de stockage est suffisante pour accueillir les tampons complets pour tous les flux présentant une complexité de codage élevée (lorsque la taille d'image est plus grande en raison de mouvements élevés) ou lorsque la bande passante est faible. Si le producteur atteint une pression de mémoire, il émet des rappels de pression de dépassement de capacité de stockage (). StorageOverflowPressureFunc Toutefois, lorsqu'aucune mémoire n'est disponible dans le magasin de contenu, l'image envoyée dans Kinesis Video Streams est supprimée avec une erreur STATUS_STORE_OUT_OF_MEMORY = 0x5200002e (). Pour de plus amples informations, veuillez consulter Codes d'erreur et d'état renvoyés par la bibliothèque cliente. Cela peut également se produire si les accusés de réception de l'application (ACKs) ne sont pas disponibles ou si les confirmations persistantes ACKs sont retardées. Dans ce cas, les tampons se remplissent jusqu'à la « durée de la mémoire tampon » avant que les images précédentes ne commencent à disparaître.

Champs réservés aux membres

  • version — Valeur entière utilisée pour s'assurer que la version correcte de la structure est utilisée avec la version actuelle de la base de code.

  • storageType— Une DEVICE_STORAGE_TYPE énumération qui spécifie le support sous-jacent et la mise en œuvre du stockage. Actuellement, la seule valeur prise en charge est DEVICE_STORAGE_TYPE_IN_MEM. DEVICE_STORAGE_TYPE_HYBRID_FILE sera prise en charge dans une prochaine implémentation, ce qui indique que le stockage revient au magasin de contenu basé sur les fichiers.

  • storageSize— La taille de stockage en octets à préallouer. L'allocation minimum est 10 Mo et l'allocation maximum est 10 Go. (Cela évoluera avec la prochaine implémentation du magasin de contenu basé sur les fichiers.)

  • spillRatio— Une valeur entière qui représente le pourcentage de stockage à allouer à partir du type de stockage en mémoire directe (RAM), par opposition au stockage secondaire par débordement (stockage de fichiers). Non utilisé actuellement.

  • rootDirectory: chemin d'accès au répertoire dans lequel se trouve le magasin de contenu sauvegardé par des fichiers. Non utilisé actuellement.