private void Encode()
        {
            if (String.IsNullOrEmpty(InputFile) || !File.Exists(InputFile))
            {
                MessageBox.Show("Please select a valid input file to convert");
                return;
            }
            if (SelectedMediaType == null || SelectedMediaType.MediaType == null)
            {
                MessageBox.Show("Please select a valid output format");
                return;
            }

            using (var reader = new SharpMediaFoundationReader(InputFile))
            {
                string outputUrl = SelectSaveFile(SelectedOutputFormat.Name, SelectedOutputFormat.Extension);
                if (outputUrl == null)
                {
                    return;
                }
                using (var encoder = new SharpMediaFoundationEncoder(SelectedMediaType.MediaType))
                {
                    encoder.Encode(outputUrl, reader);
                }
            }
        }
        private void TryGetSupportedMediaTypes()
        {
            var list = SharpMediaFoundationEncoder.GetOutputMediaTypes(SelectedOutputFormat.Guid)
                       .Select(mf => new MediaTypeViewModel(mf))
                       .ToList();

            if (list.Count == 0)
            {
                list.Add(new MediaTypeViewModel()
                {
                    Name = "Not Supported", Description = "No encoder found for this output type"
                });
            }
            allMediaTypes[SelectedOutputFormat.Guid] = list;
        }