aviglitch 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +6 -1
- data/VERSION +1 -1
- data/bin/datamosh +3 -3
- data/lib/aviglitch.rb +6 -1
- data/lib/aviglitch/base.rb +0 -5
- data/lib/aviglitch/frames.rb +2 -3
- data/spec/datamosh_spec.rb +18 -25
- metadata +17 -5
data/ChangeLog
CHANGED
@@ -1,9 +1,14 @@
|
|
1
|
+
== 0.1.0 / 2010-07-09
|
2
|
+
|
3
|
+
* Minor version up.
|
4
|
+
* Fixed bugs with Ruby 1.8.7.
|
5
|
+
* Fixed the synchronization problem with datamosh cli.
|
6
|
+
|
1
7
|
== 0.0.3 / 2010-07-07
|
2
8
|
|
3
9
|
* Changed AviGlitch::Frames allowing to slice and concatenate frames
|
4
10
|
(like Array).
|
5
11
|
* Changed datamosh cli to accept multiple files.
|
6
|
-
* And some tiny fixes.
|
7
12
|
|
8
13
|
== 0.0.2 / 2010-05-17
|
9
14
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/bin/datamosh
CHANGED
@@ -10,7 +10,7 @@ all = false
|
|
10
10
|
|
11
11
|
opts = OptionParser.new do |opts|
|
12
12
|
opts.banner = "datamosh - AviGlitch's datamoshing video generator."
|
13
|
-
opts.define_head "Usage: #{File.basename($0)}
|
13
|
+
opts.define_head "Usage: #{File.basename($0)} [options] file [file2 ...]"
|
14
14
|
opts.separator "Options:"
|
15
15
|
opts.on("-o", "--output [OUTPUT]",
|
16
16
|
"Output the video to OUTPUT (./out.avi by default)") do |f|
|
@@ -34,12 +34,12 @@ end
|
|
34
34
|
|
35
35
|
a = AviGlitch.open input.shift
|
36
36
|
a.glitch_with_index :keyframe do |frame, i|
|
37
|
-
(!all && i == 0) ? frame :
|
37
|
+
(!all && i == 0) ? frame : nil # keep the first frame
|
38
38
|
end
|
39
39
|
input.each do |file|
|
40
40
|
b = AviGlitch.open file
|
41
41
|
b.glitch :keyframe do |frame|
|
42
|
-
|
42
|
+
nil
|
43
43
|
end
|
44
44
|
a.frames.concat b.frames
|
45
45
|
end
|
data/lib/aviglitch.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'readline'
|
4
|
+
require 'pathname'
|
5
|
+
require 'stringio'
|
1
6
|
require 'aviglitch/base'
|
2
7
|
require 'aviglitch/frame'
|
3
8
|
require 'aviglitch/frames'
|
@@ -29,7 +34,7 @@ require 'aviglitch/frames'
|
|
29
34
|
#
|
30
35
|
module AviGlitch
|
31
36
|
|
32
|
-
VERSION = '0.0
|
37
|
+
VERSION = '0.1.0'
|
33
38
|
|
34
39
|
class << self
|
35
40
|
##
|
data/lib/aviglitch/base.rb
CHANGED
data/lib/aviglitch/frames.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'stringio'
|
2
|
-
|
3
1
|
module AviGlitch
|
4
2
|
|
5
3
|
# Frames provides the interface to access each frame
|
@@ -230,7 +228,8 @@ module AviGlitch
|
|
230
228
|
##
|
231
229
|
# Removes frame(s) at the given index or the range (same as []).
|
232
230
|
# Inserts the given Frame or Frames's contents into the removed index.
|
233
|
-
def []= *args
|
231
|
+
def []= *args
|
232
|
+
value = args.pop
|
234
233
|
b, l = get_beginning_and_length *args
|
235
234
|
ll = l.nil? ? 1 : l
|
236
235
|
head = self.slice(0, b)
|
data/spec/datamosh_spec.rb
CHANGED
@@ -6,10 +6,10 @@ describe AviGlitch, 'datamosh cli' do
|
|
6
6
|
FileUtils.mkdir OUTPUT_DIR unless File.exist? OUTPUT_DIR
|
7
7
|
@in = FILES_DIR + 'sample.avi'
|
8
8
|
@out = OUTPUT_DIR + 'out.avi'
|
9
|
-
|
10
|
-
|
11
|
-
).realpath
|
12
|
-
@cmd = "ruby %s -o %s " % [datamosh, @out]
|
9
|
+
here = File.dirname(__FILE__)
|
10
|
+
lib = Pathname.new(File.join(here, '..', 'lib')).realpath
|
11
|
+
datamosh = Pathname.new(File.join(here, '..', 'bin/datamosh')).realpath
|
12
|
+
@cmd = "ruby -I%s %s -o %s " % [lib, datamosh, @out]
|
13
13
|
end
|
14
14
|
|
15
15
|
after :each do
|
@@ -21,39 +21,32 @@ describe AviGlitch, 'datamosh cli' do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'should correctly process files' do
|
24
|
+
a = AviGlitch.open @in
|
25
|
+
keys = a.frames.inject(0) do |c, f|
|
26
|
+
c += 1 if f.is_keyframe?
|
27
|
+
c
|
28
|
+
end
|
29
|
+
total = a.frames.size
|
30
|
+
a.close
|
31
|
+
|
24
32
|
system [@cmd, @in].join(' ')
|
25
33
|
o = AviGlitch.open @out
|
26
|
-
o.frames.
|
27
|
-
|
28
|
-
f.data.should_not match /^\000+$/
|
29
|
-
elsif f.is_keyframe?
|
30
|
-
f.data.should match /^\000+$/
|
31
|
-
end
|
32
|
-
end
|
34
|
+
o.frames.size.should == total - keys + 1
|
35
|
+
o.frames.first.is_keyframe?.should be true
|
33
36
|
o.close
|
34
37
|
AviGlitch::Base.surely_formatted?(@out, true).should be true
|
35
38
|
|
36
39
|
system [@cmd, '-a', @in].join(' ')
|
37
40
|
o = AviGlitch.open @out
|
38
|
-
o.frames.
|
39
|
-
|
40
|
-
f.data.should match /^\000+$/
|
41
|
-
end
|
42
|
-
end
|
41
|
+
o.frames.size.should == total - keys
|
42
|
+
o.frames.first.is_keyframe?.should be false
|
43
43
|
o.close
|
44
44
|
AviGlitch::Base.surely_formatted?(@out, true).should be true
|
45
45
|
|
46
46
|
system [@cmd, @in, @in, @in].join(' ')
|
47
|
-
a = AviGlitch.open @in
|
48
47
|
o = AviGlitch.open @out
|
49
|
-
o.frames.size.should ==
|
50
|
-
o.frames.
|
51
|
-
if f.is_keyframe? && i == 0
|
52
|
-
f.data.should_not match /^\000+$/
|
53
|
-
elsif f.is_keyframe?
|
54
|
-
f.data.should match /^\000+$/
|
55
|
-
end
|
56
|
-
end
|
48
|
+
o.frames.size.should == 1 + (total - keys) * 3
|
49
|
+
o.frames.first.is_keyframe?.should be true
|
57
50
|
o.close
|
58
51
|
AviGlitch::Base.surely_formatted?(@out, true).should be true
|
59
52
|
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aviglitch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- ucnv
|
@@ -9,7 +15,7 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-09 00:00:00 +09:00
|
13
19
|
default_executable: datamosh
|
14
20
|
dependencies: []
|
15
21
|
|
@@ -50,21 +56,27 @@ rdoc_options:
|
|
50
56
|
require_paths:
|
51
57
|
- lib
|
52
58
|
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
53
60
|
requirements:
|
54
61
|
- - ">="
|
55
62
|
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
56
66
|
version: "0"
|
57
|
-
version:
|
58
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
59
69
|
requirements:
|
60
70
|
- - ">="
|
61
71
|
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
62
75
|
version: "0"
|
63
|
-
version:
|
64
76
|
requirements: []
|
65
77
|
|
66
78
|
rubyforge_project:
|
67
|
-
rubygems_version: 1.3.
|
79
|
+
rubygems_version: 1.3.7
|
68
80
|
signing_key:
|
69
81
|
specification_version: 3
|
70
82
|
summary: A Ruby library to destroy your AVI files.
|