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.
@@ -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
@@ -8,3 +8,4 @@ tmp
8
8
  *.gem
9
9
  Gemfile.lock
10
10
  Guardfile
11
+ .yardoc
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
1
  -c
2
- -fs
2
+ --format documentation
@@ -1,7 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
- - 1.8.7
5
4
  - 2.0.0
6
- - 2.1.0
5
+ - 2.1.4
7
6
  - jruby-19mode
@@ -1,3 +1,8 @@
1
+ ### 0.1.5 / 2014-12-12
2
+
3
+ * Fix Frames#concat and two other method to return self.
4
+ * Some internal changes.
5
+
1
6
  ### 0.1.4 / 2014-04-10
2
7
 
3
8
  * Added an enumerator style on AviGlitch::Base#glitch and
data/README.md CHANGED
@@ -34,6 +34,8 @@ It creates the keyframes removed video.
34
34
  $ datamosh /path/to/your.avi -o /path/to/broken.avi
35
35
  ```
36
36
 
37
+ For more practical usages, please check <https://github.com/ucnv/aviglitch-utils/tree/master/bin>.
38
+
37
39
  ## Installation
38
40
 
39
41
  ```sh
@@ -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
 
@@ -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.4'
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 AviGlitch.open path_or_frames
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
@@ -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.open 'aviglitch'
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
- # With a block it returns Enumerator, without a block it returns +self+.
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
@@ -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.seek 0, IO::SEEK_END
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.seek 0, IO::SEEK_END
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
  ##
@@ -8,4 +8,7 @@ OUTPUT_DIR = FILES_DIR + 'output'
8
8
 
9
9
  RSpec.configure do |config|
10
10
  config.filter_run_excluding :skip => true
11
+ config.expect_with :rspec do |c|
12
+ c.syntax = [:should, :expect]
13
+ end
11
14
  end
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
- hash: 19
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
- date: 2014-04-10 00:00:00 +09:00
19
- default_executable:
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
- - !ruby/object:Gem::Dependency
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
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
- requirement: *id003
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
- requirement: *id004
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
- description: "AviGlitch destroys your AVI files.\n This library provides ways to manipulate data in each AVI frames.\n It can easily generate keyframes-removed video known as \"datamoshing\".\n "
82
- email:
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
- none: false
124
- requirements:
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
125
110
  - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 3
128
- segments:
129
- - 0
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
- hash: 3
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: 1.6.2
120
+ rubygems_version: 2.2.2
144
121
  signing_key:
145
- specification_version: 3
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
@@ -1,8 +0,0 @@
1
- module AviGlitch
2
- class Tempfile < Tempfile
3
- def initialize *args
4
- super *args
5
- self.binmode
6
- end
7
- end
8
- end