rmov 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +10 -0
- data/Manifest +2 -2
- data/{README → README.rdoc} +1 -1
- data/Rakefile +1 -1
- data/TODO +6 -10
- data/ext/exporter.c +3 -5
- data/ext/movie.c +23 -0
- data/ext/rmov_ext.h +1 -0
- data/ext/track.c +47 -0
- data/rmov.gemspec +6 -6
- data/spec/output/saved_settings.st +0 -0
- data/spec/quicktime/movie_spec.rb +9 -0
- data/spec/quicktime/track_spec.rb +52 -23
- metadata +5 -5
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
0.1.2 (October 3rd, 2008)
|
2
|
+
|
3
|
+
* movie.poster_time and movie.poster_time=(seconds) for getting and setting a movie's poster time
|
4
|
+
|
5
|
+
* track.offset and track.offset=(seconds) for getting and setting a track's offset time from the start of a movie
|
6
|
+
|
7
|
+
* track.volume and track.volume=(vol) for getting and setting a track's volume
|
8
|
+
|
9
|
+
* QuickTime settings dialog comes into the forground properly
|
10
|
+
|
1
11
|
0.1.1 (October 3rd, 2008)
|
2
12
|
|
3
13
|
* RubyGems 1.3 compatibility (updated Echoe)
|
data/Manifest
CHANGED
@@ -10,8 +10,9 @@ lib/quicktime/movie.rb
|
|
10
10
|
lib/quicktime/track.rb
|
11
11
|
lib/rmov.rb
|
12
12
|
LICENSE
|
13
|
+
Manifest
|
13
14
|
Rakefile
|
14
|
-
README
|
15
|
+
README.rdoc
|
15
16
|
spec/fixtures/settings.st
|
16
17
|
spec/output/example.pct
|
17
18
|
spec/output/saved_settings.st
|
@@ -23,4 +24,3 @@ spec/spec_helper.rb
|
|
23
24
|
tasks/setup.rake
|
24
25
|
tasks/spec.rake
|
25
26
|
TODO
|
26
|
-
Manifest
|
data/{README → README.rdoc}
RENAMED
@@ -27,7 +27,7 @@ Use this gem to open QuickTime movies and edit them to your liking.
|
|
27
27
|
|
28
28
|
# make a new movie out of a section of movie 1
|
29
29
|
# this will delete 5 seconds out of the movie at 2 seconds in
|
30
|
-
movie3 = movie1.clip_section(
|
30
|
+
movie3 = movie1.clip_section(2, 5)
|
31
31
|
|
32
32
|
# You can insert that part back into the movie at 8 seconds in
|
33
33
|
movie1.insert_movie(movie3, 8)
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('rmov', '0.1.
|
5
|
+
Echoe.new('rmov', '0.1.2') do |p|
|
6
6
|
p.summary = "Ruby wrapper for the QuickTime C API."
|
7
7
|
p.description = "Ruby wrapper for the QuickTime C API."
|
8
8
|
p.url = "http://github.com/ryanb/rmov"
|
data/TODO
CHANGED
@@ -1,19 +1,15 @@
|
|
1
1
|
Fixes
|
2
2
|
- check if movie/track really exists each time we call it
|
3
|
-
- add rdocs
|
4
|
-
- fill README
|
5
3
|
|
6
4
|
Features
|
7
|
-
- export a single frame as pict
|
8
5
|
- resize movie
|
9
|
-
- export image sequence
|
10
|
-
- import image sequence
|
11
|
-
- import other file formats (mpeg, aiff, mp3, etc.)
|
12
6
|
- get movie metadata (album, author, artist, etc.)
|
13
7
|
- set movie metadata
|
14
|
-
- programatically adjust export settings (framerate, codec, etc.)
|
15
|
-
|
16
|
-
Possible
|
17
8
|
- add text track to movie
|
18
9
|
- add chapters to movie
|
19
|
-
|
10
|
+
|
11
|
+
Possible
|
12
|
+
- time remapping
|
13
|
+
- programatically adjust export settings (framerate, codec, etc.)
|
14
|
+
- export image sequence
|
15
|
+
- import image sequence
|
data/ext/exporter.c
CHANGED
@@ -91,11 +91,9 @@ static VALUE exporter_open_settings_dialog(VALUE obj)
|
|
91
91
|
ComponentInstance component = exporter_component(obj);
|
92
92
|
|
93
93
|
// Bring this process to the front
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
rb_raise(eQuicktime, "Error %d occurred while brining this application to the forground.", err);
|
98
|
-
}
|
94
|
+
err = TransformProcessType(¤t_process, kProcessTransformToForegroundApplication);
|
95
|
+
if (err != noErr) {
|
96
|
+
rb_raise(eQuicktime, "Error %d occurred while brining this application to the forground.", err);
|
99
97
|
}
|
100
98
|
SetFrontProcess(¤t_process);
|
101
99
|
|
data/ext/movie.c
CHANGED
@@ -392,6 +392,27 @@ static VALUE movie_export_pict(VALUE obj, VALUE filepath, VALUE frame_time)
|
|
392
392
|
return Qnil;
|
393
393
|
}
|
394
394
|
|
395
|
+
/*
|
396
|
+
call-seq: poster_time() -> seconds
|
397
|
+
|
398
|
+
Returns the poster time of the movie (in seconds).
|
399
|
+
*/
|
400
|
+
static VALUE movie_get_poster_time(VALUE obj)
|
401
|
+
{
|
402
|
+
return rb_float_new((double)GetMoviePosterTime(MOVIE(obj))/GetMovieTimeScale(MOVIE(obj)));
|
403
|
+
}
|
404
|
+
|
405
|
+
/*
|
406
|
+
call-seq: poster_time=(seconds)
|
407
|
+
|
408
|
+
Sets the poster_time of the movie (in seconds).
|
409
|
+
*/
|
410
|
+
static VALUE movie_set_poster_time(VALUE obj, VALUE seconds)
|
411
|
+
{
|
412
|
+
SetMoviePosterTime(MOVIE(obj), MOVIE_TIME(obj, seconds));
|
413
|
+
return Qnil;
|
414
|
+
}
|
415
|
+
|
395
416
|
void Init_quicktime_movie()
|
396
417
|
{
|
397
418
|
VALUE mQuicktime;
|
@@ -415,4 +436,6 @@ void Init_quicktime_movie()
|
|
415
436
|
rb_define_method(cMovie, "flatten", movie_flatten, 1);
|
416
437
|
rb_define_method(cMovie, "export_pict", movie_export_pict, 2);
|
417
438
|
rb_define_method(cMovie, "dispose", movie_dispose, 0);
|
439
|
+
rb_define_method(cMovie, "poster_time", movie_get_poster_time, 0);
|
440
|
+
rb_define_method(cMovie, "poster_time=", movie_set_poster_time, 1);
|
418
441
|
}
|
data/ext/rmov_ext.h
CHANGED
@@ -24,6 +24,7 @@ void Init_quicktime_track();
|
|
24
24
|
#define RTRACK(obj) (Check_Type(obj, T_DATA), (struct RTrack*)DATA_PTR(obj))
|
25
25
|
#define TRACK(obj) (RTRACK(obj)->track)
|
26
26
|
#define TRACK_MEDIA(obj) (GetTrackMedia(TRACK(obj)))
|
27
|
+
#define TRACK_TIME(obj, seconds) (floor(NUM2DBL(seconds)*GetMediaTimeScale(TRACK_MEDIA(obj))))
|
27
28
|
|
28
29
|
struct RTrack {
|
29
30
|
Track track;
|
data/ext/track.c
CHANGED
@@ -146,6 +146,49 @@ static VALUE track_enabled(VALUE obj, VALUE boolean)
|
|
146
146
|
}
|
147
147
|
}
|
148
148
|
|
149
|
+
/*
|
150
|
+
call-seq: volume() -> volume_float
|
151
|
+
|
152
|
+
Returns the volume of the audio from 0.0 to 1.0.
|
153
|
+
*/
|
154
|
+
static VALUE track_get_volume(VALUE obj)
|
155
|
+
{
|
156
|
+
return rb_float_new((double)GetTrackVolume(TRACK(obj))/0x0100);
|
157
|
+
}
|
158
|
+
|
159
|
+
/*
|
160
|
+
call-seq: volume=(volume_float)
|
161
|
+
|
162
|
+
Sets the volume to the given value (0.0 to 1.0)
|
163
|
+
*/
|
164
|
+
static VALUE track_set_volume(VALUE obj, VALUE volume_obj)
|
165
|
+
{
|
166
|
+
SetTrackVolume(TRACK(obj), (short)(0x0100*NUM2DBL(volume_obj)));
|
167
|
+
return Qnil;
|
168
|
+
}
|
169
|
+
|
170
|
+
/*
|
171
|
+
call-seq: offset() -> seconds
|
172
|
+
|
173
|
+
Returns the offset of the track from the beginning of the movie (in seconds).
|
174
|
+
*/
|
175
|
+
static VALUE track_get_offset(VALUE obj)
|
176
|
+
{
|
177
|
+
return rb_float_new((double)GetTrackOffset(TRACK(obj))/GetMediaTimeScale(TRACK_MEDIA(obj)));
|
178
|
+
}
|
179
|
+
|
180
|
+
/*
|
181
|
+
call-seq: offset=(seconds)
|
182
|
+
|
183
|
+
Sets the offset of the track from the start of the movie (in seconds).
|
184
|
+
*/
|
185
|
+
static VALUE track_set_offset(VALUE obj, VALUE seconds)
|
186
|
+
{
|
187
|
+
SetTrackOffset(TRACK(obj), TRACK_TIME(obj, seconds));
|
188
|
+
return Qnil;
|
189
|
+
}
|
190
|
+
|
191
|
+
|
149
192
|
void Init_quicktime_track()
|
150
193
|
{
|
151
194
|
VALUE mQuicktime;
|
@@ -162,4 +205,8 @@ void Init_quicktime_track()
|
|
162
205
|
rb_define_method(cTrack, "enabled?", track_enabled, 0);
|
163
206
|
rb_define_method(cTrack, "enable", track_enable, 0);
|
164
207
|
rb_define_method(cTrack, "disable", track_disable, 0);
|
208
|
+
rb_define_method(cTrack, "volume", track_get_volume, 0);
|
209
|
+
rb_define_method(cTrack, "volume=", track_set_volume, 1);
|
210
|
+
rb_define_method(cTrack, "offset", track_get_offset, 0);
|
211
|
+
rb_define_method(cTrack, "offset=", track_set_offset, 1);
|
165
212
|
}
|
data/rmov.gemspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
|
2
|
-
# Gem::Specification for Rmov-0.1.
|
2
|
+
# Gem::Specification for Rmov-0.1.2
|
3
3
|
# Originally generated by Echoe
|
4
4
|
|
5
5
|
--- !ruby/object:Gem::Specification
|
6
6
|
name: rmov
|
7
7
|
version: !ruby/object:Gem::Version
|
8
|
-
version: 0.1.
|
8
|
+
version: 0.1.2
|
9
9
|
platform: ruby
|
10
10
|
authors:
|
11
11
|
- Ryan Bates
|
@@ -35,7 +35,7 @@ extra_rdoc_files:
|
|
35
35
|
- lib/quicktime/track.rb
|
36
36
|
- lib/rmov.rb
|
37
37
|
- LICENSE
|
38
|
-
- README
|
38
|
+
- README.rdoc
|
39
39
|
- tasks/setup.rake
|
40
40
|
- tasks/spec.rake
|
41
41
|
- TODO
|
@@ -52,8 +52,9 @@ files:
|
|
52
52
|
- lib/quicktime/track.rb
|
53
53
|
- lib/rmov.rb
|
54
54
|
- LICENSE
|
55
|
+
- Manifest
|
55
56
|
- Rakefile
|
56
|
-
- README
|
57
|
+
- README.rdoc
|
57
58
|
- spec/fixtures/settings.st
|
58
59
|
- spec/output/example.pct
|
59
60
|
- spec/output/saved_settings.st
|
@@ -65,7 +66,6 @@ files:
|
|
65
66
|
- tasks/setup.rake
|
66
67
|
- tasks/spec.rake
|
67
68
|
- TODO
|
68
|
-
- Manifest
|
69
69
|
- rmov.gemspec
|
70
70
|
has_rdoc: true
|
71
71
|
homepage: http://github.com/ryanb/rmov
|
@@ -76,7 +76,7 @@ rdoc_options:
|
|
76
76
|
- --title
|
77
77
|
- Rmov
|
78
78
|
- --main
|
79
|
-
- README
|
79
|
+
- README.rdoc
|
80
80
|
require_paths:
|
81
81
|
- lib
|
82
82
|
- ext
|
Binary file
|
@@ -122,6 +122,15 @@ describe Quicktime::Movie do
|
|
122
122
|
File.delete(path) rescue nil
|
123
123
|
@movie.export_pict(path, 1.2)
|
124
124
|
end
|
125
|
+
|
126
|
+
it "should default poster time to 0" do
|
127
|
+
@movie.poster_time.should == 0
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should be able to set poster time to 2.1 seconds in" do
|
131
|
+
@movie.poster_time = 2.1
|
132
|
+
@movie.poster_time.should == 2.1
|
133
|
+
end
|
125
134
|
end
|
126
135
|
|
127
136
|
describe "empty movie" do
|
@@ -4,37 +4,66 @@ describe Quicktime::Track do
|
|
4
4
|
describe "example.mov" do
|
5
5
|
before(:each) do
|
6
6
|
@movie = Quicktime::Movie.open(File.dirname(__FILE__) + '/../fixtures/example.mov')
|
7
|
-
@track = @movie.video_tracks.first
|
8
7
|
end
|
8
|
+
|
9
|
+
describe "example.mov video track" do
|
10
|
+
before(:each) do
|
11
|
+
@track = @movie.video_tracks.first
|
12
|
+
end
|
9
13
|
|
10
|
-
|
11
|
-
|
12
|
-
|
14
|
+
it "duration should be 3.1 seconds" do
|
15
|
+
@track.duration.should == 3.1
|
16
|
+
end
|
13
17
|
|
14
|
-
|
15
|
-
|
16
|
-
|
18
|
+
it "frame count should be 31" do
|
19
|
+
@track.frame_count.should == 31
|
20
|
+
end
|
17
21
|
|
18
|
-
|
19
|
-
|
20
|
-
|
22
|
+
it "frame rate should be 10" do
|
23
|
+
@track.frame_rate.should == 10
|
24
|
+
end
|
21
25
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
+
it "should be able to delete a track" do
|
27
|
+
@track.delete
|
28
|
+
@movie.video_tracks.should == []
|
29
|
+
end
|
26
30
|
|
27
|
-
|
28
|
-
|
29
|
-
|
31
|
+
it "should be able to add a track" do
|
32
|
+
@track.delete
|
33
|
+
@movie.video_tracks.should == []
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should be able to disable and enable a track" do
|
37
|
+
@track.should be_enabled
|
38
|
+
@track.disable
|
39
|
+
@track.should_not be_enabled
|
40
|
+
@track.enable
|
41
|
+
@track.should be_enabled
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should have no offset" do
|
45
|
+
@track.offset.should == 0
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should be able to offset by 2.5 seconds" do
|
49
|
+
@track.offset = 2.5
|
50
|
+
@track.offset.should == 2.5
|
51
|
+
end
|
30
52
|
end
|
53
|
+
|
54
|
+
describe "example.mov audio track" do
|
55
|
+
before(:each) do
|
56
|
+
@track = @movie.audio_tracks.first
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should have a volume of 1.0" do
|
60
|
+
@track.volume.should == 1.0
|
61
|
+
end
|
31
62
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
@track.enable
|
37
|
-
@track.should be_enabled
|
63
|
+
it "should be able to set volume to 0.5" do
|
64
|
+
@track.volume = 0.5
|
65
|
+
@track.volume.should == 0.5
|
66
|
+
end
|
38
67
|
end
|
39
68
|
end
|
40
69
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rmov
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Bates
|
@@ -32,7 +32,7 @@ extra_rdoc_files:
|
|
32
32
|
- lib/quicktime/track.rb
|
33
33
|
- lib/rmov.rb
|
34
34
|
- LICENSE
|
35
|
-
- README
|
35
|
+
- README.rdoc
|
36
36
|
- tasks/setup.rake
|
37
37
|
- tasks/spec.rake
|
38
38
|
- TODO
|
@@ -49,8 +49,9 @@ files:
|
|
49
49
|
- lib/quicktime/track.rb
|
50
50
|
- lib/rmov.rb
|
51
51
|
- LICENSE
|
52
|
+
- Manifest
|
52
53
|
- Rakefile
|
53
|
-
- README
|
54
|
+
- README.rdoc
|
54
55
|
- spec/fixtures/settings.st
|
55
56
|
- spec/output/example.pct
|
56
57
|
- spec/output/saved_settings.st
|
@@ -62,7 +63,6 @@ files:
|
|
62
63
|
- tasks/setup.rake
|
63
64
|
- tasks/spec.rake
|
64
65
|
- TODO
|
65
|
-
- Manifest
|
66
66
|
- rmov.gemspec
|
67
67
|
has_rdoc: true
|
68
68
|
homepage: http://github.com/ryanb/rmov
|
@@ -73,7 +73,7 @@ rdoc_options:
|
|
73
73
|
- --title
|
74
74
|
- Rmov
|
75
75
|
- --main
|
76
|
-
- README
|
76
|
+
- README.rdoc
|
77
77
|
require_paths:
|
78
78
|
- lib
|
79
79
|
- ext
|