aviglitch 0.1.4 → 0.1.5
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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.rspec +1 -1
- data/.travis.yml +1 -2
- data/ChangeLog.md +5 -0
- data/README.md +2 -0
- data/aviglitch.gemspec +1 -4
- data/lib/aviglitch.rb +2 -3
- data/lib/aviglitch/base.rb +3 -5
- data/lib/aviglitch/frames.rb +12 -9
- data/spec/spec_helper.rb +3 -0
- metadata +80 -102
- data/lib/aviglitch/tempfile.rb +0 -8
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d8610f1301a71bd6c5a5d9e1105446c59cf85096
|
4
|
+
data.tar.gz: e1f32645446c888568c31310edeb69b261505438
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8b8181d9fd7890662ed170a8306acd06afec3192817beee8b2a7f9190fcb2368fe681d8b9a281ee7f8a9fd3bf159862249f7ed7390f91ee951fc684505c136c0
|
7
|
+
data.tar.gz: 7061df30ab5357bbb9ed4b5a78358946cc0a4fd378e55541bf03b5f2b61619cda82de26e85a923dcd19ac946613aad4ddbade6b11152ff3e0d02faa88706a346
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
-c
|
2
|
-
|
2
|
+
--format documentation
|
data/.travis.yml
CHANGED
data/ChangeLog.md
CHANGED
data/README.md
CHANGED
data/aviglitch.gemspec
CHANGED
@@ -8,11 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = AviGlitch::VERSION
|
9
9
|
spec.authors = ["ucnv"]
|
10
10
|
spec.email = ["ucnvvv@gmail.com"]
|
11
|
-
spec.description = %q{AviGlitch destroys your AVI files.
|
12
|
-
This library provides ways to manipulate data in each AVI frames.
|
13
|
-
It can easily generate keyframes-removed video known as "datamoshing".
|
14
|
-
}
|
15
11
|
spec.summary = %q{A Ruby library to destroy your AVI files.}
|
12
|
+
spec.description = spec.summary
|
16
13
|
spec.homepage = "http://ucnv.github.com/aviglitch/"
|
17
14
|
spec.license = "MIT"
|
18
15
|
|
data/lib/aviglitch.rb
CHANGED
@@ -6,7 +6,6 @@ require 'stringio'
|
|
6
6
|
require 'aviglitch/base'
|
7
7
|
require 'aviglitch/frame'
|
8
8
|
require 'aviglitch/frames'
|
9
|
-
require 'aviglitch/tempfile'
|
10
9
|
|
11
10
|
# AviGlitch provides the ways to glitch AVI formatted video files.
|
12
11
|
#
|
@@ -32,7 +31,7 @@ require 'aviglitch/tempfile'
|
|
32
31
|
#
|
33
32
|
module AviGlitch
|
34
33
|
|
35
|
-
VERSION = '0.1.
|
34
|
+
VERSION = '0.1.5'
|
36
35
|
|
37
36
|
BUFFER_SIZE = 2 ** 24
|
38
37
|
|
@@ -40,7 +39,7 @@ module AviGlitch
|
|
40
39
|
##
|
41
40
|
# Returns AviGlitch::Base instance.
|
42
41
|
# It requires +path_or_frames+ as String or Pathname, or Frames instance.
|
43
|
-
def
|
42
|
+
def open path_or_frames
|
44
43
|
if path_or_frames.kind_of?(Frames)
|
45
44
|
path_or_frames.to_avi
|
46
45
|
else
|
data/lib/aviglitch/base.rb
CHANGED
@@ -17,7 +17,7 @@ module AviGlitch
|
|
17
17
|
def initialize path
|
18
18
|
File.open(path, 'rb') do |f|
|
19
19
|
# copy as tempfile
|
20
|
-
@file = Tempfile.
|
20
|
+
@file = Tempfile.new 'aviglitch', binmode: true
|
21
21
|
f.rewind
|
22
22
|
while d = f.read(BUFFER_SIZE) do
|
23
23
|
@file.print d
|
@@ -28,7 +28,6 @@ module AviGlitch
|
|
28
28
|
raise 'Unsupported file passed.'
|
29
29
|
end
|
30
30
|
@frames = Frames.new @file
|
31
|
-
# I believe Ruby's GC to close and remove the Tempfile..
|
32
31
|
end
|
33
32
|
|
34
33
|
##
|
@@ -59,7 +58,7 @@ module AviGlitch
|
|
59
58
|
# It also requires a block. In the block, you take the frame data
|
60
59
|
# as a String parameter.
|
61
60
|
# To modify the data, simply return a modified data.
|
62
|
-
#
|
61
|
+
# Without a block it returns Enumerator, with a block it returns +self+.
|
63
62
|
def glitch target = :all, &block # :yield: data
|
64
63
|
if block_given?
|
65
64
|
@frames.each do |frame|
|
@@ -114,6 +113,7 @@ module AviGlitch
|
|
114
113
|
self.glitch :keyframe do |f|
|
115
114
|
nil
|
116
115
|
end
|
116
|
+
self
|
117
117
|
end
|
118
118
|
|
119
119
|
##
|
@@ -147,8 +147,6 @@ module AviGlitch
|
|
147
147
|
is_io = file.respond_to?(:seek) # Probably IO.
|
148
148
|
file = File.open(file, 'rb') unless is_io
|
149
149
|
begin
|
150
|
-
file.seek 0, IO::SEEK_END
|
151
|
-
eof = file.pos
|
152
150
|
file.rewind
|
153
151
|
unless file.read(4) == 'RIFF'
|
154
152
|
answer = false
|
data/lib/aviglitch/frames.rb
CHANGED
@@ -19,8 +19,11 @@ module AviGlitch
|
|
19
19
|
include Enumerable
|
20
20
|
|
21
21
|
# :stopdoc:
|
22
|
+
|
23
|
+
##
|
22
24
|
SAFE_FRAMES_COUNT = 150000
|
23
25
|
@@warn_if_frames_are_too_large = true
|
26
|
+
|
24
27
|
# :startdoc:
|
25
28
|
|
26
29
|
attr_reader :meta
|
@@ -61,7 +64,7 @@ module AviGlitch
|
|
61
64
|
# It returns Enumerator if a block is not given.
|
62
65
|
def each
|
63
66
|
if block_given?
|
64
|
-
temp = Tempfile.new 'frames'
|
67
|
+
temp = Tempfile.new 'frames', binmode: true
|
65
68
|
frames_data_as_io(temp, Proc.new)
|
66
69
|
overwrite temp
|
67
70
|
temp.close!
|
@@ -86,7 +89,7 @@ module AviGlitch
|
|
86
89
|
end
|
87
90
|
|
88
91
|
def frames_data_as_io io = nil, block = nil #:nodoc:
|
89
|
-
io = Tempfile.new('tmep') if io.nil?
|
92
|
+
io = Tempfile.new('tmep', binmode: true) if io.nil?
|
90
93
|
@meta = @meta.select do |m|
|
91
94
|
@io.pos = @pos_of_movi + m[:offset] + 8 # 8 for id and size
|
92
95
|
frame = Frame.new(@io.read(m[:size]), m[:id], m[:flag])
|
@@ -160,12 +163,11 @@ module AviGlitch
|
|
160
163
|
def concat other_frames
|
161
164
|
raise TypeError unless other_frames.kind_of?(Frames)
|
162
165
|
# data
|
163
|
-
this_data = Tempfile.new 'this'
|
166
|
+
this_data = Tempfile.new 'this', binmode: true
|
164
167
|
self.frames_data_as_io this_data
|
165
|
-
other_data = Tempfile.new 'other'
|
168
|
+
other_data = Tempfile.new 'other', binmode: true
|
166
169
|
other_frames.frames_data_as_io other_data
|
167
|
-
this_data.
|
168
|
-
this_size = this_data.pos
|
170
|
+
this_size = this_data.size
|
169
171
|
other_data.rewind
|
170
172
|
while d = other_data.read(BUFFER_SIZE) do
|
171
173
|
this_data.print d
|
@@ -181,6 +183,7 @@ module AviGlitch
|
|
181
183
|
# close
|
182
184
|
overwrite this_data
|
183
185
|
this_data.close!
|
186
|
+
self
|
184
187
|
end
|
185
188
|
|
186
189
|
##
|
@@ -293,10 +296,9 @@ module AviGlitch
|
|
293
296
|
def push frame
|
294
297
|
raise TypeError unless frame.kind_of? Frame
|
295
298
|
# data
|
296
|
-
this_data = Tempfile.new 'this'
|
299
|
+
this_data = Tempfile.new 'this', binmode: true
|
297
300
|
self.frames_data_as_io this_data
|
298
|
-
this_data.
|
299
|
-
this_size = this_data.pos
|
301
|
+
this_size = this_data.size
|
300
302
|
this_data.print frame.id
|
301
303
|
this_data.print [frame.data.size].pack('V')
|
302
304
|
this_data.print frame.data
|
@@ -347,6 +349,7 @@ module AviGlitch
|
|
347
349
|
frame.flag = 0 if frame.is_keyframe?
|
348
350
|
end
|
349
351
|
end
|
352
|
+
self
|
350
353
|
end
|
351
354
|
|
352
355
|
##
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,97 +1,84 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: aviglitch
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 4
|
10
|
-
version: 0.1.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.5
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- ucnv
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
|
-
requirements:
|
25
|
-
- - ~>
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 9
|
28
|
-
segments:
|
29
|
-
- 1
|
30
|
-
- 3
|
31
|
-
version: "1.3"
|
32
|
-
prerelease: false
|
33
|
-
requirement: *id001
|
34
|
-
type: :development
|
11
|
+
date: 2014-12-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
35
14
|
name: bundler
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
hash: 35
|
43
|
-
segments:
|
44
|
-
- 10
|
45
|
-
- 0
|
46
|
-
version: "10.0"
|
47
|
-
prerelease: false
|
48
|
-
requirement: *id002
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
49
20
|
type: :development
|
50
|
-
name: rake
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
|
-
requirements:
|
55
|
-
- - ~>
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
|
-
segments:
|
59
|
-
- 2
|
60
|
-
- 0
|
61
|
-
version: "2.0"
|
62
21
|
prerelease: false
|
63
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
64
34
|
type: :development
|
65
|
-
name: rspec
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
|
-
requirements:
|
70
|
-
- - ~>
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
hash: 27
|
73
|
-
segments:
|
74
|
-
- 4
|
75
|
-
- 0
|
76
|
-
version: "4.0"
|
77
35
|
prerelease: false
|
78
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.0'
|
79
48
|
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
80
56
|
name: rdoc
|
81
|
-
|
82
|
-
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.0'
|
69
|
+
description: A Ruby library to destroy your AVI files.
|
70
|
+
email:
|
83
71
|
- ucnvvv@gmail.com
|
84
|
-
executables:
|
72
|
+
executables:
|
85
73
|
- datamosh
|
86
74
|
extensions: []
|
87
|
-
|
88
|
-
extra_rdoc_files:
|
75
|
+
extra_rdoc_files:
|
89
76
|
- README.md
|
90
77
|
- LICENSE
|
91
|
-
files:
|
92
|
-
- .gitignore
|
93
|
-
- .rspec
|
94
|
-
- .travis.yml
|
78
|
+
files:
|
79
|
+
- ".gitignore"
|
80
|
+
- ".rspec"
|
81
|
+
- ".travis.yml"
|
95
82
|
- ChangeLog.md
|
96
83
|
- Gemfile
|
97
84
|
- LICENSE
|
@@ -103,50 +90,41 @@ files:
|
|
103
90
|
- lib/aviglitch/base.rb
|
104
91
|
- lib/aviglitch/frame.rb
|
105
92
|
- lib/aviglitch/frames.rb
|
106
|
-
- lib/aviglitch/tempfile.rb
|
107
93
|
- spec/aviglitch_spec.rb
|
108
94
|
- spec/datamosh_spec.rb
|
109
95
|
- spec/files/sample.avi
|
110
96
|
- spec/frames_spec.rb
|
111
97
|
- spec/spec_helper.rb
|
112
|
-
has_rdoc: true
|
113
98
|
homepage: http://ucnv.github.com/aviglitch/
|
114
|
-
licenses:
|
99
|
+
licenses:
|
115
100
|
- MIT
|
101
|
+
metadata: {}
|
116
102
|
post_install_message:
|
117
|
-
rdoc_options:
|
118
|
-
- -m
|
103
|
+
rdoc_options:
|
104
|
+
- "-m"
|
119
105
|
- README.md
|
120
|
-
require_paths:
|
106
|
+
require_paths:
|
121
107
|
- lib
|
122
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
-
|
124
|
-
requirements:
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
125
110
|
- - ">="
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
version: "0"
|
131
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
|
-
requirements:
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
134
115
|
- - ">="
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
|
137
|
-
segments:
|
138
|
-
- 0
|
139
|
-
version: "0"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
140
118
|
requirements: []
|
141
|
-
|
142
119
|
rubyforge_project:
|
143
|
-
rubygems_version:
|
120
|
+
rubygems_version: 2.2.2
|
144
121
|
signing_key:
|
145
|
-
specification_version:
|
122
|
+
specification_version: 4
|
146
123
|
summary: A Ruby library to destroy your AVI files.
|
147
|
-
test_files:
|
124
|
+
test_files:
|
148
125
|
- spec/aviglitch_spec.rb
|
149
126
|
- spec/datamosh_spec.rb
|
150
127
|
- spec/files/sample.avi
|
151
128
|
- spec/frames_spec.rb
|
152
129
|
- spec/spec_helper.rb
|
130
|
+
has_rdoc: true
|