Example #1
0
        /// <summary>
        /// Validate Media Format
        /// </summary>
        /// <param name="mediaDescriptor">The Media session preamble</param>
        /// <param name="errorMessage">Error message</param>
        /// <returns></returns>
        public bool IsMediaFormatSupported(MediaDescriptor mediaDescriptor, out string errorMessage)
        {
            errorMessage = null;
            logger.LogInformation($"IsMediaFormatSupported {mediaDescriptor.MediaSampleFormatCase}:{mediaDescriptor.VideoFrameSampleFormat.Encoding}:{mediaDescriptor.VideoFrameSampleFormat.PixelFormat}.");
            switch (mediaDescriptor.MediaSampleFormatCase)
            {
            case MediaDescriptor.MediaSampleFormatOneofCase.VideoFrameSampleFormat:

                var videoSampleFormat = mediaDescriptor.VideoFrameSampleFormat;

                if (videoSampleFormat.Encoding != VideoFrameSampleFormat.Types.Encoding.Jpg)
                {
                    errorMessage = $"{videoSampleFormat.Encoding} encoding is not supported. Supported: Jpg";
                    return(false);
                }

                if (videoSampleFormat.PixelFormat != VideoFrameSampleFormat.Types.PixelFormat.None)
                {
                    errorMessage = $"{videoSampleFormat.PixelFormat} pixel format is not supported. Supported: None";
                    return(false);
                }

                return(true);

            default:

                errorMessage = $"Unsupported sample format: {mediaDescriptor.MediaSampleFormatCase}";
                return(false);
            }
        }
        /// Process the Media Stream session preamble.
        /// </summary>
        /// <param name="mediaStreamDescriptor">Media session preamble.</param>
        /// <returns>Preamble response.</returns>
        public MediaStreamDescriptor ProcessMediaStreamDescriptor(MediaStreamDescriptor mediaStreamDescriptor)
        {
            // Setup data transfer
            switch (mediaStreamDescriptor.DataTransferPropertiesCase)
            {
            case MediaStreamDescriptor.DataTransferPropertiesOneofCase.SharedMemoryBufferTransferProperties:

                var memoryMappedFileProperties = mediaStreamDescriptor.SharedMemoryBufferTransferProperties;

                // Create a view on the memory mapped file.
                _logger.LogInformation($"Using shared memory transfer. Handle: {memoryMappedFileProperties.HandleName}, Size:{memoryMappedFileProperties.LengthBytes}");

                try
                {
                    _memoryManager = new MemoryMappedFileMemoryManager <byte>(
                        memoryMappedFileProperties.HandleName,
                        (int)memoryMappedFileProperties.LengthBytes,
                        desiredAccess: MemoryMappedFileAccess.Read);

                    _memory = _memoryManager.Memory;
                }
                catch (Exception ex)
                {
                    _logger.LogError($"Error creating memory manager: {ex.Message}");

                    throw new RpcException(
                              new Status(
                                  StatusCode.InvalidArgument,
                                  $"Error creating memory manager: {ex.Message}"));
                }

                break;

            case MediaStreamDescriptor.DataTransferPropertiesOneofCase.None:
                // Nothing to be done.
                _logger.LogInformation("Using embedded frame transfer.");
                break;

            default:
                _logger.LogInformation($"Unsupported data transfer method: {mediaStreamDescriptor.DataTransferPropertiesCase}");
                throw new RpcException(new Status(StatusCode.OutOfRange, $"Unsupported data transfer method: {mediaStreamDescriptor.DataTransferPropertiesCase}"));
            }

            // Validate encoding
            if (!_imageProcessor.IsMediaFormatSupported(mediaStreamDescriptor.MediaDescriptor, out var errorMessage))
            {
                _logger.LogInformation($"validate enconding: {errorMessage}");
                throw new RpcException(new Status(StatusCode.OutOfRange, errorMessage));
            }

            // Cache the client media descriptor for this stream
            _clientMediaDescriptor = mediaStreamDescriptor.MediaDescriptor;

            // Return a empty server stream descriptor as no samples are returned (only inferences)
            return(new MediaStreamDescriptor {
                MediaDescriptor = new MediaDescriptor {
                    Timescale = _clientMediaDescriptor.Timescale
                }
            });
        }
        private async Task SeedMediaAsync()
        {
            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(_cmsKitTestData.Media_1_Content)))
            {
                var media = new MediaDescriptor(_cmsKitTestData.Media_1_Id, _cmsKitTestData.Media_1_Name, _cmsKitTestData.Media_1_ContentType, stream.Length);

                await _mediaDescriptorRepository.InsertAsync(media);

                await _mediaBlobContainer.SaveAsync(media.Id.ToString(), stream);
            }
        }
Example #4
0
        public virtual async Task <MediaDescriptorDto> CreateAsync(CreateMediaInputStream inputStream)
        {
            var newId     = GuidGenerator.Create();
            var stream    = inputStream.GetStream();
            var newEntity = new MediaDescriptor(newId, inputStream.Name, inputStream.ContentType, stream.Length, CurrentTenant.Id);

            await MediaContainer.SaveAsync(newId.ToString(), stream);

            await MediaDescriptorRepository.InsertAsync(newEntity);

            return(ObjectMapper.Map <MediaDescriptor, MediaDescriptorDto>(newEntity));
        }
Example #5
0
 private void clickFile(object sender, EventArgs args)
 {
     if (service != null)
     {
         DialogResult dr = fileDialog.ShowDialog();
         if (dr == DialogResult.OK)
         {
             result = fileDialog.FileName;
             MediaDescriptor aDesc = ProjectManager.Instance.ActiveProject.addMedia(result);
             result = aDesc.Name;
         }
         service.CloseDropDown();
     }
 }
        /// <summary>
        /// Validate Media Format
        /// </summary>
        /// <param name="mediaDescriptor">The Media session preamble</param>
        /// <param name="errorMessage">Error message</param>
        /// <returns></returns>
        public bool IsMediaFormatSupported(MediaDescriptor mediaDescriptor, out string errorMessage)
        {
            errorMessage = null;
            switch (mediaDescriptor.MediaSampleFormatCase)
            {
            case MediaDescriptor.MediaSampleFormatOneofCase.VideoFrameSampleFormat:

                var videoSampleFormat = mediaDescriptor.VideoFrameSampleFormat;

                if (videoSampleFormat.Encoding != VideoFrameSampleFormat.Types.Encoding.Raw)
                {
                    errorMessage = $"{videoSampleFormat.Encoding} encoding is not supported. Supported: Raw";
                    return(false);
                }

                return(true);

            default:

                errorMessage = $"Unsupported sample format: {mediaDescriptor.MediaSampleFormatCase}";
                return(false);
            }
        }
Example #7
0
 public MediaItem(ITrackCollection media, MediaDescriptor descriptor)
 {
     Descriptor = descriptor;
     Media      = media;
 }
Example #8
0
 public UrlParseSuccess(MediaDescriptor descriptor)
 {
     MediaDescriptor = descriptor;
 }
Example #9
0
 public static IUrlParseResult Success(MediaDescriptor descriptor)
 => new UrlParseSuccess(descriptor);
Example #10
0
 public MediaResolver(MediaDescriptor descriptor)
 {
     this.descriptor = descriptor;
 }