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
1=== modified file 'openlp/core/ui/media/mediacontroller.py'
2--- openlp/core/ui/media/mediacontroller.py 2016-12-31 11:01:36 +0000
3+++ openlp/core/ui/media/mediacontroller.py 2017-03-17 19:22:38 +0000
4@@ -498,7 +498,7 @@
5 :return: True if setup succeeded else False.
6 """
7 if controller is None:
8- controller = self.display_controllers[DisplayControllerType.Plugin]
9+ controller = self.display_controllers[DisplayControllerType.Preview]
10 # stop running videos
11 self.media_reset(controller)
12 # Setup media info
13@@ -508,9 +508,9 @@
14 controller.media_info.media_type = MediaType.CD
15 else:
16 controller.media_info.media_type = MediaType.DVD
17- controller.media_info.start_time = start // 1000
18- controller.media_info.end_time = end // 1000
19- controller.media_info.length = (end - start) // 1000
20+ controller.media_info.start_time = start
21+ controller.media_info.end_time = end
22+ controller.media_info.length = (end - start)
23 controller.media_info.title_track = title
24 controller.media_info.audio_track = audio_track
25 controller.media_info.subtitle_track = subtitle_track
26
27=== modified file 'openlp/core/ui/media/vlcplayer.py'
28--- openlp/core/ui/media/vlcplayer.py 2016-12-31 11:01:36 +0000
29+++ openlp/core/ui/media/vlcplayer.py 2017-03-17 19:22:38 +0000
30@@ -279,7 +279,7 @@
31 start_time = controller.media_info.start_time
32 log.debug('mediatype: ' + str(controller.media_info.media_type))
33 # Set tracks for the optical device
34- if controller.media_info.media_type == MediaType.DVD:
35+ if controller.media_info.media_type == MediaType.DVD and self.get_live_state() != MediaState.Paused and self.get_preview_state() != MediaState.Paused:
36 log.debug('vlc play, playing started')
37 if controller.media_info.title_track > 0:
38 log.debug('vlc play, title_track set: ' + str(controller.media_info.title_track))
39@@ -349,7 +349,7 @@
40 """
41 if display.controller.media_info.media_type == MediaType.CD \
42 or display.controller.media_info.media_type == MediaType.DVD:
43- seek_value += int(display.controller.media_info.start_time * 1000)
44+ seek_value += int(display.controller.media_info.start_time)
45 if display.vlc_media_player.is_seekable():
46 display.vlc_media_player.set_time(seek_value)
47
48@@ -385,7 +385,7 @@
49 self.stop(display)
50 controller = display.controller
51 if controller.media_info.end_time > 0:
52- if display.vlc_media_player.get_time() > controller.media_info.end_time * 1000:
53+ if display.vlc_media_player.get_time() > controller.media_info.end_time:
54 self.stop(display)
55 self.set_visible(display, False)
56 if not controller.seek_slider.isSliderDown():
57@@ -393,7 +393,7 @@
58 if display.controller.media_info.media_type == MediaType.CD \
59 or display.controller.media_info.media_type == MediaType.DVD:
60 controller.seek_slider.setSliderPosition(display.vlc_media_player.get_time() -
61- int(display.controller.media_info.start_time * 1000))
62+ int(display.controller.media_info.start_time))
63 else:
64 controller.seek_slider.setSliderPosition(display.vlc_media_player.get_time())
65 controller.seek_slider.blockSignals(False)
66
67=== modified file 'openlp/plugins/media/forms/mediaclipselectorform.py'
68--- openlp/plugins/media/forms/mediaclipselectorform.py 2016-12-31 11:01:36 +0000
69+++ openlp/plugins/media/forms/mediaclipselectorform.py 2017-03-17 19:22:38 +0000
70@@ -107,7 +107,7 @@
71 self.subtitle_tracks_combobox.clear()
72 self.audio_tracks_combobox.clear()
73 self.titles_combo_box.clear()
74- time = QtCore.QTime()
75+ time = QtCore.QTime(0, 0, 0)
76 self.start_position_edit.setTime(time)
77 self.end_timeedit.setTime(time)
78 self.position_timeedit.setTime(time)
79@@ -292,7 +292,7 @@
80 :param clicked: Given from signal, not used.
81 """
82 vlc_ms_pos = self.vlc_media_player.get_time()
83- time = QtCore.QTime()
84+ time = QtCore.QTime(0, 0, 0)
85 new_pos_time = time.addMSecs(vlc_ms_pos)
86 self.start_position_edit.setTime(new_pos_time)
87 # If start time is after end time, update end time.
88@@ -308,7 +308,7 @@
89 :param clicked: Given from signal, not used.
90 """
91 vlc_ms_pos = self.vlc_media_player.get_time()
92- time = QtCore.QTime()
93+ time = QtCore.QTime(0, 0, 0)
94 new_pos_time = time.addMSecs(vlc_ms_pos)
95 self.end_timeedit.setTime(new_pos_time)
96 # If start time is after end time, update start time.
97@@ -445,7 +445,7 @@
98 self.position_slider.setMaximum(self.playback_length)
99 # setup start and end time
100 rounded_vlc_ms_length = int(round(self.playback_length / 100.0) * 100.0)
101- time = QtCore.QTime()
102+ time = QtCore.QTime(0, 0, 0)
103 playback_length_time = time.addMSecs(rounded_vlc_ms_length)
104 self.start_position_edit.setMaximumTime(playback_length_time)
105 self.end_timeedit.setMaximumTime(playback_length_time)
106@@ -503,7 +503,7 @@
107 if self.vlc_media_player:
108 vlc_ms_pos = self.vlc_media_player.get_time()
109 rounded_vlc_ms_pos = int(round(vlc_ms_pos / 100.0) * 100.0)
110- time = QtCore.QTime()
111+ time = QtCore.QTime(0, 0, 0)
112 new_pos_time = time.addMSecs(rounded_vlc_ms_pos)
113 self.position_timeedit.setTime(new_pos_time)
114 self.position_slider.setSliderPosition(vlc_ms_pos)
115
116=== modified file 'openlp/plugins/media/lib/mediaitem.py'
117--- openlp/plugins/media/lib/mediaitem.py 2016-12-31 11:01:36 +0000
118+++ openlp/plugins/media/lib/mediaitem.py 2017-03-17 19:22:38 +0000
119@@ -267,9 +267,9 @@
120 service_item.title = clip_name
121 # Set the length
122 self.media_controller.media_setup_optical(name, title, audio_track, subtitle_track, start, end, None, None)
123- service_item.set_media_length((end - start) / 1000)
124- service_item.start_time = start / 1000
125- service_item.end_time = end / 1000
126+ service_item.set_media_length((end - start))
127+ service_item.start_time = start
128+ service_item.end_time = end
129 service_item.add_capability(ItemCapabilities.IsOptical)
130 else:
131 if not os.path.exists(filename):