rmovie 0.5.0
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.
- 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
|
+
|