@@ -300,6 +300,19 @@ protected void onResume()
300300 startVideoPlayback ();
301301 }
302302
303+ private void setSpinnerSelection (Spinner spinner , String value )
304+ {
305+ for (int index = 0 ; index < spinner .getCount (); index ++)
306+ {
307+ String item = spinner .getItemAtPosition (index ).toString ();
308+ if (item .equals (value ))
309+ {
310+ spinner .setSelection (index );
311+ break ;
312+ }
313+ }
314+ }
315+
303316 private void populateOptionDefaults ()
304317 {
305318 for (int id : BASIC_SETTINGS_IDS )
@@ -329,8 +342,21 @@ public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int
329342 findViewById (resId ).setVisibility (visibility );
330343 }
331344
345+ VideoCodec currentVideoSelection = (VideoCodec )videoCodecSpinner .getSelectedItem ();
346+ AudioCodec currentAudioSelection = (AudioCodec )audioCodecSpinner .getSelectedItem ();
347+
332348 videoCodecSpinner .setAdapter (new ArrayAdapter <>(MainActivity .this , R .layout .spinner_textview , container .supportedVideoCodecs ));
333349 audioCodecSpinner .setAdapter (new ArrayAdapter <>(MainActivity .this , R .layout .spinner_textview , container .supportedAudioCodecs ));
350+
351+ // Attempt to set the same settings again, if they exist
352+ if (currentVideoSelection != null )
353+ {
354+ setSpinnerSelection (videoCodecSpinner , currentVideoSelection .toString ());
355+ }
356+ if (currentAudioSelection != null )
357+ {
358+ setSpinnerSelection (audioCodecSpinner , currentAudioSelection .toString ());
359+ }
334360 }
335361
336362 @ Override
@@ -356,7 +382,12 @@ public void onNothingSelected(AdapterView<?> parentView)
356382 public void onItemSelected (AdapterView <?> parentView , View selectedItemView , int position , long id )
357383 {
358384 AudioCodec audioCodec = (AudioCodec ) parentView .getItemAtPosition (position );
385+
386+ String currentSelection = (String )audioChannelSpinner .getSelectedItem ();
359387 audioChannelSpinner .setAdapter (new ArrayAdapter <>(MainActivity .this , R .layout .spinner_textview , audioCodec .supportedChannels ));
388+
389+ // Attempt to set the same setting as before, if it exists
390+ setSpinnerSelection (audioChannelSpinner , currentSelection );
360391 }
361392
362393 @ Override
@@ -374,6 +405,48 @@ public void onNothingSelected(AdapterView<?> parentView)
374405
375406 String [] channels = new String [] {"1" , "2" };
376407 audioChannelSpinner .setAdapter (new ArrayAdapter <>(this , R .layout .spinner_textview , channels ));
408+
409+ if (videoInfo .container != null )
410+ {
411+ setSpinnerSelection (containerSpinner , videoInfo .container .toString ());
412+ }
413+
414+ if (videoInfo .videoCodec != null )
415+ {
416+ setSpinnerSelection (videoCodecSpinner , videoInfo .videoCodec .toString ());
417+ }
418+
419+ if (videoInfo .videoFramerate != null )
420+ {
421+ setSpinnerSelection (fpsSpinner , videoInfo .videoFramerate );
422+ }
423+
424+ if (videoInfo .videoResolution != null )
425+ {
426+ setSpinnerSelection (resolutionSpinner , videoInfo .videoResolution );
427+ }
428+
429+ if (videoInfo .videoBitrate != null )
430+ {
431+ setSpinnerSelection (videoBitrateSpinner , videoInfo .videoBitrate );
432+ }
433+
434+ if (videoInfo .audioCodec != null )
435+ {
436+ setSpinnerSelection (audioCodecSpinner , videoInfo .audioCodec .toString ());
437+ }
438+
439+ if (videoInfo .audioBitrate != null )
440+ {
441+ setSpinnerSelection (audioBitrateSpinner , videoInfo .audioBitrate );
442+ }
443+
444+ if (videoInfo .audioSampleRate != null )
445+ {
446+ setSpinnerSelection (audioSampleRateSpinner , videoInfo .audioSampleRate );
447+ }
448+
449+ setSpinnerSelection (audioChannelSpinner , Integer .toString (videoInfo .audioChannels ));
377450 }
378451
379452 @ Override
0 commit comments