sensible-cinema 0.25.3 → 0.25.4

Sign up to get free protection for your applications and to get access to all the features.
data/TODO CHANGED
@@ -1,7 +1,8 @@
1
1
  == roadmap [for just tasks, see below though] ==
2
2
 
3
- netflix instant for OS X
4
3
  upconvert DVD/netflix
4
+ srt release
5
+ tweaks/docu
5
6
  C EDL
6
7
 
7
8
  === loose ordering/eventually ===
@@ -18,30 +19,38 @@
18
19
  == high prio like blocking bugs ==
19
20
 
20
21
  == under next release specific items: ==
22
+ make it suck in single EDL from imdb based on a list
21
23
 
22
24
  == yes do ordered in conjunction with the above probably ==
23
25
 
24
26
  == yes do, un-ordered currently, from the various future release options ==
25
- can move the mouse 10 pixels down at the beginning, in order to...put it in the right place.
26
- both mute and blank when blanking by default... (add the other type in there, esp. if a man answers)
27
- make it suck in single EDL from imdb based on a list
28
- test court jester :)
27
+ change upconvert options needs its own "close" button
28
+ netflix instant for OS X
29
+
30
+ real docu on how to use the srt scanner
31
+ is there a bug if you switch DVD's
29
32
  lightning strike from various outlets...
30
33
  release at some point...Oliver? facebook? (one at a time...)
31
34
  research VOB dirs
32
35
  still needs timesplits? what about in XBMC? what about XBMC with DVD's
33
36
  todo.upconvert
34
37
  netflix quality upconverter, have a go at it
35
- finalize screen capture
38
+ finalize screen capturer
36
39
  have people test it
37
40
  me test it
38
41
  1x, 2x Sintel
39
42
  snapshots of Sintel "normal", then deploy the various comparison pics
40
- add new open button "edit the one for current DVD"
41
- "fix" mplayer EDL pausing [?]
43
+ DVD test it (+- with others testing it for me too)
44
+ add new open button "edit the EDL for current DVD"
45
+ "fix" mplayer EDL pausing their code
42
46
  the open button should open in the "editing" EDL dir.
47
+ test court jester :)
43
48
  warn against makemkv (and check it, too, and offer a bounty! :)
49
+ (add the other type in there, esp. if a man answers, can parse it)
50
+ add to the template, DVD can use it
51
+ release
44
52
  an overlapping mute failure when you hit the "watch edited realtime" should popup.
53
+ witch lady
45
54
  split out the "dependency" code
46
55
  try buy edit lists from all x,y,z [?] offer them money LOL
47
56
  http://www.familysafemovies.com
@@ -69,21 +78,21 @@
69
78
  consistency for flight of nav. srt? huh?
70
79
  consistency of others, also "DVD reported full-time versus ts time" for others...
71
80
  subtitles: if at beginning of a sub, add extra offset...hmm...why not?
72
- fix released version to downloadable work in mac
73
- report ffmpeg bug, mplayer various (as bugs):P
81
+ fix released version to downloadable work in mac [7zip won't cut it]
74
82
  "--developer" mode
75
83
  has "export JSON command line, reload code" , note it in the docu
76
84
  new button "auto-test" a subtitles file for timing :)
77
85
  new upconv button: auto-take some snapshots (just to straight mjpeg or jpeg or the what not [?])
78
86
  advertise urug again?
79
87
  after works in mac. Why not?
88
+ @ffmpeg windows builds += mulder +- VLC : libjpegturbo :)
80
89
  advertise virtual audio
81
90
  advertise screen capture
91
+ create skype fella...hmm...
82
92
  mplayer directx patch check it...
83
93
  auto-add largest title to the generator EDL
84
- complain if times looks wrong...on playback? sum time
85
- tighten old splits... [remove, really, I guess...sure while I only have few...and also add better instructions...]
86
- "save to" -> same dir as "get from" yeah
94
+ complain if times look wrong...on playback? sum time
95
+ splits... [add better instructions...]
87
96
  open EDL to edit it can have a rememberable DIR
88
97
  @instructions "this is great for comparing srt's, except...when it isn't, then you have to..."
89
98
  @instructions: full srt how-to document instead of tooltip [?] or combine the two! yes!
@@ -99,8 +108,7 @@
99
108
  mac just die with instructions to use tsmuxer first...
100
109
  actually don't do this, just make sure to warn them if they pass us an mkv...indeed.
101
110
  check if some create buttons are now outdated...
102
- check with blu-ray...do they match timing-wise? sub-title wise?
103
- donate tsmuxer (sent email), http://ffmpeg.zeranoe.com/builds, mulder +- [?] smplayer menumeter http://instantitunes.wordpress.com/2010/02/26/use-tsmuxer-on-snow-leopard
111
+ check with blu-rays...do they match timing-wise? sub-title wise?
104
112
  youtube/hulu timings
105
113
  split LLC's website+consumer
106
114
  get LLC before a "real" domain name
@@ -109,17 +117,18 @@
109
117
  try out libdvdcss + handbrake on the one that was totally broken...is it better?
110
118
  it should work like a champ shouldn't it?
111
119
  clear runnings
112
- have ben and chris test it out, have it work, then ask about video quality
113
120
  me try
121
+ have ben and chris test it out [realtime?]
114
122
  try out disney digital copy
115
123
  C player:
116
- folder, look for title.edl
117
124
  use DVD navigator (check)
118
125
  just use mplayer EDL syntax, plus a title track (or just detect track change, if long enough, assume... :P) :)
119
126
  http://msdn.microsoft.com/en-us/library/ms787412(VS.85).aspx
120
127
  http://msdn.microsoft.com/en-us/library/dd407175(v=VS.85).aspx can be synchronous? might be a good first pass...
121
128
  PlayPeriodInTitleAutoStop EC_DVD_PLAYPERIOD_AUTOSTOP
122
129
  make it frame accurate output text :)
130
+ use 29.97 fps
131
+ folder, look for title.edl
123
132
  allow it to "just play from X to Y exactly" ...
124
133
  can start fullscreen
125
134
  does this line up right/perfect? can it work, at all?
@@ -131,23 +140,15 @@
131
140
  note to them windows vista/7: use ac3filter [?]
132
141
  [A,B]
133
142
  once I can jump around, advertise as a phantom editor :)
134
- note better to previewer "you are about to preview these specific edits..." ?
135
143
  ask for more beta testers for use, ask for more beta testers for creation, too
136
- rinse and repeat with various ppl
137
144
  create a semi-accurate phantom edit EDL [?] just with splits
138
145
  http://www.chefelf.com/forums/index.php?showtopic=6176
139
- the final "edited.avi" really "could/should" be playable in WMP...if possible
140
- add button "fast preview segment" (from dvd)
141
- upconvert
142
- test it out (+- with others)
146
+ add button "fast preview segment" (mplayer from dvd)
143
147
  investigate WMC "call out to smplayer + EDL" or the like...
144
148
  add to docu
145
- be a hero and sync the dvdnav repo's [?] also fix mplayer not being able to startup on some dvd's what the...this is nuts!
146
- I'm almost beginning to think VLC for files, DEBUG_C player for DVD's (except on mac, where they just have to live hosed)
147
- or maybe...umm...ask the dvdnav people why it might work with one and not the other? ask VLC? huh? what the...
148
- call out to VLC on DVDNAV_ERROR occurrence? what the... if can reproduce, submit bug report with trace et al.
149
- virtual desktop -> real input
150
-
149
+ refresh bug
150
+ can edit books, too.
151
+
151
152
  == other lists to not do (duplicate the todo here if want to actually do it though) ==
152
153
 
153
154
  todo.upconvert
@@ -161,13 +162,23 @@
161
162
  == DVD decide later to move up or down ==
162
163
 
163
164
  == DVD+-DVD-realtime backlog (totally unordered, some very low prio, basically all never do) ==
165
+ accomodate ISO's as input as if they were DVD's themselves
166
+ make OCR actually use blanks versus skip
167
+ fix ffmpeg's "red hue" within their code
168
+ be a hero and sync the dvdnav repo's [?] also fix mplayer not being able to startup on some dvd's what the...this is nuts!
169
+ I'm almost beginning to think VLC for files, DEBUG_C player for DVD's (except on mac, where they just have to live hosed)
170
+ or maybe...umm...ask the dvdnav people why it might work with one and not the other? ask VLC? huh? what the...
171
+ call out to VLC on DVDNAV_ERROR occurrence? what the... if can reproduce, submit bug report with trace et al.
172
+ report ffmpeg bugs as real bugs, mplayer various (as bugs):P
173
+ the final "edited.avi" really "could/should" be playable in WMP...if possible
174
+ note better to previewer "you are about to preview these specific edits..." ?
175
+ "save to" -> same dir as "get from" yeah
164
176
  inventionzy: blu-ray stuff from todo.inventionzy
165
177
  figure out a way to get to the roku [ps3ms?], +- netflix edited to roku LOL
166
- advertise virtual desktop :)
167
178
  port to mac OS X
168
179
  ppc dvdid? documentation button? notepad?
169
180
  say something if the EDL is actually "empty" :)
170
- already donated: unlocker, mac fan thing, open office, many sourceforge tops, 7zip, VLC, mplayer, cannot donate: ffmpeg
181
+ already donated: mplayer, vlc, menumeter, http://instantitunes.wordpress.com/2010/02/26/use-tsmuxer-on-snow-leopard, unlocker, mac fan thing, open office, many sourceforge tops, 7zip, VLC, mplayer, cannot donate: ffmpeg, http://ffmpeg.zeranoe.com/builds, tsmuxer (sent email), asked mulder, smplayer ($5)
171
182
  note "you want to optimize your reverse blitting first... :)"
172
183
  if 2 EDL's, still can choose a title track
173
184
  fast preview: change it to be aggressive sometimes yes, other times no
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.25.3
1
+ 0.25.4
@@ -93,14 +93,13 @@ module SensibleSwing
93
93
  ARGV.index("--create-mode")
94
94
  end
95
95
 
96
- # currently advanced mode only *adds* buttons
97
96
  def new_jbutton title, tooltip = nil
98
97
  button = JButton.new title
99
98
  button.tool_tip = tooltip
100
99
  button.set_bounds(44, @starting_button_y, @button_width, 23)
101
100
  @panel.add button
102
101
  @buttons << button
103
- if block_given? # allow for new_jbutton("xx") do ... end [this works through some miraculous means LOL]
102
+ if block_given? # allow for new_jbutton("xx") do ... end [this is possible through some miraculous means LOL]
104
103
  button.on_clicked { yield }
105
104
  end
106
105
  increment_button_location
@@ -133,15 +132,14 @@ module SensibleSwing
133
132
  end
134
133
 
135
134
  LocalStorage = Storage.new("sensible_cinema_storage")
136
- LocalStorage.set_default('screen_multiples', 1.5) # high compatibility :)
137
135
 
138
- def close_when_done thread, jitem
139
- if jitem
140
- Thread.new { thread.join; jitem.dispose }
136
+ def close_when_done thread, j_item
137
+ if j_item
138
+ Thread.new { thread.join; j_item.dispose }
141
139
  end
142
140
  end
143
141
 
144
- def setup_upconvert_buttons
142
+ def add_play_upconvert_buttons
145
143
 
146
144
  @watch_file_upconvert = new_jbutton( "Watch a movie file upconverted (unedited)") do
147
145
  popup = warn_if_no_upconvert_options_currently_selected
@@ -167,17 +165,33 @@ module SensibleSwing
167
165
 
168
166
  end
169
167
 
170
- def self.new_child_window
171
- out = MainWindow.new
172
- out.setDefaultCloseOperation(JFrame::DISPOSE_ON_CLOSE)
173
- out
168
+ # a window that when closed doesn't bring the whole app down
169
+ def new_child_window
170
+ child = MainWindow.new
171
+ child.setDefaultCloseOperation(JFrame::DISPOSE_ON_CLOSE)
172
+ child.parent=self # this should have failed in the PPL
173
+ child
174
174
  end
175
+
176
+ attr_accessor :parent, :upconv_line
175
177
 
176
178
  def add_change_upconvert_options_button
177
- @show_upconvert_options = new_jbutton("Set Playback Upconversion Options") do
178
- upconvert_window = MainWindow.new_child_window
179
- upconvert_window.add_setup_upconvert_buttons
180
- # now join it, oops that isn't possible [?]
179
+ @show_upconvert_options = new_jbutton("Set Playback Upconversion Quality Options") do
180
+
181
+ unless LocalStorage[ScreenMultipleFactor]
182
+ =begin show_blocking_message_dialog <<-EOL
183
+ With upconversion, if your monitor is 1024 pixels wide and you upconvert to 2048 pixels then display it on 1024, it looks better.
184
+ Sensible Cinema sets the default default resolution to be 2x your screen resolution, which is better for high end cpu's.
185
+ If you have a low powered system or laptop you may need to change it (drag the slider) lower to avoid it displaying only a black or white screen, as your system can't handle it,
186
+ so adjust accordingly if you have a lesser system. Also changing this setting can make it use more or less CPU overall.
187
+ EOL
188
+ =end
189
+ # LODO make into tooltip too [?]
190
+ LocalStorage['screen_multiples'] = 2.0
191
+ end
192
+
193
+ upconvert_window = new_child_window
194
+ upconvert_window.add_change_upconvert_buttons
181
195
  end
182
196
  @show_upconvert_options.tool_tip= "Allows you to set your upconvert options.\nUpconverting attempts to playback your movie with higher quality on high resolution monitors."
183
197
  end
@@ -189,7 +203,13 @@ module SensibleSwing
189
203
  end
190
204
 
191
205
  def change_upconvert_line_to_current
192
- @upconv_line.set_text get_current_upconvert_as_phrase if @upconv_line
206
+ current = get_current_upconvert_as_phrase
207
+ if @upconv_line
208
+ @upconv_line.set_text current
209
+ end
210
+ if @parent && @parent.upconv_line
211
+ @parent.upconv_line.set_text current
212
+ end # LODO we want both [?]
193
213
  end
194
214
 
195
215
  def select_new_sxs_style
@@ -209,9 +229,11 @@ module SensibleSwing
209
229
  UpConvertKey = 'upconvert_setting'
210
230
  UpConvertKeyExtra = 'upconvert_setting_extra'
211
231
  UpConvertEnglish = 'upconvert_english_name'
232
+ ScreenMultipleFactor = 'screen_multiples'
212
233
 
213
- def add_setup_upconvert_buttons
214
- @none = new_jbutton("reset upconvert options to default (none)")
234
+ def add_change_upconvert_buttons
235
+ raise 'should have already been set for us' unless LocalStorage[ScreenMultipleFactor]
236
+ @none = new_jbutton("Reset upconvert options to default (no upconversion)")
215
237
  @none.tool_tip = "Having no upconvert options is reasonably good, might use directx for scaling, nice for slow cpu's"
216
238
  @none.on_clicked {
217
239
  LocalStorage[UpConvertKey] = nil
@@ -219,14 +241,14 @@ module SensibleSwing
219
241
  LocalStorage[UpConvertEnglish] = nil
220
242
  display_current_upconvert_setting
221
243
  }
222
- @medium_dvd = new_jbutton("Change upconvert options to DVD-style video") {
244
+ @medium_dvd = new_jbutton("Change upconvert options for DVD-style video") {
223
245
  LocalStorage[UpConvertKey] = "hqdn3d=0:1:4:4,scale=SCREEN_X:-10:0:0:2"
224
246
  # hqdn3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]
225
247
  LocalStorage[UpConvertKeyExtra] = "-sws 9 -ssf ls=75.0 -ssf cs=7.0"
226
248
  LocalStorage[UpConvertEnglish] = "DVD"
227
249
  display_current_upconvert_setting
228
250
  }
229
- high_compression = new_jbutton("Change upconvert options for playing back highly compressed video") {
251
+ high_compression = new_jbutton("Change upconvert options for playing high compressed video files") {
230
252
  # -autoq 6 -vf pp [?]
231
253
  LocalStorage[UpConvertEnglish] = "high compressed"
232
254
  LocalStorage[UpConvertKey] = "hqdn3d=0:1:4:4,pp=hb:y/vb:y,scale=SCREEN_X:-10:0:0:3" # pp should be after hqdn3d I think... and hqdn3d should be before scale...
@@ -240,8 +262,8 @@ module SensibleSwing
240
262
  LocalStorage[UpConvertEnglish] = "experimental"
241
263
  display_current_upconvert_setting
242
264
  }
243
- add_text_line "Multiple factor screen widths (higher is better, but uses more cpu, 2x is typically good)."
244
- add_text_line "If mplayer just dies or if it displays only a blank screen then lower this."
265
+ add_text_line "Multiple factor screen widths (higher is better, but uses more cpu, 2x is good for high-end)."
266
+ add_text_line "If mplayer just dies or displays only a black or white screen then lower this setting."
245
267
  slider = JSlider.new
246
268
  slider.setBorder(BorderFactory.createTitledBorder("Screen resolution multiple"));
247
269
 
@@ -276,14 +298,14 @@ module SensibleSwing
276
298
  slider.setPaintLabels(true)
277
299
  slider.snap_to_ticks=true
278
300
 
279
- slider.set_value LocalStorage['screen_multiples'] * 100
301
+ slider.set_value LocalStorage[ScreenMultipleFactor] * 100
280
302
 
281
303
  slider.add_change_listener { |event|
282
304
  if !slider.value_is_adjusting
283
305
  # they released their hold on it...
284
- old_value = LocalStorage['screen_multiples']
306
+ old_value = LocalStorage[ScreenMultipleFactor]
285
307
  new_value = slider.value/100.0
286
- LocalStorage['screen_multiples'] = new_value
308
+ LocalStorage[ScreenMultipleFactor] = new_value
287
309
  if new_value != old_value
288
310
  display_current_upconvert_setting
289
311
  if slider.value == label_minimum
@@ -306,7 +328,7 @@ module SensibleSwing
306
328
  settings = LocalStorage[UpConvertEnglish]
307
329
  out = "Upconvert options currently #{ settings ? "are set to #{settings} style" : "are NOT SET"}"
308
330
  if settings
309
- multiple = LocalStorage['screen_multiples']
331
+ multiple = LocalStorage[ScreenMultipleFactor]
310
332
  out += " (screen multiplier #{multiple} = #{(multiple * get_current_max_width_resolution).to_i}px)."
311
333
  end
312
334
  out
@@ -320,7 +342,7 @@ module SensibleSwing
320
342
  template = LocalStorage[UpConvertKey]
321
343
  if template
322
344
  # choose width of widest monitor (why would they display it on the other?)
323
- screen_multiple = LocalStorage['screen_multiples']
345
+ screen_multiple = LocalStorage[ScreenMultipleFactor]
324
346
  upc = template.gsub('SCREEN_X', (get_current_max_width_resolution*screen_multiple).to_i.to_s) # has to be an integer...
325
347
  upc = 'pullup,softskip,' + upc
326
348
  p 'using upconvert settings ' + upc
@@ -345,7 +367,8 @@ module SensibleSwing
345
367
  def setup_advanced_buttons
346
368
 
347
369
  new_jbutton("Display the standard buttons") do
348
- setup_normal_buttons
370
+ window = new_child_window
371
+ window.setup_normal_buttons
349
372
  end
350
373
 
351
374
  add_text_line 'Realtime/Create Options:'
@@ -413,8 +436,6 @@ module SensibleSwing
413
436
  sleep 0.3 if OS.mac? # add delay...
414
437
  open_file_to_edit_it EdlTempFile
415
438
  end
416
-
417
-
418
439
 
419
440
  @display_dvd_info = new_jbutton( "Display information about current DVD (ID, etc.)" )
420
441
  @display_dvd_info.tool_tip = "This is useful to setup a DVD's 'unique ID' within an EDL for it. \nIf your EDL doesn't have a line like disk_unique_id => \"...\" then you will want to run this to be able to add that line in."
@@ -485,10 +506,10 @@ module SensibleSwing
485
506
  # end
486
507
 
487
508
 
488
- add_text_line 'Create Options that first create/use a local intermediary file:'
509
+ add_text_line 'Create Options with local intermediary file:'
489
510
 
490
- new_jbutton("Show options that first create/use a local intermediary file") do
491
- window = MainWindow.new_child_window
511
+ new_jbutton("Show options with local intermediary file") do
512
+ window = new_child_window
492
513
  window.add_options_that_use_local_files
493
514
  end
494
515
 
@@ -643,7 +664,7 @@ module SensibleSwing
643
664
 
644
665
  def setup_default_buttons
645
666
  if we_are_in_upconvert_mode
646
- setup_upconvert_buttons
667
+ add_play_upconvert_buttons
647
668
  else
648
669
 
649
670
  if we_are_in_create_mode
@@ -1446,7 +1467,7 @@ module SensibleSwing
1446
1467
  return [filename, File.basename(filename), NonDvd]
1447
1468
  else
1448
1469
  disk = opticals[selected_idx]
1449
- out = show_non_blocking_message_dialog "calculating current disk's unique id..." # useful, believe it or not
1470
+ out = show_non_blocking_message_dialog "calculating current disk's unique id...if this freezes clean your disk..." # useful, believe it or not
1450
1471
  dvd_id = DriveInfo.md5sum_disk(disk.MountPoint)
1451
1472
  out.dispose
1452
1473
  @_choose_dvd_drive_or_file = [disk.MountPoint, opticals[selected_idx].VolumeName, dvd_id]
@@ -84,7 +84,7 @@ def go_sc(args)
84
84
  # assume they want an online player, right? LODO player can tell us...
85
85
  auto_found = AutoWindowFinder.search_for_single_url_match
86
86
  if auto_found
87
- p 'auto-discovered open window for EDL, using it ' + auto_found
87
+ p 'auto-discovered open window for player x EDL, using it ' + auto_found
88
88
  settings = EdlParser.parse_file auto_found
89
89
  if settings["from_url"]
90
90
  require 'tempfile'
@@ -108,8 +108,8 @@ def go_sc(args)
108
108
  puts 'Selected scene descriptions file ' + File.basename(edit_decision_list) + "\n\t(full path: #{edit_decision_list})"
109
109
  Blanker.startup
110
110
  # todo start it late as it has an annoying startup blip
111
- overlay = OverLayer.new(edit_decision_list )
112
- end
111
+ end
112
+ overlay = OverLayer.new(edit_decision_list) if edit_decision_list
113
113
 
114
114
  if File.exist? player_description.to_s
115
115
  puts 'Selected player ' + File.basename(player_description) + "\n\t(full path: #{player_description})"
@@ -138,6 +138,8 @@ def go_sc(args)
138
138
 
139
139
  OCR.unserialize_cache_from_disk # do this every time so we don't delete it if they don't have one...
140
140
 
141
+ p 'moving mouse to align it for muting down 10'
142
+ Mouse.move_mouse_relative 0, 10 # LODO
141
143
  puts "Opening the curtains... (please play in your other video player now)"
142
144
  overlay.start_thread true
143
145
  key_input = KeyboardInput.new overlay
@@ -1,3 +1,21 @@
1
+ == 025.5==
2
+
3
+ Cleaned up upconverting options to hopefully cause less confusion. Until somebody complains otherwise.
4
+
5
+ Also note the existence of these files and their implication:
6
+ ...\sensible-cinema>ls legal
7
+ control_youtube.html md5s.txt serve.rb transcript_mute_vlc.txt
8
+
9
+
10
+ == 0.25.4 ==
11
+
12
+ Also note experimented with diferent frequencies of mouse jitter at one point,
13
+ to preserve that the timestamp be available on screen, and also it
14
+ avoids annoying the user with mouse jerks when the user has been moving it,
15
+ and several other advanced features.
16
+
17
+ Add a mode for "skipping" when using OCR overlayer (mute and blank, basically).
18
+
1
19
  == 0.25.3 ==
2
20
 
3
21
  Mostly explore some more "inventionzy" ideas.
@@ -60,38 +60,24 @@ module Mouse
60
60
  class << self
61
61
 
62
62
  def jitter_forever_in_own_thread
63
-
64
- myinput = Mouse::Input.new
65
- myinput[:type] = Mouse::INPUT_MOUSE
66
-
67
- in_evt = myinput[:evt][:mi]
68
-
69
- in_evt[:mouse_data] = 0 # null it out
70
- in_evt[:flags] = Mouse::MOUSEEVENTF_MOVE
71
- in_evt[:time] = 0
72
- in_evt[:extra] = 0
73
- in_evt[:dx] = 0
74
- in_evt[:dy] = 8 # just enough for VLC when full screened...
75
63
 
76
- old_x = get_mouse_location.x
77
- old_y = get_mouse_location.y
64
+ old_x, old_y = get_mouse_location
78
65
  Thread.new {
79
66
  loop {
80
- cur_x = get_mouse_location.x
81
- cur_y = get_mouse_location.y
67
+ move_y = 8 # just enough for VLC when full screened...
68
+ cur_x, cur_y = get_mouse_location
82
69
  if(cur_x == old_x && cur_y == old_y)
83
70
  @total_movements += 1
84
- in_evt[:dy] *= -1
85
- SendInput(1, myinput, Mouse::Input.size)
86
- in_evt[:dy] *= -1
71
+ # blit it up
72
+ move_mouse_relative(0, move_y)
73
+ move_mouse_relative(0, move_y * -1)
74
+ # let it move it back
87
75
  sleep 0.05
88
- SendInput(1, myinput, Mouse::Input.size)
89
- old_x = get_mouse_location.x
90
- old_y = get_mouse_location.y
76
+ old_x, old_y = get_mouse_location
91
77
  sleep 0.75
92
78
  else
93
- old_x = get_mouse_location.x
94
- old_y = get_mouse_location.y
79
+ # user has been moving the mouse around, so we don't need to, to not annoy them
80
+ old_x, old_y = get_mouse_location
95
81
  sleep 3
96
82
  end
97
83
  }
@@ -99,6 +85,19 @@ module Mouse
99
85
 
100
86
  end
101
87
 
88
+ def move_mouse_relative dx, dy
89
+ myinput = Mouse::Input.new
90
+ myinput[:type] = Mouse::INPUT_MOUSE
91
+ in_evt = myinput[:evt][:mi]
92
+ in_evt[:mouse_data] = 0 # null it out
93
+ in_evt[:flags] = Mouse::MOUSEEVENTF_MOVE
94
+ in_evt[:time] = 0
95
+ in_evt[:extra] = 0
96
+ in_evt[:dx] = dx
97
+ in_evt[:dy] = dy
98
+ SendInput(1, myinput, Mouse::Input.size)
99
+ end
100
+
102
101
  def single_click_left_mouse_button
103
102
  left_mouse_down!
104
103
  left_mouse_up!
@@ -106,14 +105,14 @@ module Mouse
106
105
  end
107
106
 
108
107
  def left_mouse_down!
109
- change_left_mouse_button MOUSEEVENTF_LEFTDOWN
108
+ send_left_mouse_button MOUSEEVENTF_LEFTDOWN
110
109
  end
111
110
 
112
111
  def left_mouse_up!
113
- change_left_mouse_button MOUSEEVENTF_LEFTUP
112
+ send_left_mouse_button MOUSEEVENTF_LEFTUP
114
113
  end
115
114
 
116
- VK_LBUTTON = 0x01 # mouse left button for GetAsyncKeyState
115
+ VK_LBUTTON = 0x01 # mouse left button for GetAsyncKeyState (seeing if mouse down currently or not)
117
116
 
118
117
  def left_mouse_button_state
119
118
  GetAsyncKeyState(VK_LBUTTON) # ignore a first response, which also tells us if it has changed at all since last call
@@ -124,15 +123,17 @@ module Mouse
124
123
  end
125
124
  end
126
125
 
126
+ # [x, y]
127
127
  def get_mouse_location
128
- MouseInfo.getPointerInfo.getLocation
128
+ loc = MouseInfo.getPointerInfo.getLocation
129
+ [loc.x, loc.y]
129
130
  end
130
131
 
131
132
  attr_accessor :total_movements
132
133
 
133
134
  private
134
135
 
135
- def change_left_mouse_button action_type
136
+ def send_left_mouse_button action_type
136
137
  myinput = Mouse::Input.new
137
138
  myinput[:type] = Mouse::INPUT_MOUSE
138
139
  in_evt = myinput[:evt][:mi]
@@ -144,4 +145,4 @@ module Mouse
144
145
  end
145
146
 
146
147
  end
147
- Mouse.total_movements = 0
148
+ Mouse.total_movements=0 # ruby is a bit freaky with these...
@@ -20,7 +20,7 @@ class MouseDraw
20
20
  # wait till mouse goes down...
21
21
  while(Mouse.left_mouse_button_state == :up)
22
22
  sleep 0.05
23
- print '.'
23
+ print 'waiting'
24
24
  end
25
25
  f.undecorated = true
26
26
  f.default_close_operation = JFrame::EXIT_ON_CLOSE
@@ -29,8 +29,10 @@ class MouseDraw
29
29
  f.set_location(Mouse.get_mouse_location)
30
30
  while(Mouse.left_mouse_button_state == :down)
31
31
  # set_size
32
+ p 'waiting for end'
33
+ p Mouse.get_mouse_location
32
34
  end
33
- #f.close
35
+ f.dispose
34
36
  end
35
37
 
36
38
  end
@@ -56,12 +56,18 @@ module Muter
56
56
  def mute!
57
57
  #unmute! # just in case...somehow this was causing problems...windows 7 perhaps? VLC?
58
58
  # anyway we just use a toggle for now...dangerous but works hopefully...
59
- hit_mute_key
59
+ if @@use_mouse_click
60
+ Mouse.single_click_left_mouse_button
61
+ else
62
+ hit_mute_key
63
+ end
60
64
  end
65
+
66
+ @@use_mouse_click = true
61
67
 
62
68
  # LODO better for doze 7/xp
63
69
  def unmute!
64
- if @@use_mouse
70
+ if @@use_mouse_click
65
71
  Mouse.single_click_left_mouse_button
66
72
  elsif @@use_static_on_top
67
73
  stop_playing_static
@@ -353,6 +353,7 @@ class OverLayer
353
353
 
354
354
  if should_be_blank && !blank?
355
355
  blank! "%.02f" % (next_point - cur_time)
356
+ mute! # mute with blanks currently...
356
357
  display_change 'blanked'
357
358
  end
358
359
 
@@ -15,7 +15,8 @@ This file is part of Sensible Cinema.
15
15
  You should have received a copy of the GNU General Public License
16
16
  along with Sensible Cinema. If not, see <http://www.gnu.org/licenses/>.
17
17
  =end
18
- # use it like
18
+
19
+ # shamelessly stolen from the redcar project
19
20
 
20
21
  class Storage
21
22
  class << self
@@ -23,7 +24,7 @@ This file is part of Sensible Cinema.
23
24
  end
24
25
 
25
26
  def self.storage_dir
26
- @user_dir ||= File.join(File.expand_path('~'), ".storage")
27
+ @user_dir ||= File.join(File.expand_path('~'), ".sensible_cinema_storage")
27
28
  end
28
29
 
29
30
  # Open a storage file or create it if it doesn't exist.
@@ -33,6 +33,7 @@ describe ScreenTracker do
33
33
  rescue
34
34
  silence = File.expand_path("../lib/silence.wav").gsub("/", "\\")
35
35
  vlc = Dir['/program files*/videolan/VLC/vlc.exe'][0]
36
+ # /Applications/VLC.app/Contents/MacOS/VLC lib/silence.wav -f
36
37
  Dir.chdir(File.dirname(vlc)) do; IO.popen("vlc.exe #{silence}").pid; end # includes a work around for JRUBY-4959 /4958
37
38
 
38
39
  # now also work around JRUBY-5756
@@ -556,7 +556,8 @@ module SensibleSwing
556
556
 
557
557
  it "should be able to upconvert at all" do
558
558
  @subject = MainWindow.new false
559
- @subject.add_setup_upconvert_buttons
559
+ MainWindow::LocalStorage['screen_multiples'] = 2.0 # default so it won't fail us...
560
+ @subject.add_change_upconvert_buttons
560
561
  @subject.stub(:display_current_upconvert_setting) {} # no popup ;)
561
562
  @subject.stub(:show_mplayer_instructions_once) {}
562
563
  click_button(:@medium_dvd)
@@ -583,7 +584,7 @@ module SensibleSwing
583
584
  end
584
585
 
585
586
  it "should be able to play upconverted stuff" do
586
- @subject.setup_upconvert_buttons
587
+ @subject.add_play_upconvert_buttons
587
588
  click_button(:@watch_file_upconvert)
588
589
  assert_played_mplayer
589
590
  click_button(:@watch_dvd_upconvert)
@@ -4,6 +4,8 @@
4
4
  some blu-ray player descriptor somehow
5
5
  can move the mouse 10 pixels down at the beginning, in order to...put it in the right place.
6
6
 
7
+ EDL can say "this exact text was at this exact time" to allow for matching with other videos of same content that may have slightly different timestamps/speeds/start time etc.
8
+ allow for extra start time offset for videos, if netflix instant has any
7
9
  can "suck in" a large list of EDL's from imdb at build time, and/or from a wiki (github wiki in this case), and a "resync" button?
8
10
  can handle multiple dvdid's et al (same EDL) (mostly do already though)
9
11
  can overlay over online films too
@@ -12,7 +14,11 @@
12
14
  can control volume *and* play other audio
13
15
  can add to to supplement EDL + EDL timestamps
14
16
  can pick specific profanities to avoid
17
+ it can scan "playing" instant streaming titles, and/or OCR or take the audio and look for words, to check for profanity.
18
+ it can examine "output volume level" to auto-detects violence.
19
+ similarly for "questionable" content
15
20
  manual select which to include into an EDL
21
+ use multiple filters/complex mapping graphs to overlay just the correct frameage: http://ffmpeg.org/libavfilter.html
16
22
  user preference "how many down clicks on volume for profanity"?
17
23
  make it so it can suck in from "another wiki" the DL's, at package time, somehow (just one)
18
24
  or even just suck in any web file, for starters
@@ -51,3 +57,4 @@
51
57
  stage one: query, auto-download when they hit a netflix movie of some type
52
58
  stage two: chrome plugin for the same, auto-detect, auto-user, auto-download, auto-watch edited :)
53
59
  can insert deleted scenes et al [even external scenes :P] (already showed it somewhat)
60
+ many others were already completed and done from this list and removed
@@ -1 +1 @@
1
- j bin/sensible-cinema --upconvert-mode
1
+ j %* bin/sensible-cinema --upconvert-mode
@@ -13,5 +13,5 @@
13
13
 
14
14
  # "disk_unique_id" => "",
15
15
  "title" => "Harry Potter 2 Chamber of secrets",
16
- "mplayer_dvd_splits" => ["1:16:32"],
16
+ #"mplayer_dvd_splits" => ["1:16:32"], inaccurate slightly...
17
17
  "not yet edited out" => "plenty of violence at the end with the snake, and also the spiders. hmmmm."
@@ -19,8 +19,10 @@
19
19
  "01:28:01.615", "01:28:06.119", "profanity", "Thank the manufacturer",
20
20
  "00:31:42.319", "00:31:46.406", "profanity", "innuendo", "Nah, I'm just kiddin'. She just likes me fer muh body.",
21
21
  "52:52", "52:57", "profanity", "innuendo", "not with me but with me",
22
- # 28:30 mumble [?]
22
+ "28:00", "28:08", "profanity", "mumble l...",
23
23
  ],
24
+ # 00:48:09,264 --> 00:48:11,934
25
+ #That crazy old devil woman.
24
26
 
25
27
  # sister DVD: CRZ0NNF1 track 21 "disk_unique_id" => "aa06ad1c|e1e62ad0"
26
28
 
@@ -17,4 +17,4 @@
17
17
  # "02:00:33", "02:01:03", "dementors d", "",
18
18
  ],
19
19
 
20
- "mplayer_dvd_splits" => ["01:15:39"],
20
+ #"mplayer_dvd_splits" => ["01:15:39"], inaccurate slightly
@@ -23,5 +23,4 @@
23
23
 
24
24
  "not edited out stuff" => "some cyborg violence",
25
25
  "probable rating" => "still pg, age about 10",
26
- "mplayer_dvd_splits" => ["1:19:09"]
27
- # 4749
26
+ #"mplayer_dvd_splits" => ["1:19:09"] # inaccurate slightly
@@ -19,3 +19,4 @@ digits:
19
19
  - 7
20
20
  :levels:
21
21
  - 130
22
+ does_not_need_mouse_movement: true
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sensible-cinema
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.25.3
5
+ version: 0.25.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Roger Pack
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-18 00:00:00 -06:00
13
+ date: 2011-08-22 00:00:00 -06:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency