sensible-cinema 0.23.6 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. data/LICENSE.TXT +1 -1
  2. data/README +8 -6
  3. data/Rakefile +1 -1
  4. data/TODO +62 -41
  5. data/VERSION +1 -1
  6. data/bin/sensible-cinema +395 -278
  7. data/bin/sensible-cinema-cli +1 -1
  8. data/change_log_with_feature_list.txt +16 -0
  9. data/developer_how_to_contribute_to_the_project.txt +1 -1
  10. data/documentation/{README.TXT → DOCUMENTATION_README.TXT} +0 -0
  11. data/documentation/how_to_create_your_own_delete_lists.txt +7 -7
  12. data/experimental_online_player_ocr_readme.txt +2 -2
  13. data/lib/check_installed_mac.rb +16 -4
  14. data/lib/drive_info.rb +2 -2
  15. data/lib/edl_parser.rb +13 -9
  16. data/lib/mencoder_wrapper.rb +18 -9
  17. data/lib/mplayer_edl.rb +4 -1
  18. data/lib/shutdown_kill.rb +32 -0
  19. data/lib/subtitle_profanity_finder.rb +13 -5
  20. data/lib/swing_helpers.rb +4 -0
  21. data/spec/notes +331 -8
  22. data/spec/sensible_cinema_gui.spec.rb +34 -22
  23. data/template_bats/{advanced--create or edit sensible cinema delete list files.bat → advanced--create or edit sensible cinema edit list files.bat} +0 -0
  24. data/todo.upconvert +13 -0
  25. data/upconvert.bat +2 -0
  26. data/www/index.html +11 -9
  27. data/zamples/edit_decision_lists/dvds/{zz_example_delete_list_that_has_no_cuts_in_it.txt → aa_example_delete_list_that_has_no_cuts_in_it.txt} +0 -0
  28. data/zamples/edit_decision_lists/dvds/{bambi.txt → edls_being_edited/bambi.txt} +0 -0
  29. data/zamples/edit_decision_lists/dvds/{edl_for_unit_tests.txt → edls_being_edited/edl_for_unit_tests.txt} +0 -0
  30. data/zamples/edit_decision_lists/dvds/edls_being_edited/iq.txt +32 -0
  31. data/zamples/edit_decision_lists/dvds/edls_being_edited/other_side_of_heaven.txt +19 -0
  32. data/zamples/edit_decision_lists/dvds/edls_being_edited/snow_white_and_the_7_dwarfs_1937.txt +19 -0
  33. data/zamples/edit_decision_lists/dvds/{potter_prisoner_of_azkaban.txt → harry_potter_prisoner_of_azkaban.txt} +0 -0
  34. data/zamples/edit_decision_lists/{dvds/old_and_inaccurate → old_not_yet_updated/dvds}/White Christmas.txt +0 -0
  35. data/zamples/edit_decision_lists/{dvds/old_and_inaccurate → old_not_yet_updated/dvds}/all_dogs_go_to_heaven.txt +0 -0
  36. data/zamples/edit_decision_lists/{dvds/old_and_inaccurate → old_not_yet_updated/dvds}/cars_disney.txt +1 -1
  37. data/zamples/edit_decision_lists/{dvds/old_and_inaccurate → old_not_yet_updated/dvds}/happy_feet.txt +0 -0
  38. data/zamples/edit_decision_lists/{dvds/old_and_inaccurate → old_not_yet_updated/dvds}/labyrinth.txt +0 -0
  39. data/zamples/edit_decision_lists/{dvds/old_and_inaccurate → old_not_yet_updated/dvds}/making marriage work.txt +0 -0
  40. data/zamples/edit_decision_lists/{dvds/old_and_inaccurate → old_not_yet_updated/dvds}/star_trek_generations_hulu.txt +0 -0
  41. metadata +21 -16
  42. data/zamples/edit_decision_lists/category descriptions.txt +0 -35
@@ -43,7 +43,7 @@ def go_sc(args)
43
43
 
44
44
  syntax: [player_description.yml] [delete_list.txt|test] [-t -v --clear-cache] (or just nothing at all--it will prompt for all things needed)
45
45
 
46
- If you specify "test" for the delete list, it will pause 4s, take a snapshot of the player, then exit.
46
+ If you specify "test" for the edit list, it will pause 4s, take a snapshot of the player, then exit.
47
47
  Useful for debugging your screen capture of the current player.
48
48
  You can also specify -v or -t if you want to enable more verbose (chatty) output.
49
49
 
@@ -1,3 +1,19 @@
1
+ == 0.24.0 ==
2
+
3
+ Now comes with an upconverting software player to play back DVD's/files.
4
+ This can used advanced deblocking, or hq denois3d, or lancosz filter, etc.
5
+ Uses much better mplayer options for slow computers now.
6
+ Added EDL for IQ.
7
+ Added ability to "offset" timestamps by a set factor (ex: 600s).
8
+ A few profanities added to the subtitler.
9
+ Much more compatible with mac.
10
+ Prompts users to assert they own disks for files they watch.
11
+ Added new button "watch file edited"
12
+ Now uses smplayer as the default player.
13
+ Can differentiate cross platform to decide which player to use.
14
+ Relies on mplayerx for mac now.
15
+ Other minor cleanups.
16
+
1
17
  == 0.23.6 ==
2
18
 
3
19
  Added capability/functionality to create files used in other players to automatically cut out bad scenes.
@@ -9,7 +9,7 @@ other CC released licensed DVD's).
9
9
 
10
10
  You should be able to run the program and test it out against said DVD, put it through its paces to demo it, fix it, etc.
11
11
 
12
- Or if you have a DVD that already has a delete list available for it, you could use that, obviously.
12
+ Or if you have a DVD that already has a edit list available for it, you could use that, obviously.
13
13
 
14
14
  The main development roadmap is in the TODO. If you have any feedback/feature requests, et al, post an
15
15
  issue or post to the Mailing List: http://groups.google.com/group/sensible-cinema
@@ -1,6 +1,6 @@
1
- You can create a delete list for sensible cinema to use against whatever DVD you want
1
+ You can create an edit list for sensible cinema to use against whatever DVD you want
2
2
 
3
- A delete list (currently) lists sections you want muted or skipped. Here is an example
3
+ An edit list (currently) lists sections you want muted or skipped. Here is an example
4
4
 
5
5
  "mutes" => [
6
6
  "02:02:15.0" , "02:02:25", "a muted demo section",
@@ -19,7 +19,7 @@ To create a new one, for a DVD, the steps typically look like this:
19
19
 
20
20
  open Sensible cinema (with "advanced--edit create mode...bat")
21
21
 
22
- insert your DVD, click "Create new delete list for DVD" button
22
+ insert your DVD, click "Create new edit list for DVD" button
23
23
 
24
24
  Now detect timestamps for questionable content (some buttons may help you here),
25
25
  add timestamps to this file, save it, and then test them to make sure they're accurate, using the various buttons.
@@ -35,18 +35,18 @@ Then parse it for known profanities (parse a subtitle... button) and copy and pa
35
35
 
36
36
  For the rest of the buttons, just "mouse over"/"hover over" them for full descriptions of their potential uses.
37
37
 
38
- After you're done, you can submit your new delete list to the project
38
+ After you're done, you can submit your new edit list to the project
39
39
  (so others can use it later) by using the Upload button and sending it as an attachment.
40
40
  Note also that if you know how, you could fork the code from github, commit changes, and
41
- submit a pull request, as well (for example more delete lists, code changes, etc.)
41
+ submit a pull request, as well (for example more edit lists, code changes, etc.)
42
42
  Email is probably easier though :)
43
43
 
44
44
  A few pointers:
45
45
 
46
- You can make several different "delete lists" per DVD, using different filenames.
46
+ You can make several different "edit lists" per DVD, using different filenames.
47
47
  For example one might take out all profanity, and a second take out profanity and also remove all violence, or whatever.
48
48
  Basically different levels :)
49
- You can also just watch a DVD (using any DVD player), and get timestamps that way, before creating a delete list.
49
+ You can also just watch a DVD (using any DVD player), and get timestamps that way, before creating an edit list.
50
50
  You'll have to convert them using the "convert timestamp" button.
51
51
  A good computer program for this is "smplayer" (the [ and ] keys control playback speed, and right and left,
52
52
  page up and page down buttons control seeking), and you can also turn on subtitles to help locate profanity.
@@ -1,4 +1,4 @@
1
- Currently the experimental screen tracking edited player (bin\sensible-cinema-cli) prompts for a delete list
1
+ Currently the experimental screen tracking edited player (bin\sensible-cinema-cli) prompts for an edit list
2
2
  and a player description.
3
3
 
4
4
  It then tracks whichever player you are using, by using OCR on its timestamps (
@@ -34,7 +34,7 @@ Q. What movies are freely available to watch online?
34
34
 
35
35
  A. Not many are available free (hulu, youtube have a few). Netflix has quite a few now for money.
36
36
  You can of course use SC with DVD's, too, or rent or borrow DVD's.
37
- (If they have a delete list (or you could create your own for them if not...).)
37
+ (If they have an edit list (or you could create your own for them if not...).)
38
38
 
39
39
  Q. Why does my mouse bounce up and down while sensible-cinema is going?
40
40
 
@@ -15,14 +15,26 @@ module CheckInstalledMac
15
15
  end
16
16
  end
17
17
 
18
- command = {"gocr" => "gocr --help", "convert" => "convert --help",
19
- "mplayer" => "mplayer", "mencoder" => "fakey", "ffmpeg" => "ffmpeg -version"}[name]
18
+ if name == 'mplayer'
19
+ for path in ["/Applications/MPlayerX.app/Contents/Resources/binaries/m32", File.expand_path('~') + "/Downloads/MPlayerX.app/Contents/Resources/binaries/m32/"]
20
+ if File.exist? path + "/mplayer"
21
+ ENV['PATH'] = path + ':' + ENV['PATH']
22
+ return true
23
+ end
24
+ end
25
+ puts 'lacking mplayer! please install MPlayerX from the App Store first'
26
+ return false
27
+ end
28
+
29
+ # check for the others as generics
30
+
31
+ command = {"gocr" => "gocr --help", "convert" => "convert --help", "ffmpeg" => "ffmpeg -version"}[name]
20
32
 
21
- raise 'unknown ' + name unless command # double check
33
+ raise 'unknown ' + name unless command # sanity check
22
34
 
23
35
  unless system(command + " 1> " + OS.dev_null + " 2>" + OS.dev_null)
24
36
  name = 'ImageMagick' if name == 'convert' # special case...
25
- puts 'lacking dependency! Please install ' + name + ' by running $ sudo port install ' + name
37
+ puts 'lacking dependency! Please install ' + name + ' by installing macports and running in terminal: $ sudo port install ' + name
26
38
  false
27
39
  else
28
40
  true
data/lib/drive_info.rb CHANGED
@@ -19,7 +19,7 @@ require 'digest/md5'
19
19
  require 'rubygems'
20
20
  require 'sane'
21
21
  require 'ostruct'
22
-
22
+ require 'benchmark'
23
23
  class DriveInfo
24
24
 
25
25
  def self.md5sum_disk(dir)
@@ -28,7 +28,7 @@ class DriveInfo
28
28
  else
29
29
  command = "#{__DIR__}/../vendor/dvdid.exe #{dir}"
30
30
  end
31
- output = `#{command}`
31
+ output = `#{command}` # can take like 2.2s
32
32
  raise 'dvdid command failed?' + command unless $?.exitstatus == 0
33
33
  output.strip
34
34
  end
data/lib/edl_parser.rb CHANGED
@@ -17,13 +17,16 @@ This file is part of Sensible Cinema.
17
17
  =end
18
18
  class EdlParser
19
19
 
20
- def self.parse_file filename, ignore_settings = false
21
- parse_string File.read(filename), filename, [], ignore_settings
20
+ # returns {"mutes" => [["00:00", "00:00", string1, string2], ...], "blank_outs" -> [...]}
21
+ def self.parse_file filename
22
+ parse_string File.read(filename), filename, [] # LODO categories stuff out...
22
23
  end
23
24
 
25
+ private
26
+
24
27
  # better eye-ball these before letting people run them, eh? XXXX
25
28
  # but I couldn't think of any other way to parse the files tho
26
- def self.parse_string string, filename, ok_categories_array = [], ignore_settings = false
29
+ def self.parse_string string, filename, ok_categories_array
27
30
  string = '{' + string + "\n}"
28
31
  if filename
29
32
  raw = eval(string, binding, filename)
@@ -36,9 +39,6 @@ class EdlParser
36
39
  # mutes and blank_outs need to be special parsed into arrays...
37
40
  mutes = raw["mutes"] || []
38
41
  blanks = raw["blank_outs"] || []
39
- if ignore_settings
40
- mutes = blanks = []
41
- end
42
42
  raw["mutes"] = convert_to_timestamp_arrays(mutes, ok_categories_array)
43
43
  raw["blank_outs"] = convert_to_timestamp_arrays(blanks, ok_categories_array)
44
44
  raw
@@ -100,8 +100,11 @@ class EdlParser
100
100
  answers
101
101
  end
102
102
 
103
+ public
104
+
103
105
  # divides up mutes and blanks so that they don't overlap, preferring blanks over mutes
104
- # returns it like [[start,end,type], [s,e,t]...] type like :blank and :mute
106
+ # returns it like [[start,end,type], [s,e,t]...] type like either :blank and :mute
107
+ # [[70.0, 73.0, :blank], [378.0, 379.1, :mute]]
105
108
  def self.convert_incoming_to_split_sectors incoming, add_this_to_mutes_end = 0, add_this_to_mutes_beginning = 0, splits = []
106
109
  if splits != []
107
110
  # allow it to do all the double checks we later skip, just in case :)
@@ -113,6 +116,7 @@ class EdlParser
113
116
  blanks = blanks.map{|k, v| get_secs(k, v, -add_this_to_mutes_beginning, add_this_to_mutes_end, splits) + [:blank]}
114
117
  combined = (mutes+blanks).sort
115
118
 
119
+ # detect overlap...
116
120
  previous = nil
117
121
  combined.each_with_index{|current, idx|
118
122
  s,e,t = current
@@ -123,7 +127,7 @@ class EdlParser
123
127
  ps, pe, pt = previous
124
128
  if (s < pe)
125
129
  raise SyntaxError.new("detected an overlap #{[s,e,t].join(' ')} #{previous.join(' ')}") unless splits.length > 0
126
- # our start might be within the previous' in which case its their start, with (greater of our, their endig)
130
+ # our start might be within the previous' in which case its their start, with (greater of our, their ending)
127
131
  preferred_end = [e,pe].max
128
132
  preferred_type = [t,pt].detect{|t| t == :blank} || :mute # prefer blank to mute
129
133
  combined[idx-1] = [ps, preferred_end, preferred_type]
@@ -135,7 +139,7 @@ class EdlParser
135
139
  }
136
140
  combined.compact
137
141
  end
138
-
142
+
139
143
  def self.translate_string_to_seconds s
140
144
  # might actually already be a float, or int, depending on the yaml
141
145
  # int for 8 => 9 and also for 1:09 => 1:10
@@ -25,7 +25,7 @@ class MencoderWrapper
25
25
 
26
26
  def get_header this_file, these_settings
27
27
  out = ''
28
- if File.exist?(@big_temp) && File.exist?(@big_temp + '.done')
28
+ if File.exist?(@big_temp_fulli) && File.exist?(@big_temp_fulli + '.done')
29
29
  out = '@rem ' # don't re-do this file if .done file already exists...
30
30
  end
31
31
  audio_codec = these_settings['audio_codec'] || 'mp3lame' # not copy...sniff...or you can't hear cars... LODO
@@ -35,21 +35,23 @@ class MencoderWrapper
35
35
  # "This will result in a slightly bigger file, but will not cause problems when demuxing or remuxing into other container formats." LODO no harddup ok ???
36
36
  # lodo: can I use ffmpeg to unmux-ify/GOP'ify perhaps?
37
37
  # LODO 24000/1001 ?
38
- video_opts = "-vf scale=720:480,pullup,softskip,harddup -ovc lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=1:vstrict=0:acodec=ac3:abitrate=192:autoaspect -ofps 30000/1001"
39
- out += "mencoder \"#{this_file.gsub('"', '\\"')}\" -of mpeg -mpegopts format=dvd:tsaf -alang en -nocache -sid 1000 -oac #{audio_codec} #{video_opts} -o #{@big_temp} -dvd-device #{this_file} && echo done_grabbing > #{@big_temp}.done\n"
38
+ # -vf pullup,softskip for DVD's that mix progressive and something something [some of them]...whatever it even really means :P
39
+ video_opts = "-vf scale=720:480,pullup,softskip,harddup -forceidx -ovc lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=1:vstrict=0:acodec=ac3:abitrate=192:autoaspect -ofps 30000/1001"
40
+ out += "mencoder \"#{this_file.gsub('"', '\\"')}\" -of mpeg -mpegopts format=dvd:tsaf -alang en -nocache -sid 1000 -oac #{audio_codec} #{video_opts} -o #{@big_temp_fulli} -dvd-device #{this_file} && echo done_grabbing > #{@big_temp_fulli}.done\n"
40
41
  end
41
42
 
42
43
  def calculate_fulli_filename to_here_final_file
43
- @big_temp = to_here_final_file + ".fulli_unedited.tmp.mpg"
44
+ @big_temp_fulli = to_here_final_file + ".fulli_unedited.tmp.mpg"
44
45
  end
45
46
 
46
47
  # called from the UI...
48
+ # only for transcoding.
47
49
  def get_bat_commands these_settings, this_from_file, to_here_final_file, start_here = nil, end_here = nil, dvd_title_track = "1", delete_partials = false, require_deletion_entry = false
48
50
  combined = EdlParser.convert_incoming_to_split_sectors these_settings
49
51
  @dvd_title_track = dvd_title_track
50
52
  assert dvd_title_track
51
53
  if start_here || end_here
52
- raise 'need end and start' unless end_here && start_here
54
+ raise 'need both end and start' unless end_here && start_here
53
55
  start_here = EdlParser.translate_string_to_seconds(start_here)
54
56
  end_here = EdlParser.translate_string_to_seconds(end_here)
55
57
  combined.select!{|start, endy, type| start > start_here && endy < end_here }
@@ -74,23 +76,30 @@ class MencoderWrapper
74
76
  end
75
77
  previous_end = endy
76
78
  }
79
+ # trailer
77
80
  out += get_section previous_end, end_here || 1_000_000, false, to_here_final_file
78
81
  partials = (1..@idx).map{|n| "#{to_here_final_file}.#{n}.avi"}
79
82
  to_here_final_file = to_here_final_file + ".avi"
80
83
  if File.exist? to_here_final_file
81
- FileUtils.rm to_here_final_file # raises on deletion failure...which is what we want I think...hopefully.
84
+ p 'warning, overwriting ' + to_here_final_file
85
+ FileUtils.rm to_here_final_file # raises on deletion failure...which is what we want I think...typicaly...early warning...
82
86
  end
83
87
  out += "call mencoder #{partials.join(' ')} -o #{to_here_final_file} -ovc copy -oac copy\n"
84
88
  out += "@rem old DISABLED join way... call mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 #{partials.join(' ')} -o #{to_here_final_file}\n"
85
89
 
86
- delete_prefix = ""#delete_partials ? "" : "@rem "
90
+ delete_prefix = delete_partials ? "" : "@rem "
91
+ delete_prefix = "@rem" if am_on_developer_machine? # for ease of double checking...
87
92
 
88
- out += "@rem del #{@big_temp}\n" # LODO no @rem
93
+ out += "#{delete_prefix} del #{@big_temp_fulli}\n"
89
94
  out += "#{delete_prefix} del " + partials.join(' ') + "\n"
90
95
  out += "echo wrote (probably successfully) to #{to_here_final_file}"
91
96
  out
92
97
  end
93
98
 
99
+ def am_on_developer_machine?
100
+ Socket.gethostname =~ /roger|pack/i
101
+ end
102
+
94
103
  def get_section start, endy, should_mute, to_here_final_file
95
104
  raise 'start == end' if start == endy # should never actually happen...
96
105
  # delete 0.001 as per wiki's suggestion.
@@ -102,7 +111,7 @@ class MencoderWrapper
102
111
  if File.exist? partial_filename
103
112
  FileUtils.rm partial_filename
104
113
  end
105
- "ffmpeg -i #{@big_temp} #{codecs} -ss #{start} -t #{endy} #{partial_filename}\n"
114
+ "ffmpeg -i #{@big_temp_fulli} #{codecs} -ss #{start} -t #{endy} #{partial_filename}\n"
106
115
  end
107
116
 
108
117
  end
data/lib/mplayer_edl.rb CHANGED
@@ -19,12 +19,15 @@ This file is part of Sensible Cinema.
19
19
  require_relative 'edl_parser'
20
20
 
21
21
  class MplayerEdl
22
- def self.convert_to_edl specs, add_this_many_to_end = 0, add_this_many_to_beginning = 0, splits = []
22
+ def self.convert_to_edl specs, add_this_many_to_end = 0, add_this_many_to_beginning = 0, splits = [], extra_time_to_all = 0.0
23
23
  # simple re-map to EDL style output
24
24
  combined = EdlParser.convert_incoming_to_split_sectors specs, add_this_many_to_end, add_this_many_to_beginning, splits
25
+
25
26
  out = ''
26
27
  map = {:mute => 1, :blank => 0}
27
28
  for start, endy, type in combined
29
+ start += extra_time_to_all
30
+ endy += extra_time_to_all
28
31
  out += "#{start} #{endy} #{map[type]}\n"
29
32
  end
30
33
  out
@@ -0,0 +1,32 @@
1
+
2
+ class ShutdownHook
3
+ include java.lang.Runnable
4
+ def initialize( &block)
5
+ super()
6
+ @block=block
7
+ end
8
+ def run
9
+ @block[]
10
+ end
11
+ end
12
+
13
+ def at_exit2( &block)
14
+ hook = ShutdownHook.new( &block)
15
+ java.lang.Runtime.getRuntime.addShutdownHook(java.lang.Thread.new( hook ))
16
+ end
17
+
18
+ # LODO add button if I would ever find this useful...
19
+ def kill_processes
20
+
21
+ if OS.windows?
22
+ # this prevents people from having two processes going at once...kind of like queueing them up...
23
+ # system_original("taskkill /f /im mencoder.exe 2>NUL") # todo...is there a better way?
24
+ # system_original("taskkill /f /im ffmpeg.exe 2>NUL")
25
+ # system_original("taskkill /f /im smplayer_portable.exe 2>NUL")
26
+ # system_original("taskkill /f /im mplayer.exe 2>NUL")
27
+ end
28
+ end
29
+
30
+ at_exit2 {
31
+ kill_processes # just in case
32
+ }
@@ -52,7 +52,7 @@ module SubtitleProfanityFinder
52
52
 
53
53
  profanities = {'hell' => ['he..', true],
54
54
  'g' +
55
- 'o' + 100.chr => 'deity', 'g' +
55
+ 'o' + 100.chr => '...', 'g' +
56
56
  111.chr +
57
57
  100.chr +
58
58
  's' => 'deitys',
@@ -63,8 +63,12 @@ module SubtitleProfanityFinder
63
63
  99.chr +
64
64
  107.chr =>
65
65
  'f...',
66
+ 'sex' => 'sex',
67
+ 'genital' => 'genital', 'make love' => 'make love',
68
+ 'making love' => 'making love',
69
+ 'love mak' => 'love mak',
66
70
  'bi' +
67
- 'tc' + 104.chr => 'b.....',
71
+ 'tc' + 104.chr => 'b....',
68
72
  'bas' +
69
73
  'ta' + 'r' + 100.chr => 'ba.....',
70
74
  ((arse = 'a' +
@@ -73,9 +77,9 @@ module SubtitleProfanityFinder
73
77
  'ole' => 'a..h...',
74
78
  arse + 'wipe' => 'a..w....',
75
79
  'breast' => 'br....',
76
- 'jesus' => 'jes..',
80
+ 'jesus' => 'l...',
77
81
  'chri' +
78
- 'st'=> ['chri..', true], # allow for christian [?]
82
+ 'st'=> ['chr...', true], # allow for christian[ity] [good idea or not?]
79
83
  'a realllly bad word' => ['test bad word', true]
80
84
  }
81
85
 
@@ -145,7 +149,11 @@ module SubtitleProfanityFinder
145
149
  sanitized_glop.gsub!(prof2, sanitized2)
146
150
  end
147
151
  end
148
-
152
+
153
+ # because we have duplicate's for the letter l/i, refactor [[[profanity]]]
154
+ sanitized_glop.gsub!(/\[+/, '[')
155
+ sanitized_glop.gsub!(/\]+/, ']')
156
+
149
157
  # extract timing info
150
158
  timing_line = glop.split("\n").first.strip
151
159
  timing_line =~ /((\d\d:\d\d:\d\d),(\d\d\d) --> (\d\d:\d\d:\d\d),(\d\d\d))/
data/lib/swing_helpers.rb CHANGED
@@ -41,7 +41,11 @@ module SensibleSwing
41
41
  block.call
42
42
  rescue Exception => e
43
43
  puts 'got fatal exception thrown in button [ignoring]', e, e.class
44
+ if $VERBOSE
45
+ puts e.backtrace, e
46
+ else
44
47
  puts e.backtrace[0], e
48
+ end
45
49
  end
46
50
  end
47
51
  self
data/spec/notes CHANGED
@@ -1,15 +1,339 @@
1
1
  up next:
2
- lighning exact frame to compare the two fulli's...and the DVD, and mplayer :P
2
+
3
+ == ts vs. mkv transcoding ==
4
+ mencoder fails c. mkv, succeeds c. ts (editing seems to succeed overall [?])
5
+ I think if I *assume* stretching...hmm...it'll probably be pretty close...hmm...
6
+
7
+ == OSOH ==
8
+ this one seems to show that the makemkv == ts == 29.97
9
+ 01:53:11.31, start: 0.000000 mkv
10
+ ts 01:53:11.26, start: 600.000000 (essentially the same as above)
11
+ makemkv11 01:53:11.31
12
+ ts 11: 01:53:11.26
13
+ VLC DVD sum: 1:53:05 -> 1:53:11.8
14
+ makemkv is quite close to @29.97 fps
15
+ ffprobe -show_packets title00.ts
16
+ 7391.234311 -> 2:03:11.2 # oh that's comforting LOL
17
+ only has one demux_mpg: 24000/1001fps progressive NTSC content detected, switching framerate.
18
+ at the beginning
19
+
20
+ == C ==
21
+ this one seems to show makemkv == (ts+0.2s) == 29.97
22
+
23
+ vlc DVD sum 2:10:56 (-> 2:11:03.9'ish)
24
+ so this time mkv was 29.97 fps accurate less 0.2s?
25
+
26
+
27
+ AVS says ts and mkv off by 0.2s
28
+
29
+ mkv 02:11:03.84, start: 0.000000
30
+ AVS says it's 2:11:03.778
31
+ maybe lightning strike 2:11:45.096
32
+ 720x480 [PAR 32:27 DAR 16:9], 8000 kb/s, PAR 186:157 DAR 279:157, 29.97 fps, 59.94 tbr, 1k tbn, 59.94 tbc (default)
33
+ you'd think that'd be ok...hmm...
34
+ or do the players trust it too mightily or something... [?]
35
+ mediainfo: Frame rate : 29.970 fps
36
+
37
+ mplayer: VIDEO: [MPG2] 720x480 0bpp 59.940 fps 8000.0 kbps (976.6 kbyte/s)
38
+ with no switching content messages...so I'm guessing makemkv just maps the given frames into mkv slots [?]
39
+ that should be ok...unless it's getting its math wrong somehow...
40
+
41
+ NB: had 4 back and forths telecined to progressive [I imagine telecined...]
42
+ (also had at least one mplayer split)
43
+
44
+ ts forceidx: 02:24:10.50 # 12 minutes too far! gah!
45
+ ts idx: 02:24:10.50 # again!
46
+
47
+ mkv11 02:11:03.84
48
+ mediainfo: 2h 11mn yea
49
+ ts11
50
+ Processed 188659 video frames
51
+ 02:11:03.62
52
+ ts 02:11:03.62, start: 600.000000
53
+ start 600? huh?
54
+ vob [ffmpeg?]
55
+ 02:11:03.77, start: 1.000000
56
+ edited.avi 02:11:03.38
57
+ forceidx.yo.avi (mencoder)
58
+ 02:11:03.40, start: 0.000000
59
+
60
+ c.mplayerdump.mpg [in AVS] sum 2:11:04.89
61
+ lightning: 2:10:45.079 (non AviDemux, so might be spot on)
62
+ HBcli on dvd: handbrakecli --scan -i e:\
63
+ 02:10:56
64
+ so makemkv is perfect @29.97 on this one?
65
+ fulli
66
+ title00.ts.edited.fulli_unedited.tmp.mpg 02:11:03.05, start: 0.233367
67
+
68
+ maybe some are stripping trailing blackness? (about 2s'ish)
69
+ mplayer dvd lightning: 2:10:36.0
70
+ Warning! FPS changed 23.976 -> 29.970
71
+ 4364.7 it has a break in it though, looks like it anyway
72
+
73
+ avi 02:11:03.38, start: 0.000000
74
+
75
+ apparently had 24 telecined frames (maybe some more at the very beginning...)
76
+ if those were assumed to have been 23.97fps, but were 29.97 fps 25% additive, or about 0.25s I guess
77
+ might explain difference mkv and ts...
78
+
79
+ hb ffmpeg sum: 02:11:04.60 [ai ai]
80
+ lightning AVS: 2:10:44.9 (about 0.3 early ?)
81
+
82
+ lightning
83
+ ts AVS: 02:10:45.302 ish
84
+ mkv avs: 02:10:45.0 ish
85
+ also avs says the mkv is 0.2s longer, really pretty close to ffmpeg's thing...
86
+
87
+ == snow white DVD ==
88
+ has a plus 5 freako
89
+ the TS *might* be right on, which would imply ts == 29.97, mkmv = ts*30.03
90
+
91
+ wall time latest: wrist watch started a tidge behind, ended up even further behind (powerdvd)
92
+ 1:23:32 sum powerDVD
93
+ *except* when you scan to the end, then it's 1:23:28 again
94
+ my guess is powerDVD isn't keeping track except internally...
95
+ seeking 1HR "good night" [good] night (her last one)
96
+ yep it's totally internally inconsistent. Fascinating.
97
+
98
+ TODO hb it straight [?]
99
+
100
+ 120180 frames in the ts
101
+ -> 29.97 1:46:50 <sigh>.
102
+ 120183 frames in the mkv <sigh> LOL
103
+
104
+ VLC
105
+ sum DVD: 1:23:28 sum (-> 1:23:33.0 TS) -> 1:23:38.0 freako
106
+ mplayer makemkv: A:5018.0 == 1:23:38 sum
107
+ oh I feel strange...
108
+ too many mplayer splits in this one...
109
+ mpchc 1:23:28 sum DVD
110
+ mpchc 1:23:28 sum mkv [huh? this mkv thing is confusing me...]
111
+ check subtitiles +- file against file, DVD snow white
112
+ ffmpeg ts time: 01:23:32.49
113
+ ffmpeg mkv: 01:23:38.07 differs from mpchc ? differs from VLC makemkv? TODO
114
+ vlc mkv: 1:23:38
115
+ vlc ts: no times
116
+ ffmpeg mkv: 01:23:38.07
117
+ ffmpeg ts: 01:23:32.49
118
+ It appears that makemkv is making certain assumptions that may not be true here?
119
+
120
+ makemkv says "length shall be 1:23:11" (oopsy)
121
+ mediainfo mkv: 1h 23mn 38s 70ms
122
+
123
+ demux_mpg: 24000/1001fps progressive NTSC content detected, switching framerate. only one
124
+ V: 0.0 0/ 0 ??% ??% ??,?% 0 0
125
+
126
+ hmm...I'm beginning to wonder if maybe some are more honest than others... ?
127
+
128
+ mac dvd player -> 1:23:38 "wall time" [?] anyway it was in lock step,
129
+ either 28 or 38 yipes probably...28 I'm thinking bit discrepancy in there
130
+
131
+ WMP wall time at one hour was 3s ahead of it now...
132
+ which doesn't agree with mac dvd player? when OSOH they *did* agree? huh?
133
+ how did this not agree with mac dvd player? what? that's not true, that's impossible LOL
134
+ end WMP wall time: 1:23:32.8'ish ... sniff ... what the...
135
+ WMP "says" sum is 1:23:28 -> 1:23:33.0'ish
136
+
137
+ top of hill "Of one love" mplayer
138
+ mkv: 01:20:35.38
139
+ ts: 01:20:29.8 # 30.5 ? hard to tell... it's pretty close at least...
140
+ "should be" 01:20:30,831 NB the blu-ray subs seemed way different... blu-ray 01:20:14,276 whoa [3 different blu-ray subs agree...]
141
+ powerdvd: 1:20:26 for that one
142
+
143
+ == iq ==
144
+
145
+ this one mkv seems to have an extra second in there...
146
+ 1h 35mn 49s 596ms and "expected" it errantly to be: 1:35:52.4...it's like half and half!
147
+ ts is 1h 35mn 47s 41ms which might be right on compared to the DVD
148
+ so this one implies that makemkv is just messed up? huh? ts seems fine again...
149
+
150
+ maybe sometimes mkv stretches it double in error somehow?
151
+ maybe it has *both* problems...LOL
152
+
153
+ wall time seems to be 29.97 (DVD player reports 30) first hour at least
154
+ at 1:09 it appeared to be like 6s "back", though makemkv may have interfered slightly...
155
+ at 1:20 7s
156
+ sum: 1:35:49.14'ish walltime
157
+
158
+ so maybe normal subtitles are from rips, which have been transcoded to precisely 23.97 fps,
159
+ so my files aren't precisely that...we shall see if this hypothesis holds true...
160
+
161
+ V: 1.0 22/ 22 17302% 18% 0.0% 0 0
162
+
163
+
164
+ demux_mpg: 30000/1001fps NTSC content detected, switching framerate.
165
+ V: 1.0 23/ 23 10748% 10% 0.0% 0 0
166
+
167
+ mplayer for the mkv seemed to creep up? somehow it seemed to get messed up...
168
+ TODO avidemux/quality editor for these various and its frames...what the?
169
+ replaying mkv might not work so hot...
170
+ maybe I can remux somehow first... [?]
171
+ maybe it's because of all those transitions which caused lossy-stuff within the mkv... [?]
172
+
173
+ can I use handbrake on mkv output? does it look better? is it just this one dvd?
174
+ does the mkv match DVD
175
+
176
+ mplayerdump.mencoderforceidx sum: 1:39:17 (4 minutes extra...somethin went wrong...)
177
+ DVD sum: 1:35:41 -> 1:35:46.7'ish, so maybe we're close...round up LOL
178
+ mkv sum: 1:35:49 [partially expected, partially huh?]
179
+ mkv mac vlc 1:25:20 ish [ugh]
180
+ originally reports it as 1:35:35 in its dashboard, this is without daspi
181
+ mac
182
+ DVD player: 1:35:41
183
+ converted: sum should be 1:35:46.7
184
+ and if again reconverted -> 1:35:52.4 [!]
185
+ mplayerx cannot play DVD/seek right
186
+ mplayerx on makemkv sum: 1:35:53
187
+ vlc on makemkv sum 1:35:49
188
+ mplayer command line makemkv end/sum TS: A:5749.5 == 1:35:49.5
189
+ seems zactly the same
190
+ what about ffmpeg against that thing?
191
+ ffprobe mkv
192
+ 2810.792000 last video pts -> 46:50 or something [?]
193
+ ffmpeg mkv->ts file: 01:35:47.09
194
+ ffmpeg mkv: 01:35:49.59
195
+ * maybe just this one is messed up? *
196
+
197
+ AC3 can apparently have 6 channels: Decoding AC3 stream (track 2): Bitrate: 448Kbps Sample Rate: 48KHz Channels: 6
198
+ Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s Metadata: title : 3/2+1
199
+
200
+ midentify mkv: 1:35:49.6
201
+ midentify ts: 1:00:00
202
+ VLC doesn't get any timing info from it
203
+
204
+ handbrake seems to be "smart" about it
205
+ mkv "1:35:49" "results in 1:35:45"
206
+ and ts "1:35:45" results in "1:35:45"
207
+ except transcoded is 49 and 47 s. What? (47 might be expected...hmm...)
208
+
209
+ == mplayer EDL ==
210
+
211
+ this works, 1:00 type timestamps are ignored
212
+ # a comment
213
+ 10 15 0 # a comment2 also works
214
+
215
+ mplayer crash on edl 10 15 0 wordworld welcome to wordworld mac+pc dvdnav (dvd ok) title 3
216
+
217
+ ====
3
218
 
4
219
  http://www.kdenlive.org/forum/xml-format-and-edls kdenlive supports EDL, apparently (video editor)
5
220
 
6
221
  == upconvert mplayer ==
7
- guess I prefer mplayer to VLC at this point anyway <sigh> EDL is just better...
222
+ should I set it abovenormal too?
223
+
224
+ TODO compare with mpc-hc with ffdshow...same?
225
+
226
+ guess I prefer mplayer to VLC at this point anyway <sigh> EDL support is just better...
8
227
  is "-mc". It means "max A-V time correction per frame", and defaults to 0.01. For good input, you can go down even to 0.0001, but 0.001 i
9
228
  -vop denoise3d
10
229
  -vop hqdn3d
11
230
  http://freshmeat.net/articles/fine-tuning-mplayer
12
231
 
232
+ -sws 9 lancosz
233
+
234
+ http://forum.doom9.org/archive/index.php/t-140961.html:
235
+ says "if -ssf ls=90 doesn't sharpen, try a real unsharp filter"
236
+ http://web.archiveorange.com/archive/v/JbcLEyHOOOqckAEhZ7Hd says the same thing. broken?
237
+ LODO see if sharpen is working at all even
238
+
239
+ http://www.neowin.net/forum/topic/422992-a-how-to-guide-upconverting-video-using-ffdshow:
240
+ denoise3d hq
241
+ luma 7 chroma 7 time 5
242
+ "specify size 1280x768" "no auto aspect correction" TODO why?
243
+ might not matter? might let it "go full screen 4 sure"?
244
+ lancozsa 10
245
+ "Luma sharpen" and "Chroma sharpen" to 1.50 (out of 2.0)
246
+
247
+ http://blog.thewombat.org/2008/11/how-to-use-vlc-096-as-upscaling-media.html
248
+ "add a video post processing filter"
249
+ "add a video scaling filter"
250
+ "add sharpen as a filter" (manually)
251
+ set sharpen strength to 0.15 (0.25 for hq)
252
+ "set post processing strength to 6" (lower for lesser CPU)"
253
+
254
+ No. As long as the GL renderer works with your hardware/driver combination, it's a lot better then the directx/overlay renderer.
255
+ You might want to try "gl:yuv=4:cscale=5:lscale=5" for even better rendering quality...
256
+ http://forum.doom9.org/showthread.php?p=1089768:
257
+ hardware gl: gl:yuv=4:cscale=5:lscale=5
258
+
259
+ This guy has some very aggressive sharpening parameters [LODO try out]:
260
+ http://www.nrtm.de/index.php/2010/09/11/mplayer-aggressives-scharfen/
261
+
262
+ "use the following syntax to playback DVD movies."
263
+ Code:
264
+ mplayer -pp 0 -vf-clr -vf pullup,yadif=1,hqdn3d=2:1.5:3,scale=-1:-1:0 -ssf ls=100 dvd://
265
+
266
+ Let us assume that hqdn3d=2:1.5:3 is a good way to clean up MPEG-2 and yadif=1 is a good decent de-interlacer. I would say that the following should work ok for most content.
267
+ mplayer -vf yadif=1,hqdn3d=2:1.5:3,scale=-1:-1:0
268
+ Maybe adding -ssf ls=100 will increase the sharpness of the content to bring out the details of the video. With mencoder, it is a little different on what options you can use compared to mplayer, so play around with the settings."
269
+
270
+ http://ubuntuforums.org/showthread.php?t=77329&page=6
271
+ hqdn3d=2:2:3,pp=ac
272
+ like this for anime...LOL I can see my jruby wrapper now...
273
+
274
+ hqdn3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]
275
+
276
+ http://forum.doom9.org/archive/index.php/t-79335.html lists some less aggressive hqdn3d options...
277
+
278
+ #This sets the postprocessing into overdrive using all possible spare cpu cycles to make the movie look better
279
+ autoq=100
280
+ vf=pp=de,hqdn3d
281
+
282
+ http://freshmeat.net/articles/fine-tuning-mplayer:
283
+ -mc 0.001 # except for slow CPU oh my! 0.5? seconds per frame...I guess this in conjunction with autosync...
284
+ hqdn3d=3.5:7:5 # never > 15 for the last number
285
+ comment:
286
+ -vop pp=hb:y/vb:y and only on low-res (no post processing for HQ videos...hmm...)
287
+
288
+ -autosync 1 (or more) might resync my cruddy DVD's... LODO
289
+
290
+ more [open]gl: "use these options" http://forum.doom9.org/archive/index.php/t-132325.html hardware renderer
291
+
292
+ -vo gl by itself causes extreme stuttering and 100% cpu use on the work desktop...maybe not worth it, eh?
293
+
294
+ ===
295
+ hqdn3d=7:7:5 # 3.5:7:5 for mpeg??
296
+ -sws 9
297
+ -vop scale=10 # lancosz inensity 10...I think...huh?
298
+ -ssf ls=75 # out of 100? scaling sharpen filter (luma) http://www.linuxquestions.org/questions/linux-software-2/how-can-i-get-top-quality-video-with-mencoder-636846/ uses 100 ...
299
+ -ssf cs=75 # scaling sharpen filter chroma
300
+
301
+ post processing options:
302
+ "-autoq -vop pp"
303
+ "-vop pp=ab/hl"
304
+ "-pp 6" # deprecated
305
+
306
+ ummm...does lanczos accept -ssf ls=75.0 -ssf cs=75.0 ?? or do I still need to add an unsharpen filter somehow?
307
+
308
+ [swscaler @ 013a25f4]using unscaled yuv420p -> yuv420p special converter
309
+ VO: [directx] 720x480 => 720x540 Planar YV12
310
+ is definitely bad :P
311
+
312
+ none at all looks...pretty good...
313
+
314
+ https://discussions.apple.com/thread/1771812?threadID=1771812
315
+ -zoom -sws 9 -vf scale=1280:720:::9:10 -ssf ls=74.0 -ssf cs=7.0
316
+ +- for audio: -ac hwac3 hwdts
317
+ how useful is post processing?
318
+ # do I need hqdn3d at all here?
319
+ do I run well on those images?
320
+ is lancosz 10 best?
321
+
322
+ -vf spp might help, use lots of cpu [?]
323
+
324
+ === current sum ===
325
+ mplayer filename -autoq 6 -sws 9 -vf hqdn3d=7:7:5,pp,scale=1280:-1:0:0:10 -ssf ls=75.0 -ssf cs=75.0
326
+ or
327
+ -sws 9 -vf hqdn3d=7:7:5,scale=1280:-1:0:0:10 -ssf ls=75.0 -ssf cs=75.0
328
+ or
329
+ -sws 9 -vf hqdn3d=2:1.5:3,scale=1280:-1:0:0:10 -ssf ls=75.0 -ssf cs=75.0
330
+
331
+ ==== prop ====
332
+ "upscaling"
333
+ http://www.neowin.net/forum/topic/615696-permanent-upconversion-in-software/
334
+ http://forum.videohelp.com/threads/280895-Is-there-computer-dvd-software-that-will-upconvert-regular-dvds
335
+ http://forums.cnet.com/7723-7596_102-285455.html
336
+
13
337
  == WMC/other EDL plugins ==
14
338
 
15
339
  http://superuser.com/questions/34128/xbmc-with-media-player-classic-home-cinema
@@ -324,7 +648,7 @@ mplayer.raw: mplayer -dumpstream dvd://1 -dvd-device d: -dumpfile dvdout.mpg
324
648
  a147eb922cb00eff5d3a25e155390380 *mplayer.dumpstream.2.mpg
325
649
  total: 188687 frames 2:11:09.828
326
650
  fading in c: frame 111
327
- lightning hits ground: 188106 02:10:45.595 0.375
651
+ lightning hits ground: 188106 02:10:45.595 (vlc off by 0.375 ?)
328
652
 
329
653
  they all have the beginning dot of the poof at 228...
330
654
 
@@ -347,7 +671,7 @@ makemkv -c-: 11 MB/s, [says 4.5x] no pauses, 13.5 MB/s, 14.5 MB/s, seems to grow
347
671
  opens very slowly in avidemux at home...feels longer...3 minutes to load each time?
348
672
  2:11:08.618 188658 frames total
349
673
  had to set it to 24 frames [? huh it worked once?]
350
- no video, audio jerky r7149
674
+ no video, audio jerky, r7149
351
675
 
352
676
  makemkv -> tsmuxer -> avidemux:
353
677
  188657 frames total
@@ -522,7 +846,7 @@ handbrake md5's/sizes don't match...
522
846
  109243 -rw-r--r-- 1 packrd Administ 223727993 May 25 13:20 Sintel_NTSC-2.dvdcss.2.m4v
523
847
  109243 -rw-r--r-- 1 packrd Administ 223728412 May 25 13:47 Sintel_NTSC-2.dvdcss.3.m4v
524
848
 
525
- == timing dvd player time versus clock time: ==
849
+ == timing dvd player time versus clock/wall time: ==
526
850
 
527
851
  at 1:44:00 or so I seemed about 6s ahead. yup yup.
528
852
  at end, I had like 1:53:20'ish'ish [?] (ok probably like 1:53:11 but who knows for sure :P)
@@ -950,7 +1274,7 @@ hulu
950
1274
  youtube jonah: appears lower quality?
951
1275
  15: wash your hands before you [eat]
952
1276
  30: yes well [you] and ...
953
- 45: big smile, turns [to his right] after duck
1277
+ 45: big smile, turns [to his right]
954
1278
 
955
1279
  powerdvd 8:
956
1280
  15: wash your hands before you [eat] --- wash your hands [before] you eat --- wash your [hands] before you eat LOL
@@ -992,8 +1316,7 @@ saints and soldiers (chrome work netflix):
992
1316
  1:30: "copyright 2003...all rights reserved" is about in the middle, maybe barely above
993
1317
 
994
1318
  jonah if you watch it all the way through
995
- 30: my uncle [was] a big star
996
-
1319
+ 30: my uncle [was] a big star
997
1320
 
998
1321
  VLC jonah_edit.tmp.mpg
999
1322
  15: (on camel) do not fight, do not cheat [wash] your hands