Merge lp:~mikey74/openlp/dvdplayerfix into lp:openlp

Proposed by Mike
Status: Rejected
Rejected by: Tim Bentley
Proposed branch: lp:~mikey74/openlp/dvdplayerfix
Merge into: lp:openlp
Diff against target: 131 lines (+16/-16)
4 files modified
openlp/core/ui/media/mediacontroller.py (+4/-4)
openlp/core/ui/media/vlcplayer.py (+4/-4)
openlp/plugins/media/forms/mediaclipselectorform.py (+5/-5)
openlp/plugins/media/lib/mediaitem.py (+3/-3)
To merge this branch: bzr merge lp:~mikey74/openlp/dvdplayerfix
Reviewer Review Type Date Requested Status
Raoul Snyman Needs Fixing
Review via email: mp+320253@code.launchpad.net

Description of the change

Made minor changes to several files to get DVD playback working. Mostly had to do with how QTime is initiated: old QTime() -> new QTime(0, 0, 0) and then how milliseconds were being handled.

Once DVDs were playable, I noticed that if you paused a track and then hit the play button to resume playing it would start the track over again. This did not happen with media files which would pause and resume as expected. So I added a check to see if the media_state was paused for both the preview and live controllers, that would bypass the reinitializing of the DVD player.

To post a comment you must log in.
Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

Hi Mike,

Thanks for your contribution! As per our merge criteria, you need a test in order for this to be merged into trunk. Also, you only added the fix to trunk, not to the 2.4 line, so if you wanted to see it in 2.4.6 then you'll need to backport these changes to the 2.4 branch.

See the following links for more information:

  http://wiki.openlp.org/Development:Workflow#Run_Tests_Locally
  http://wiki.openlp.org/Development:Unit_Tests

review: Needs Fixing
Revision history for this message
Azaziah (suutari-olli) wrote :

This text is from:
https://bugs.launchpad.net/openlp/+bug/1673986

Mike (mikey74) wrote 51 minutes ago:

"Adding/Creating tests seems rather complicated. I am not really familiar with Python, so my venture into the code was limited to minor code changes. If someone wants to take the burden of completing the necessary tests, please feel free."

Revision history for this message
Tim Bentley (trb143) wrote :

Some how all this code is in trunk so not needed any more.

Unmerged revisions

2728. By Mike

fix issues with playing DVDs, bug #1514545

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openlp/core/ui/media/mediacontroller.py'
--- openlp/core/ui/media/mediacontroller.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/media/mediacontroller.py 2017-03-17 19:22:38 +0000
@@ -498,7 +498,7 @@
498 :return: True if setup succeeded else False.498 :return: True if setup succeeded else False.
499 """499 """
500 if controller is None:500 if controller is None:
501 controller = self.display_controllers[DisplayControllerType.Plugin]501 controller = self.display_controllers[DisplayControllerType.Preview]
502 # stop running videos502 # stop running videos
503 self.media_reset(controller)503 self.media_reset(controller)
504 # Setup media info504 # Setup media info
@@ -508,9 +508,9 @@
508 controller.media_info.media_type = MediaType.CD508 controller.media_info.media_type = MediaType.CD
509 else:509 else:
510 controller.media_info.media_type = MediaType.DVD510 controller.media_info.media_type = MediaType.DVD
511 controller.media_info.start_time = start // 1000511 controller.media_info.start_time = start
512 controller.media_info.end_time = end // 1000512 controller.media_info.end_time = end
513 controller.media_info.length = (end - start) // 1000513 controller.media_info.length = (end - start)
514 controller.media_info.title_track = title514 controller.media_info.title_track = title
515 controller.media_info.audio_track = audio_track515 controller.media_info.audio_track = audio_track
516 controller.media_info.subtitle_track = subtitle_track516 controller.media_info.subtitle_track = subtitle_track
517517
=== modified file 'openlp/core/ui/media/vlcplayer.py'
--- openlp/core/ui/media/vlcplayer.py 2016-12-31 11:01:36 +0000
+++ openlp/core/ui/media/vlcplayer.py 2017-03-17 19:22:38 +0000
@@ -279,7 +279,7 @@
279 start_time = controller.media_info.start_time279 start_time = controller.media_info.start_time
280 log.debug('mediatype: ' + str(controller.media_info.media_type))280 log.debug('mediatype: ' + str(controller.media_info.media_type))
281 # Set tracks for the optical device281 # Set tracks for the optical device
282 if controller.media_info.media_type == MediaType.DVD:282 if controller.media_info.media_type == MediaType.DVD and self.get_live_state() != MediaState.Paused and self.get_preview_state() != MediaState.Paused:
283 log.debug('vlc play, playing started')283 log.debug('vlc play, playing started')
284 if controller.media_info.title_track > 0:284 if controller.media_info.title_track > 0:
285 log.debug('vlc play, title_track set: ' + str(controller.media_info.title_track))285 log.debug('vlc play, title_track set: ' + str(controller.media_info.title_track))
@@ -349,7 +349,7 @@
349 """349 """
350 if display.controller.media_info.media_type == MediaType.CD \350 if display.controller.media_info.media_type == MediaType.CD \
351 or display.controller.media_info.media_type == MediaType.DVD:351 or display.controller.media_info.media_type == MediaType.DVD:
352 seek_value += int(display.controller.media_info.start_time * 1000)352 seek_value += int(display.controller.media_info.start_time)
353 if display.vlc_media_player.is_seekable():353 if display.vlc_media_player.is_seekable():
354 display.vlc_media_player.set_time(seek_value)354 display.vlc_media_player.set_time(seek_value)
355355
@@ -385,7 +385,7 @@
385 self.stop(display)385 self.stop(display)
386 controller = display.controller386 controller = display.controller
387 if controller.media_info.end_time > 0:387 if controller.media_info.end_time > 0:
388 if display.vlc_media_player.get_time() > controller.media_info.end_time * 1000:388 if display.vlc_media_player.get_time() > controller.media_info.end_time:
389 self.stop(display)389 self.stop(display)
390 self.set_visible(display, False)390 self.set_visible(display, False)
391 if not controller.seek_slider.isSliderDown():391 if not controller.seek_slider.isSliderDown():
@@ -393,7 +393,7 @@
393 if display.controller.media_info.media_type == MediaType.CD \393 if display.controller.media_info.media_type == MediaType.CD \
394 or display.controller.media_info.media_type == MediaType.DVD:394 or display.controller.media_info.media_type == MediaType.DVD:
395 controller.seek_slider.setSliderPosition(display.vlc_media_player.get_time() -395 controller.seek_slider.setSliderPosition(display.vlc_media_player.get_time() -
396 int(display.controller.media_info.start_time * 1000))396 int(display.controller.media_info.start_time))
397 else:397 else:
398 controller.seek_slider.setSliderPosition(display.vlc_media_player.get_time())398 controller.seek_slider.setSliderPosition(display.vlc_media_player.get_time())
399 controller.seek_slider.blockSignals(False)399 controller.seek_slider.blockSignals(False)
400400
=== modified file 'openlp/plugins/media/forms/mediaclipselectorform.py'
--- openlp/plugins/media/forms/mediaclipselectorform.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/media/forms/mediaclipselectorform.py 2017-03-17 19:22:38 +0000
@@ -107,7 +107,7 @@
107 self.subtitle_tracks_combobox.clear()107 self.subtitle_tracks_combobox.clear()
108 self.audio_tracks_combobox.clear()108 self.audio_tracks_combobox.clear()
109 self.titles_combo_box.clear()109 self.titles_combo_box.clear()
110 time = QtCore.QTime()110 time = QtCore.QTime(0, 0, 0)
111 self.start_position_edit.setTime(time)111 self.start_position_edit.setTime(time)
112 self.end_timeedit.setTime(time)112 self.end_timeedit.setTime(time)
113 self.position_timeedit.setTime(time)113 self.position_timeedit.setTime(time)
@@ -292,7 +292,7 @@
292 :param clicked: Given from signal, not used.292 :param clicked: Given from signal, not used.
293 """293 """
294 vlc_ms_pos = self.vlc_media_player.get_time()294 vlc_ms_pos = self.vlc_media_player.get_time()
295 time = QtCore.QTime()295 time = QtCore.QTime(0, 0, 0)
296 new_pos_time = time.addMSecs(vlc_ms_pos)296 new_pos_time = time.addMSecs(vlc_ms_pos)
297 self.start_position_edit.setTime(new_pos_time)297 self.start_position_edit.setTime(new_pos_time)
298 # If start time is after end time, update end time.298 # If start time is after end time, update end time.
@@ -308,7 +308,7 @@
308 :param clicked: Given from signal, not used.308 :param clicked: Given from signal, not used.
309 """309 """
310 vlc_ms_pos = self.vlc_media_player.get_time()310 vlc_ms_pos = self.vlc_media_player.get_time()
311 time = QtCore.QTime()311 time = QtCore.QTime(0, 0, 0)
312 new_pos_time = time.addMSecs(vlc_ms_pos)312 new_pos_time = time.addMSecs(vlc_ms_pos)
313 self.end_timeedit.setTime(new_pos_time)313 self.end_timeedit.setTime(new_pos_time)
314 # If start time is after end time, update start time.314 # If start time is after end time, update start time.
@@ -445,7 +445,7 @@
445 self.position_slider.setMaximum(self.playback_length)445 self.position_slider.setMaximum(self.playback_length)
446 # setup start and end time446 # setup start and end time
447 rounded_vlc_ms_length = int(round(self.playback_length / 100.0) * 100.0)447 rounded_vlc_ms_length = int(round(self.playback_length / 100.0) * 100.0)
448 time = QtCore.QTime()448 time = QtCore.QTime(0, 0, 0)
449 playback_length_time = time.addMSecs(rounded_vlc_ms_length)449 playback_length_time = time.addMSecs(rounded_vlc_ms_length)
450 self.start_position_edit.setMaximumTime(playback_length_time)450 self.start_position_edit.setMaximumTime(playback_length_time)
451 self.end_timeedit.setMaximumTime(playback_length_time)451 self.end_timeedit.setMaximumTime(playback_length_time)
@@ -503,7 +503,7 @@
503 if self.vlc_media_player:503 if self.vlc_media_player:
504 vlc_ms_pos = self.vlc_media_player.get_time()504 vlc_ms_pos = self.vlc_media_player.get_time()
505 rounded_vlc_ms_pos = int(round(vlc_ms_pos / 100.0) * 100.0)505 rounded_vlc_ms_pos = int(round(vlc_ms_pos / 100.0) * 100.0)
506 time = QtCore.QTime()506 time = QtCore.QTime(0, 0, 0)
507 new_pos_time = time.addMSecs(rounded_vlc_ms_pos)507 new_pos_time = time.addMSecs(rounded_vlc_ms_pos)
508 self.position_timeedit.setTime(new_pos_time)508 self.position_timeedit.setTime(new_pos_time)
509 self.position_slider.setSliderPosition(vlc_ms_pos)509 self.position_slider.setSliderPosition(vlc_ms_pos)
510510
=== modified file 'openlp/plugins/media/lib/mediaitem.py'
--- openlp/plugins/media/lib/mediaitem.py 2016-12-31 11:01:36 +0000
+++ openlp/plugins/media/lib/mediaitem.py 2017-03-17 19:22:38 +0000
@@ -267,9 +267,9 @@
267 service_item.title = clip_name267 service_item.title = clip_name
268 # Set the length268 # Set the length
269 self.media_controller.media_setup_optical(name, title, audio_track, subtitle_track, start, end, None, None)269 self.media_controller.media_setup_optical(name, title, audio_track, subtitle_track, start, end, None, None)
270 service_item.set_media_length((end - start) / 1000)270 service_item.set_media_length((end - start))
271 service_item.start_time = start / 1000271 service_item.start_time = start
272 service_item.end_time = end / 1000272 service_item.end_time = end
273 service_item.add_capability(ItemCapabilities.IsOptical)273 service_item.add_capability(ItemCapabilities.IsOptical)
274 else:274 else:
275 if not os.path.exists(filename):275 if not os.path.exists(filename):