rmovie 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/rmovie/Makefile +149 -0
- data/ext/rmovie/config.h +3 -0
- data/ext/rmovie/extconf.rb +43 -0
- data/ext/rmovie/mkmf.log +24 -0
- data/ext/rmovie/pre-setup.rb +4 -0
- data/ext/rmovie/quadrupel/Makefile +32 -0
- data/ext/rmovie/quadrupel/TODO +15 -0
- data/ext/rmovie/quadrupel/mkinstalldirs +100 -0
- data/ext/rmovie/quadrupel/qp_frame.c +266 -0
- data/ext/rmovie/quadrupel/qp_frame.h +49 -0
- data/ext/rmovie/quadrupel/qp_movie.c +1179 -0
- data/ext/rmovie/quadrupel/qp_movie.h +81 -0
- data/ext/rmovie/quadrupel/qp_util.c +27 -0
- data/ext/rmovie/quadrupel/qp_util.h +18 -0
- data/ext/rmovie/quadrupel/test.c +60 -0
- data/ext/rmovie/rmovie_frame.c +236 -0
- data/ext/rmovie/rmovie_frame.h +10 -0
- data/ext/rmovie/rmovie_main.c +100 -0
- data/ext/rmovie/rmovie_movie.c +349 -0
- data/ext/rmovie/rmovie_movie.h +28 -0
- data/lib/rmovie/version.rb +45 -0
- data/test/export_movie.rb +7 -0
- data/test/get_frame.rb +10 -0
- data/test/get_frames_reverse.rb +11 -0
- data/test/init_rmovie.rb +7 -0
- data/test/media/1701-D.mov +0 -0
- data/test/media/Ballad of the Sneak.mp3 +0 -0
- data/test/media/irnbru-singsong.mov +0 -0
- data/test/media/test.mov +0 -0
- data/test/pixel_format.rb +10 -0
- data/test/test_rmovie.rb +93 -0
- data/test/to_s.rb +27 -0
- data/test/to_string.rb +19 -0
- metadata +83 -0
data/test/init_rmovie.rb
ADDED
Binary file
|
Binary file
|
Binary file
|
data/test/media/test.mov
ADDED
Binary file
|
data/test/test_rmovie.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'md5'
|
6
|
+
require 'rmovie'
|
7
|
+
|
8
|
+
$script_dir = File.dirname(File.expand_path($0))
|
9
|
+
$media_dir = "#{$script_dir}/media"
|
10
|
+
$baselines_dir = "#{$script_dir}/baselines"
|
11
|
+
|
12
|
+
class TC_RMovie < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def test_on_missing_file
|
15
|
+
# test creating movie object on a file that doesn't exist
|
16
|
+
begin
|
17
|
+
no_mov = RMovie::Movie.new("#{$media_dir}/i_dont_exist.avi")
|
18
|
+
rescue SystemCallError
|
19
|
+
assert_nil no_mov
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_rmovie_movie
|
24
|
+
media_files = Dir["#{$media_dir}/*"]
|
25
|
+
|
26
|
+
media_files.each { |file|
|
27
|
+
if not File.exist?("#{$baselines_dir}/#{File.basename(file)}.yaml")
|
28
|
+
print "No baseline file for #{file}.\n"
|
29
|
+
generate_baseline(file)
|
30
|
+
end
|
31
|
+
|
32
|
+
# TODO: if method returns a frame object, run the objects methods.
|
33
|
+
|
34
|
+
baseline = load_baseline(file)
|
35
|
+
assert mov = RMovie::Movie.new(file)
|
36
|
+
baseline.each { |k, v|
|
37
|
+
assert_equal eval(run_method(mov,k)), v
|
38
|
+
}
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def run_method(obj, method)
|
43
|
+
print "Testing: #{obj.class}.#{method} = "
|
44
|
+
ret = eval "obj.#{method}"
|
45
|
+
puts ret
|
46
|
+
return ret
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
def load_baseline(filename)
|
51
|
+
return YAML::load(File.open("#{$baselines_dir}/#{File.basename(filename)}.yaml"))
|
52
|
+
end
|
53
|
+
|
54
|
+
def generate_baseline(filename)
|
55
|
+
|
56
|
+
mov = RMovie::Movie.new(filename)
|
57
|
+
|
58
|
+
method_hash = {}
|
59
|
+
|
60
|
+
RMovie::Movie.instance_methods(false).each { |method|
|
61
|
+
ret = run_method(mov, method);
|
62
|
+
if ret.is_a? String
|
63
|
+
ret = ret.to_s.gsub(/[']/, "\\\\'")
|
64
|
+
ret = "\"#{ret}\""
|
65
|
+
end
|
66
|
+
if ret.instance_of? RMovie::Frame
|
67
|
+
frame = ret
|
68
|
+
RMovie::Frame.instance_methods(false).each { |method|
|
69
|
+
fret = run_method(frame, method);
|
70
|
+
if fret.is_a? String
|
71
|
+
fret = fret.to_s.gsub(/[']/, "\\\\'")
|
72
|
+
fret = "\"#{fret}\""
|
73
|
+
end
|
74
|
+
# TODO: need to check against baselines and a way
|
75
|
+
# to run methods with arguments
|
76
|
+
}
|
77
|
+
continue
|
78
|
+
end
|
79
|
+
# TODO: Put a failure method here that tells which file
|
80
|
+
# and which method failed
|
81
|
+
eval "method_hash['#{method}'] = #{ret}"
|
82
|
+
}
|
83
|
+
|
84
|
+
oldstdout = $stdout
|
85
|
+
outpath = "#{$baselines_dir}/#{File.basename(filename)}.yaml"
|
86
|
+
print "Generating baseline file for #{filename} in #{outpath}.\n"
|
87
|
+
outf = File.new(outpath, "w")
|
88
|
+
$stdout = outf # switch output to file
|
89
|
+
outf.puts(method_hash.to_yaml)
|
90
|
+
$stdout = oldstdout
|
91
|
+
outf.close
|
92
|
+
end
|
93
|
+
end
|
data/test/to_s.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'rmovie'
|
4
|
+
require 'RMagick'
|
5
|
+
|
6
|
+
$script_dir = File.dirname(File.expand_path($0))
|
7
|
+
$media_dir = "#{$script_dir}/media/"
|
8
|
+
|
9
|
+
mov = RMovie::Movie.new("#{$media_dir}/irnbru-singsong.mov")
|
10
|
+
|
11
|
+
print "Movie frame count = ", mov.frame_count, "\n"
|
12
|
+
|
13
|
+
frames = [10, 5, 3]
|
14
|
+
|
15
|
+
#frame = mov.frame(10)
|
16
|
+
|
17
|
+
frames.each { |frame_num|
|
18
|
+
frame = mov.frame(frame_num)
|
19
|
+
|
20
|
+
frame_as_string = frame.to_s
|
21
|
+
|
22
|
+
img = Magick::Image.new(frame.width, frame.height)
|
23
|
+
|
24
|
+
img.import_pixels(0, 0, frame.width, frame.height, "RGB", frame_as_string, Magick::CharPixel)
|
25
|
+
|
26
|
+
img.write("#{frame_num}-out.jpg")
|
27
|
+
}
|
data/test/to_string.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'rmovie'
|
4
|
+
require 'RMagick'
|
5
|
+
|
6
|
+
$script_dir = File.dirname(File.expand_path($0))
|
7
|
+
$media_dir = "#{$script_dir}/media/"
|
8
|
+
|
9
|
+
mov = RMovie::Movie.new("#{$media_dir}/irnbru-singsong.mov")
|
10
|
+
|
11
|
+
frame = mov.frame(1)
|
12
|
+
|
13
|
+
frame_as_string = frame.to_string
|
14
|
+
|
15
|
+
img = Magick::Image.new(frame.width, frame.height)
|
16
|
+
|
17
|
+
img.import_pixels(0, 0, frame.width, frame.height, "RGB", frame_as_string, Magick::CharPixel)
|
18
|
+
|
19
|
+
img.write('out.jpg')
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.0
|
3
|
+
specification_version: 1
|
4
|
+
name: rmovie
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.5.0
|
7
|
+
date: 2006-10-18 00:00:00 -07:00
|
8
|
+
summary: rmovie is an extension to allow Ruby scripts to get info from video files.
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: ffmpeg.php@gmail.com
|
12
|
+
homepage: http://rubyforge.org/rmovie
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire: rmovie
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.8.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Todd Kirby
|
31
|
+
files:
|
32
|
+
- ext/rmovie
|
33
|
+
- ext/rmovie/quadrupel
|
34
|
+
- ext/rmovie/rmovie_frame.c
|
35
|
+
- ext/rmovie/rmovie_frame.h
|
36
|
+
- ext/rmovie/extconf.rb
|
37
|
+
- ext/rmovie/rmovie_movie.c
|
38
|
+
- ext/rmovie/rmovie_movie.h
|
39
|
+
- ext/rmovie/mkmf.log
|
40
|
+
- ext/rmovie/rmovie_main.c
|
41
|
+
- ext/rmovie/config.h
|
42
|
+
- ext/rmovie/Makefile
|
43
|
+
- ext/rmovie/pre-setup.rb
|
44
|
+
- ext/rmovie/quadrupel/mkinstalldirs
|
45
|
+
- ext/rmovie/quadrupel/qp_frame.h
|
46
|
+
- ext/rmovie/quadrupel/qp_movie.c
|
47
|
+
- ext/rmovie/quadrupel/test.c
|
48
|
+
- ext/rmovie/quadrupel/qp_util.h
|
49
|
+
- ext/rmovie/quadrupel/TODO
|
50
|
+
- ext/rmovie/quadrupel/qp_movie.h
|
51
|
+
- ext/rmovie/quadrupel/qp_frame.c
|
52
|
+
- ext/rmovie/quadrupel/Makefile
|
53
|
+
- ext/rmovie/quadrupel/qp_util.c
|
54
|
+
- lib/rmovie
|
55
|
+
- lib/rmovie/version.rb
|
56
|
+
- test/media
|
57
|
+
- test/baselines
|
58
|
+
- test/export_movie.rb
|
59
|
+
- test/test_rmovie.rb
|
60
|
+
- test/init_rmovie.rb
|
61
|
+
- test/pixel_format.rb
|
62
|
+
- test/get_frame.rb
|
63
|
+
- test/to_string.rb
|
64
|
+
- test/to_s.rb
|
65
|
+
- test/get_frames_reverse.rb
|
66
|
+
- test/media/1701-D.mov
|
67
|
+
- test/media/Ballad of the Sneak.mp3
|
68
|
+
- test/media/irnbru-singsong.mov
|
69
|
+
- test/media/test.mov
|
70
|
+
test_files: []
|
71
|
+
|
72
|
+
rdoc_options: []
|
73
|
+
|
74
|
+
extra_rdoc_files: []
|
75
|
+
|
76
|
+
executables: []
|
77
|
+
|
78
|
+
extensions:
|
79
|
+
- ext/rmovie/extconf.rb
|
80
|
+
requirements: []
|
81
|
+
|
82
|
+
dependencies: []
|
83
|
+
|