//</SnippetToggleUnchecked> //<SnippetAudioTracksChanged_CodecCheck> private async void SnippetAudioTracksChanged_CodecCheck(MediaPlaybackItem sender, IVectorChangedEventArgs args) { if (args.CollectionChange == CollectionChange.ItemInserted) { var insertedTrack = sender.AudioTracks[(int)args.Index]; var decoderStatus = insertedTrack.SupportInfo.DecoderStatus; if (decoderStatus != MediaDecoderStatus.FullySupported) { if (decoderStatus == MediaDecoderStatus.Degraded) { ShowMessageToUser(string.Format("Track {0} can play but playback will be degraded. {1}", insertedTrack.Name, insertedTrack.SupportInfo.DegradationReason)); } else { // status is MediaDecoderStatus.UnsupportedSubtype or MediaDecoderStatus.UnsupportedEncoderProperties ShowMessageToUser(string.Format("Track {0} uses an unsupported media format.", insertedTrack.Name)); } Windows.Media.MediaProperties.AudioEncodingProperties props = insertedTrack.GetEncodingProperties(); await HelpUserInstallCodec(props); } else { insertedTrack.OpenFailed += InsertedTrack_OpenFailed; } } }
// </SnippetOpenFailed> public async Task HelpUserInstallCodec(Windows.Media.MediaProperties.AudioEncodingProperties props) { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { // This is fake async so the method can be called async }); }