one-k-rmov 0.1.4

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,189 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+
3
+ describe QuickTime::Movie do
4
+ it "should raise an exception when attempting to open a nonexisting file" do
5
+ lambda { QuickTime::Movie.open('foo.mov') }.should raise_error(QuickTime::Error)
6
+ end
7
+
8
+ it "should raise an exception when attempting to open a non movie file" do
9
+ lambda { QuickTime::Movie.open(__FILE__) }.should raise_error(QuickTime::Error)
10
+ end
11
+
12
+ describe "example.mov" do
13
+ before(:each) do
14
+ @movie = QuickTime::Movie.open(File.dirname(__FILE__) + '/../fixtures/example.mov')
15
+ end
16
+
17
+ it "duration should be 3.1 seconds" do
18
+ @movie.duration.should == 3.1
19
+ end
20
+
21
+ it "bounds should be a hash of top, left, bottom, and right points" do
22
+ @movie.bounds.should == { :top => 0, :left => 0, :bottom => 50, :right => 60 }
23
+ end
24
+
25
+ it "width should be 60" do
26
+ @movie.width.should == 60
27
+ end
28
+
29
+ it "height should be 50" do
30
+ @movie.height.should == 50
31
+ end
32
+
33
+ it "should have 2 tracks" do
34
+ @movie.tracks.map { |t| t.class }.should == [QuickTime::Track, QuickTime::Track]
35
+ @movie.tracks.map { |t| t.id }.should == [1, 2]
36
+ end
37
+
38
+ it "should be able to export into separate file" do
39
+ path = File.dirname(__FILE__) + '/../output/exported_example.mov'
40
+ File.delete(path) rescue nil
41
+
42
+ progress = 0
43
+ @movie.export(path) { |p| progress = p }
44
+ progress.should == 1.0
45
+
46
+ exported_movie = QuickTime::Movie.open(path)
47
+ exported_movie.duration.should == @movie.duration
48
+ exported_movie.tracks.size == @movie.tracks.size
49
+ end
50
+
51
+ it "should have one audio track" do
52
+ @movie.audio_tracks.should have(1).record
53
+ end
54
+
55
+ it "should have one video track" do
56
+ @movie.video_tracks.should have(1).record
57
+ end
58
+
59
+ it "composite should add another movie's tracks at a given location" do
60
+ m2 = QuickTime::Movie.open(File.dirname(__FILE__) + '/../fixtures/example.mov')
61
+ @movie.composite_movie(m2, 2)
62
+ @movie.duration.should == 5.1
63
+ end
64
+
65
+ it "insert should insert another movie's tracks at a given location" do
66
+ m2 = QuickTime::Movie.open(File.dirname(__FILE__) + '/../fixtures/example.mov')
67
+ @movie.insert_movie(m2, 2)
68
+ @movie.duration.should == 6.2
69
+ end
70
+
71
+ it "append_movie should insert movie at the end" do
72
+ m2 = QuickTime::Movie.open(File.dirname(__FILE__) + '/../fixtures/example.mov')
73
+ @movie.append_movie(m2)
74
+ @movie.duration.should == 6.2
75
+ end
76
+
77
+ it "delete_section should remove a section from a movie" do
78
+ @movie.delete_section(1, 0.6)
79
+ @movie.duration.should == 2.5
80
+ end
81
+
82
+ it "clone_section should make a new movie from given section and leave existing movie intact" do
83
+ mov = @movie.clone_section(1, 0.6)
84
+ mov.duration.should == 0.6
85
+ @movie.duration.should == 3.1
86
+ end
87
+
88
+ it "clip_section should make a new movie from given section and remove it form existing movie" do
89
+ mov = @movie.clip_section(1, 0.6)
90
+ mov.duration.should == 0.6
91
+ @movie.duration.should == 2.5
92
+ end
93
+
94
+ it "should have an exporter with this movie" do
95
+ exporter = @movie.exporter
96
+ exporter.should be_kind_of(QuickTime::Exporter)
97
+ exporter.movie.should == @movie
98
+ end
99
+
100
+ it "should say when movie has changed" do
101
+ @movie.should_not be_changed
102
+ @movie.delete_section(1, 0.6)
103
+ @movie.should be_changed
104
+ end
105
+
106
+ it "should be able to clear changed status" do
107
+ @movie.delete_section(1, 0.6)
108
+ @movie.clear_changed_status
109
+ @movie.should_not be_changed
110
+ end
111
+
112
+ it "flatten should save movie into file" do
113
+ path = File.dirname(__FILE__) + '/../output/flattened_example.mov'
114
+ File.delete(path) rescue nil
115
+ @movie.flatten(path)
116
+ mov = QuickTime::Movie.open(path)
117
+ mov.duration.should == 3.1
118
+ end
119
+
120
+ it "export_pict should output a pict file at a given duration" do
121
+ path = File.dirname(__FILE__) + '/../output/example.pct'
122
+ File.delete(path) rescue nil
123
+ @movie.export_image(path, 1.2)
124
+ end
125
+
126
+ it "export_png should output a png file at a given duration" do
127
+ path = File.dirname(__FILE__) + '/../output/example.png'
128
+ File.delete(path) rescue nil
129
+ @movie.export_image(path, 1.2)
130
+ end
131
+
132
+ it "should default poster time to 0" do
133
+ @movie.poster_time.should == 0
134
+ end
135
+
136
+ it "should be able to set poster time to 2.1 seconds in" do
137
+ @movie.poster_time = 2.1
138
+ @movie.poster_time.should == 2.1
139
+ end
140
+ end
141
+
142
+ describe "empty movie" do
143
+ before(:each) do
144
+ @movie = QuickTime::Movie.empty
145
+ end
146
+
147
+ it "should have 0 duration" do
148
+ @movie.duration.should == 0
149
+ end
150
+
151
+ it "should be able to append an existing movie" do
152
+ m2 = QuickTime::Movie.open(File.dirname(__FILE__) + '/../fixtures/example.mov')
153
+ @movie.append_movie(m2)
154
+ @movie.duration.should == 3.1
155
+ end
156
+
157
+ it "should raise MovieAlreadyLoaded exception when attempting to load it again" do
158
+ lambda { @movie.load_empty }.should raise_error(QuickTime::Error)
159
+ lambda { @movie.load_from_file('example.mov') }.should raise_error(QuickTime::Error)
160
+ end
161
+
162
+ it "should be able to create a new track" do
163
+ track = @movie.new_track(300, 500)
164
+ track.should be_kind_of(QuickTime::Track)
165
+ @movie.tracks.should have(1).record
166
+ end
167
+
168
+ it "should be able to create a new video track" do
169
+ track = @movie.new_video_track(300, 500)
170
+ track.should be_kind_of(QuickTime::Track)
171
+ track.should be_video
172
+ @movie.video_tracks.should have(1).record
173
+ end
174
+
175
+ it "should be able to create a new audio track" do
176
+ track = @movie.new_audio_track(300, 500)
177
+ track.should be_kind_of(QuickTime::Track)
178
+ track.should be_audio
179
+ @movie.audio_tracks.should have(1).record
180
+ end
181
+
182
+ it "should be able to create a new text track" do
183
+ track = @movie.new_text_track(300, 500)
184
+ track.should be_kind_of(QuickTime::Track)
185
+ track.should be_text
186
+ @movie.text_tracks.should have(1).record
187
+ end
188
+ end
189
+ end
@@ -0,0 +1,86 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+
3
+ describe QuickTime::Track do
4
+ describe "example.mov" do
5
+ before(:each) do
6
+ @movie = QuickTime::Movie.open(File.dirname(__FILE__) + '/../fixtures/example.mov')
7
+ end
8
+
9
+ describe "example.mov video track" do
10
+ before(:each) do
11
+ @track = @movie.video_tracks.first
12
+ end
13
+
14
+ it "duration should be 3.1 seconds" do
15
+ @track.duration.should == 3.1
16
+ end
17
+
18
+ it "frame count should be 31" do
19
+ @track.frame_count.should == 31
20
+ end
21
+
22
+ it "frame rate should be 10" do
23
+ @track.frame_rate.should == 10
24
+ end
25
+
26
+ it "should have a codec of H.264" do
27
+ @track.codec.should == "H.264"
28
+ end
29
+
30
+ it "should have a codec of nil, if audio" do
31
+ t = @movie.audio_tracks.first
32
+ t.codec.should == nil
33
+ end
34
+
35
+ it "should have a width of 60" do
36
+ @track.width.should == 60
37
+ end
38
+
39
+ it "should have a height of 50" do
40
+ @track.height.should == 50
41
+ end
42
+
43
+ it "should be able to delete a track" do
44
+ @track.delete
45
+ @movie.video_tracks.should == []
46
+ end
47
+
48
+ it "should be able to add a track" do
49
+ @track.delete
50
+ @movie.video_tracks.should == []
51
+ end
52
+
53
+ it "should be able to disable and enable a track" do
54
+ @track.should be_enabled
55
+ @track.disable
56
+ @track.should_not be_enabled
57
+ @track.enable
58
+ @track.should be_enabled
59
+ end
60
+
61
+ it "should have no offset" do
62
+ @track.offset.should == 0
63
+ end
64
+
65
+ it "should be able to offset by 2.5 seconds" do
66
+ @track.offset = 2.5
67
+ @track.offset.should == 2.5
68
+ end
69
+ end
70
+
71
+ describe "example.mov audio track" do
72
+ before(:each) do
73
+ @track = @movie.audio_tracks.first
74
+ end
75
+
76
+ it "should have a volume of 1.0" do
77
+ @track.volume.should == 1.0
78
+ end
79
+
80
+ it "should be able to set volume to 0.5" do
81
+ @track.volume = 0.5
82
+ @track.volume.should == 0.5
83
+ end
84
+ end
85
+ end
86
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require File.dirname(__FILE__) + '/../lib/rmov'
4
+
5
+ Spec::Runner.configure do |config|
6
+ config.mock_with :mocha
7
+ end
data/tasks/setup.rake ADDED
@@ -0,0 +1,7 @@
1
+ desc "Builds the rmov_ext extension"
2
+ task :setup do
3
+ Dir.chdir('ext') do
4
+ ruby 'extconf.rb'
5
+ system 'make'
6
+ end
7
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,9 @@
1
+ require 'spec/rake/spectask'
2
+
3
+ spec_files = Rake::FileList["spec/**/*_spec.rb"]
4
+
5
+ desc "Run specs"
6
+ Spec::Rake::SpecTask.new do |t|
7
+ t.spec_files = spec_files
8
+ t.spec_opts = ["-c"]
9
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: one-k-rmov
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Bates
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-24 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Ruby wrapper for the QuickTime C API.
17
+ email: ryan (at) railscasts (dot) com
18
+ executables: []
19
+
20
+ extensions:
21
+ - ext/extconf.rb
22
+ extra_rdoc_files:
23
+ - CHANGELOG
24
+ - ext/exporter.c
25
+ - ext/extconf.rb
26
+ - ext/movie.c
27
+ - ext/rmov_ext.c
28
+ - ext/rmov_ext.h
29
+ - ext/track.c
30
+ - lib/quicktime/exporter.rb
31
+ - lib/quicktime/movie.rb
32
+ - lib/quicktime/track.rb
33
+ - lib/rmov.rb
34
+ - LICENSE
35
+ - README.rdoc
36
+ - tasks/setup.rake
37
+ - tasks/spec.rake
38
+ - TODO
39
+ files:
40
+ - CHANGELOG
41
+ - ext/exporter.c
42
+ - ext/extconf.rb
43
+ - ext/movie.c
44
+ - ext/rmov_ext.c
45
+ - ext/rmov_ext.h
46
+ - ext/track.c
47
+ - lib/quicktime/exporter.rb
48
+ - lib/quicktime/movie.rb
49
+ - lib/quicktime/track.rb
50
+ - lib/rmov.rb
51
+ - LICENSE
52
+ - Manifest
53
+ - Rakefile
54
+ - README.rdoc
55
+ - spec/fixtures/settings.st
56
+ - spec/quicktime/exporter_spec.rb
57
+ - spec/quicktime/movie_spec.rb
58
+ - spec/quicktime/track_spec.rb
59
+ - spec/spec.opts
60
+ - spec/spec_helper.rb
61
+ - tasks/setup.rake
62
+ - tasks/spec.rake
63
+ - TODO
64
+ - rmov.gemspec
65
+ has_rdoc: true
66
+ homepage: http://github.com/ryanb/rmov
67
+ post_install_message:
68
+ rdoc_options:
69
+ - --line-numbers
70
+ - --inline-source
71
+ - --title
72
+ - Rmov
73
+ - --main
74
+ - README.rdoc
75
+ require_paths:
76
+ - lib
77
+ - ext
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: "0"
83
+ version:
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: "1.2"
89
+ version:
90
+ requirements: []
91
+
92
+ rubyforge_project: rmov
93
+ rubygems_version: 1.2.0
94
+ signing_key:
95
+ specification_version: 2
96
+ summary: Ruby wrapper for the QuickTime C API.
97
+ test_files: []
98
+