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 +42 -31
- data/VERSION +1 -1
- data/bin/sensible-cinema +56 -35
- data/bin/sensible-cinema-cli +5 -3
- data/change_log_with_feature_list.txt +18 -0
- data/lib/mouse.rb +31 -30
- data/lib/mouse_draw.rb +4 -2
- data/lib/muter.rb +8 -2
- data/lib/overlayer.rb +1 -0
- data/lib/storage.rb +3 -2
- data/spec/screen_tracker.spec.rb +1 -0
- data/spec/sensible_cinema_gui.spec.rb +3 -2
- data/todo.inventionzy.txt +7 -0
- data/upconvert.bat +1 -1
- data/zamples/edit_decision_lists/dvds/Harry Potter 2 chamber of secrets.txt +1 -1
- data/zamples/edit_decision_lists/dvds/edls_being_edited/cars_disney.txt +3 -1
- data/zamples/edit_decision_lists/dvds/harry_potter_3_prisoner_of_azkaban.txt +1 -1
- data/zamples/edit_decision_lists/dvds/tron_legacy.txt +1 -2
- data/zamples/players/vlc/windowed_total_length_under_an_hour.txt +1 -0
- metadata +2 -2
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
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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
|
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
|
-
|
41
|
-
"
|
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
|
85
|
-
|
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-
|
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
|
-
|
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
|
-
|
146
|
-
|
147
|
-
|
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.
|
1
|
+
0.25.4
|
data/bin/sensible-cinema
CHANGED
@@ -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
|
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,
|
139
|
-
if
|
140
|
-
Thread.new { thread.join;
|
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
|
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
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
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
|
-
|
179
|
-
|
180
|
-
|
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
|
-
|
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
|
214
|
-
|
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
|
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
|
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
|
244
|
-
add_text_line "If mplayer just dies or
|
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[
|
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[
|
306
|
+
old_value = LocalStorage[ScreenMultipleFactor]
|
285
307
|
new_value = slider.value/100.0
|
286
|
-
LocalStorage[
|
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[
|
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[
|
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
|
-
|
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
|
509
|
+
add_text_line 'Create Options with local intermediary file:'
|
489
510
|
|
490
|
-
new_jbutton("Show options
|
491
|
-
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
|
-
|
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]
|
data/bin/sensible-cinema-cli
CHANGED
@@ -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
|
-
|
112
|
-
|
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.
|
data/lib/mouse.rb
CHANGED
@@ -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
|
77
|
-
old_y = get_mouse_location.y
|
64
|
+
old_x, old_y = get_mouse_location
|
78
65
|
Thread.new {
|
79
66
|
loop {
|
80
|
-
|
81
|
-
cur_y = get_mouse_location
|
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
|
-
|
85
|
-
|
86
|
-
|
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
|
-
|
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
|
-
|
94
|
-
old_y = get_mouse_location
|
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
|
-
|
108
|
+
send_left_mouse_button MOUSEEVENTF_LEFTDOWN
|
110
109
|
end
|
111
110
|
|
112
111
|
def left_mouse_up!
|
113
|
-
|
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
|
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
|
148
|
+
Mouse.total_movements=0 # ruby is a bit freaky with these...
|
data/lib/mouse_draw.rb
CHANGED
@@ -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
|
-
|
35
|
+
f.dispose
|
34
36
|
end
|
35
37
|
|
36
38
|
end
|
data/lib/muter.rb
CHANGED
@@ -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
|
-
|
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 @@
|
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
|
data/lib/overlayer.rb
CHANGED
data/lib/storage.rb
CHANGED
@@ -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
|
-
|
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('~'), ".
|
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.
|
data/spec/screen_tracker.spec.rb
CHANGED
@@ -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
|
-
|
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.
|
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)
|
data/todo.inventionzy.txt
CHANGED
@@ -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
|
data/upconvert.bat
CHANGED
@@ -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
|
-
|
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
|
|
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.
|
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-
|
13
|
+
date: 2011-08-22 00:00:00 -06:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|