#ifndef __KVS_PRODUCER_FUNCTIONALITY_H__ #define __KVS_PRODUCER_FUNCTIONALITY_H__ #define DEFAULT_STREAM_NAME "DEFAULT_STREAM" #define DEFAULT_RETENTION_PERIOD_HOURS 2 #define DEFAULT_KMS_KEY_ID "" #define DEFAULT_STREAMING_TYPE STREAMING_TYPE_REALTIME #define DEFAULT_MAX_LATENCY_SECONDS MAX_UINT32 #define DEFAULT_FRAGMENT_DURATION_MILLISECONDS 2000 #define DEFAULT_TIMECODE_SCALE_MILLISECONDS 1 #define DEFAULT_KEY_FRAME_FRAGMENTATION TRUE #define DEFAULT_FRAME_TIMECODES TRUE #define DEFAULT_ABSOLUTE_FRAGMENT_TIMES TRUE #define DEFAULT_FRAGMENT_ACKS TRUE #define DEFAULT_RESTART_ON_ERROR TRUE #define DEFAULT_RECALCULATE_METRICS TRUE #define DEFAULT_ADAPT_CPD_NALS FALSE #define DEFAULT_ADAPT_FRAME_NALS FALSE #define DEFAULT_DISABLE_BUFFER_CLIPPING FALSE #define DEFAULT_STREAM_FRAMERATE 25 #define DEFAULT_STREAM_FRAMERATE_HIGH_DENSITY 100 #define DEFAULT_AVG_BANDWIDTH_BPS (4 * 1024 * 1024) #define DEFAULT_BUFFER_DURATION_SECONDS 120 #define DEFAULT_REPLAY_DURATION_SECONDS MAX_UINT32 #define DEFAULT_CONNECTION_STALENESS_SECONDS MAX_UINT32 #define DEFAULT_CODEC_ID_H264 "V_MPEG4/ISO/AVC" #define DEFAULT_CODEC_ID_H265 "V_MPEGH/ISO/HEVC" #define DEFAULT_ACCESS_KEY "access_key" #define DEFAULT_SECRET_KEY "secret_key" #define DEFAULT_REGION "us-west-2" #define DEFAULT_ROTATION_PERIOD_SECONDS 3600 #define DEFAULT_FILE_LOG_PATH "" #define DEFAULT_STORAGE_SIZE_MB 128 #define DEFAULT_CREDENTIAL_FILE_PATH ".kvs/credential" #define DEFAULT_FRAME_DURATION_MS 2 #define DEFAULT_STREAM_CREATE_TIMEOUT_SECONDS 0 #define DEFAULT_STREAM_STOP_TIMEOUT_SECONDS 0 #define DEFAULT_LOG_LEVEL LOG_LEVEL_WARN #define DEFAULT_API_CACHE_PERIOD (24 * HUNDREDS_OF_NANOS_IN_AN_HOUR) #define DEFAULT_ENABLE_STREAMING TRUE #define CA_CERT_PEM_FILE_EXTENSION ".pem" #define FILE_LOGGING_BUFFER_SIZE (100 * 1024) #define MAX_NUMBER_OF_LOG_FILES 5 #define GST_PLUGIN_MAX_CPD_SIZE (10 * 1024) #define KVS_PRODUCER_CLIENT_USER_AGENT_NAME "KVS_GST_PLUGIN_PRODUCER" #define AVCC_VERSION_CODE 0x01 #define AVCC_NALU_LEN_MINUS_ONE 0xFF #define AVCC_NUMBER_OF_SPS_ONE 0xE1 #define HEVC_CPD_HEADER_SIZE 23 typedef enum { ELEMENTARY_STREAM_NAL_FORMAT_UNKNOWN, ELEMENTARY_STREAM_NAL_FORMAT_ANNEX_B, ELEMENTARY_STREAM_NAL_FORMAT_AVCC, ELEMENTARY_STREAM_NAL_FORMAT_HEVC, } ELEMENTARY_STREAM_NAL_FORMAT; #define IS_AVCC_HEVC_CPD_NAL_FORMAT(f) (((f) == ELEMENTARY_STREAM_NAL_FORMAT_AVCC) || ((f) == ELEMENTARY_STREAM_NAL_FORMAT_HEVC)) STATUS traverseDirectoryPemFileScan(UINT64, DIR_ENTRY_TYPES, PCHAR, PCHAR); STATUS lookForSslCert(PGstKvsPlugin); STATUS initKinesisVideoStream(PGstKvsPlugin); STATUS initKinesisVideoProducer(PGstKvsPlugin); STATUS initTrackData(PGstKvsPlugin); STATUS identifyFrameNalFormat(PBYTE, UINT32, ELEMENTARY_STREAM_NAL_FORMAT*); STATUS identifyCpdNalFormat(PBYTE, UINT32, ELEMENTARY_STREAM_NAL_FORMAT*); STATUS convertCpdFromAvcToAnnexB(PGstKvsPlugin, PBYTE, UINT32); STATUS convertCpdFromHevcToAnnexB(PGstKvsPlugin, PBYTE, UINT32); #endif //__KVS_PRODUCER_FUNCTIONALITY_H__