hornetseye-frame 0.2.0 → 0.3.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/Rakefile CHANGED
@@ -3,10 +3,11 @@ require 'date'
3
3
  require 'rake/clean'
4
4
  require 'rake/testtask'
5
5
  require 'rake/packagetask'
6
+ require 'rake/loaders/makefile'
6
7
  require 'rbconfig'
7
8
 
8
9
  PKG_NAME = 'hornetseye-frame'
9
- PKG_VERSION = '0.2.0'
10
+ PKG_VERSION = '0.3.0'
10
11
  CXX = ENV[ 'CXX' ] || 'g++'
11
12
  STRIP = ENV[ 'STRIP' ] || 'strip'
12
13
  RB_FILES = FileList[ 'lib/**/*.rb' ]
@@ -27,16 +28,16 @@ HOMEPAGE = %q{http://wedesoft.github.com/hornetseye-frame/}
27
28
 
28
29
  OBJ = CC_FILES.ext 'o'
29
30
  $CXXFLAGS = ENV[ 'CXXFLAGS' ] || ''
30
- $CXXFLAGS = "#{$CXXFLAGS} -fPIC"
31
- if Config::CONFIG[ 'rubyhdrdir' ]
32
- $CXXFLAGS += "#{$CXXFLAGS} -I#{Config::CONFIG[ 'rubyhdrdir' ]} " +
33
- "-I#{Config::CONFIG[ 'rubyhdrdir' ]}/#{Config::CONFIG[ 'arch' ]}"
31
+ $CXXFLAGS = "#{$CXXFLAGS} -fPIC -DNDEBUG"
32
+ if RbConfig::CONFIG[ 'rubyhdrdir' ]
33
+ $CXXFLAGS = "#{$CXXFLAGS} -I#{RbConfig::CONFIG[ 'rubyhdrdir' ]} " +
34
+ "-I#{RbConfig::CONFIG[ 'rubyhdrdir' ]}/#{RbConfig::CONFIG[ 'arch' ]}"
34
35
  else
35
- $CXXFLAGS += "#{$CXXFLAGS} -I#{Config::CONFIG[ 'archdir' ]}"
36
+ $CXXFLAGS = "#{$CXXFLAGS} -I#{RbConfig::CONFIG[ 'archdir' ]}"
36
37
  end
37
- $LIBRUBYARG = Config::CONFIG[ 'LIBRUBYARG' ]
38
- $SITELIBDIR = Config::CONFIG[ 'sitelibdir' ]
39
- $SITEARCHDIR = Config::CONFIG[ 'sitearchdir' ]
38
+ $LIBRUBYARG = RbConfig::CONFIG[ 'LIBRUBYARG' ]
39
+ $SITELIBDIR = RbConfig::CONFIG[ 'sitelibdir' ]
40
+ $SITEARCHDIR = RbConfig::CONFIG[ 'sitearchdir' ]
40
41
 
41
42
  task :default => :all
42
43
 
@@ -44,7 +45,7 @@ desc 'Compile Ruby extension (default)'
44
45
  task :all => [ SO_FILE ]
45
46
 
46
47
  file SO_FILE => OBJ do |t|
47
- sh "#{CXX} -shared -o #{t.name} #{OBJ} #{$LIBRUBYARG}"
48
+ sh "#{CXX} -shared -o #{t.name} #{OBJ} -lswscale #{$LIBRUBYARG}"
48
49
  sh "#{STRIP} --strip-all #{t.name}"
49
50
  end
50
51
 
@@ -93,6 +94,7 @@ Rake::PackageTask.new PKG_NAME, PKG_VERSION do |p|
93
94
  end
94
95
 
95
96
  begin
97
+ require 'rubygems'
96
98
  require 'rubygems/builder'
97
99
  $SPEC = Gem::Specification.new do |s|
98
100
  s.name = PKG_NAME
@@ -166,12 +168,14 @@ rule '.o' => '.cc' do |t|
166
168
  sh "#{CXX} #{$CXXFLAGS} -c -o #{t.name} #{t.source}"
167
169
  end
168
170
 
169
- file 'ext/frame.o' => [ 'ext/frame.cc', 'ext/frame.hh' ]
170
- file 'ext/colourspace.o' => [ 'ext/colourspace.cc', 'ext/colourspace.hh',
171
- 'ext/frame.hh', 'ext/error.hh' ]
172
- file 'ext/init.o' => [ 'ext/init.cc', 'ext/frame.hh', 'ext/colourspace.hh',
173
- 'ext/error.hh' ]
171
+ file ".depends.mf" do |t|
172
+ sh "makedepend -f- -- #{$CXXFLAGS} -- #{CC_FILES.join ' '} > #{t.name}"
173
+ end
174
+ CC_FILES.each do |t|
175
+ file t.ext(".o") => t
176
+ end
177
+ import ".depends.mf"
174
178
 
175
179
  CLEAN.include 'ext/*.o'
176
- CLOBBER.include SO_FILE, 'doc', '.yardoc'
180
+ CLOBBER.include SO_FILE, 'doc', '.yardoc', '.depends.mf'
177
181
 
data/ext/colourspace.cc CHANGED
@@ -21,17 +21,65 @@ extern "C" {
21
21
 
22
22
  using namespace std;
23
23
 
24
- static enum PixelFormat stringToPixelFormat( const string &str ) throw (Error)
24
+ static void setupFormat( const string &typecode, int width, int height, char *memory,
25
+ enum PixelFormat *format,
26
+ uint8_t **data, int *lineSize ) throw (Error)
25
27
  {
26
- enum PixelFormat retVal = PIX_FMT_NONE;
27
- if ( str == "YV12" )
28
- retVal = PIX_FMT_YUV420P;
29
- else if ( str == "UBYTERGB" )
30
- retVal = PIX_FMT_RGB24;
31
- else {
32
- ERRORMACRO( false, Error, , "Unsupported colourspace \"" << str << "\"" );
28
+ if ( typecode == "UBYTE" ) {
29
+ *format = PIX_FMT_GRAY8;
30
+ data[ 0 ] = (uint8_t *)memory;
31
+ lineSize[ 0 ] = width;
32
+ } else if ( typecode == "UBYTERGB" ) {
33
+ *format = PIX_FMT_RGB24;
34
+ data[ 0 ] = (uint8_t *)memory;
35
+ lineSize[ 0 ] = width * 3;
36
+ } else if ( typecode == "BGR " ) {
37
+ *format = PIX_FMT_BGR24;
38
+ data[ 0 ] = (uint8_t *)memory;
39
+ lineSize[ 0 ] = width * 3;
40
+ } else if ( typecode == "BGRA" ) {
41
+ *format = PIX_FMT_BGRA;
42
+ data[ 0 ] = (uint8_t *)memory;
43
+ lineSize[ 0 ] = width * 4;
44
+ } else if ( typecode == "YV12" ) {
45
+ *format = PIX_FMT_YUV420P;
46
+ int
47
+ width2 = ( width + 1 ) / 2,
48
+ height2 = ( height + 1 ) / 2,
49
+ widtha = ( width + 7 ) & ~0x7,
50
+ width2a = ( width2 + 7 ) & ~0x7;
51
+ data[ 0 ] = (uint8_t *)memory;
52
+ data[ 2 ] = (uint8_t *)memory + widtha * height;
53
+ data[ 1 ] = (uint8_t *)data[ 2 ] + width2a * height2;
54
+ lineSize[ 0 ] = widtha;
55
+ lineSize[ 1 ] = ( ( width + 1 ) / 2 + 7 ) & ~0x7;
56
+ lineSize[ 2 ] = ( ( width + 1 ) / 2 + 7 ) & ~0x7;
57
+ } else if ( typecode == "I420" ) {
58
+ *format = PIX_FMT_YUV420P;
59
+ int
60
+ width2 = width / 2,
61
+ height2 = height / 2;
62
+ data[ 0 ] = (uint8_t *)memory;
63
+ data[ 2 ] = (uint8_t *)memory + width * height;
64
+ data[ 1 ] = (uint8_t *)data[ 2 ] + width2 * height2;
65
+ lineSize[ 0 ] = width;
66
+ lineSize[ 1 ] = width2;
67
+ lineSize[ 2 ] = width2;
68
+ } else if ( typecode == "YUY2" ) {
69
+ *format = PIX_FMT_YUYV422;
70
+ int
71
+ width2 = ( width + 1 ) / 2,
72
+ widtha = ( width + 3 ) & ~0x3;
73
+ data[ 0 ] = (uint8_t *)memory;
74
+ lineSize[ 0 ] = 2 * widtha;
75
+ } else if ( typecode == "UYVY" ) {
76
+ *format = PIX_FMT_UYVY422;
77
+ int widtha = ( width + 1 ) & ~0x1;
78
+ data[ 0 ] = (uint8_t *)memory;
79
+ lineSize[ 0 ] = 2 * widtha;
80
+ } else {
81
+ ERRORMACRO( false, Error, , "Unsupported colourspace \"" << typecode << "\"" );
33
82
  };
34
- return retVal;
35
83
  }
36
84
 
37
85
  FramePtr frameToType( const FramePtr in, const string &target ) throw (Error)
@@ -40,22 +88,18 @@ FramePtr frameToType( const FramePtr in, const string &target ) throw (Error)
40
88
  width = in->width(),
41
89
  height = in->height();
42
90
  FramePtr retVal( new Frame( target, width, height ) );
43
- uint8_t *sourceData[3];
44
- sourceData[0] = (uint8_t *)in->data();
45
- sourceData[1] = (uint8_t *)in->data() + width * height * 5 / 4;
46
- sourceData[2] = (uint8_t *)in->data() + width * height;
47
- int sourceLineSize[3];
48
- sourceLineSize[0] = width;
49
- sourceLineSize[1] = width / 2;
50
- sourceLineSize[2] = width / 2;
51
- uint8_t *destData[1];
52
- destData[0] = (uint8_t *)retVal->data();
53
- int destLineSize[1];
54
- destLineSize[0] = retVal->width() * 3;
55
- SwsContext *swsContext = sws_getContext( width, height,
56
- stringToPixelFormat( in->typecode() ),
57
- width, height,
58
- stringToPixelFormat( target ),
91
+ enum PixelFormat sourceFormat;
92
+ uint8_t *sourceData[4];
93
+ int sourceLineSize[4];
94
+ setupFormat( in->typecode(), width, height, in->data(),
95
+ &sourceFormat, &sourceData[0], &sourceLineSize[0] );
96
+ enum PixelFormat destFormat;
97
+ uint8_t *destData[4];
98
+ int destLineSize[4];
99
+ setupFormat( retVal->typecode(), width, height, retVal->data(),
100
+ &destFormat, &destData[0], &destLineSize[0] );
101
+ SwsContext *swsContext = sws_getContext( width, height, sourceFormat,
102
+ width, height, destFormat,
59
103
  SWS_FAST_BILINEAR, 0, 0, 0 );
60
104
  sws_scale( swsContext, sourceData, sourceLineSize, 0,
61
105
  height, destData, destLineSize );
data/ext/colourspace.hh CHANGED
@@ -16,8 +16,8 @@
16
16
  #ifndef COLOURSPACE_HH
17
17
  #define COLOURSPACE_HH
18
18
 
19
- #include <ruby.h>
20
19
  #include <string>
20
+ #include "rubyinc.hh"
21
21
  #include "error.hh"
22
22
  #include "frame.hh"
23
23
 
data/ext/frame.cc CHANGED
@@ -62,3 +62,8 @@ char *Frame::data(void)
62
62
  return ptr;
63
63
  }
64
64
 
65
+ void Frame::markRubyMember(void)
66
+ {
67
+ rb_gc_mark( m_frame );
68
+ }
69
+
data/ext/frame.hh CHANGED
@@ -17,7 +17,7 @@
17
17
  #define FRAME_HH
18
18
 
19
19
  #include <boost/smart_ptr.hpp>
20
- #include <ruby.h>
20
+ #include "rubyinc.hh"
21
21
  #include <string>
22
22
 
23
23
  class Frame
@@ -31,6 +31,7 @@ public:
31
31
  int height(void);
32
32
  char *data(void);
33
33
  VALUE rubyObject(void) { return m_frame; }
34
+ void markRubyMember(void);
34
35
  protected:
35
36
  VALUE m_frame;
36
37
  };
data/ext/init.cc CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  You should have received a copy of the GNU General Public License
15
15
  along with this program. If not, see <http://www.gnu.org/licenses/>. */
16
- #include <ruby.h>
16
+ #include "rubyinc.hh"
17
17
  #include "colourspace.hh"
18
18
 
19
19
  #ifdef WIN32
@@ -32,7 +32,10 @@ extern "C" {
32
32
  {
33
33
  VALUE rbHornetseye = rb_define_module( "Hornetseye" );
34
34
  VALUE cFrame = rb_define_class_under( rbHornetseye, "Frame_", rb_cObject );
35
+ VALUE cNode = rb_define_class_under( rbHornetseye, "Node", rb_cObject );
35
36
  rb_define_method( cFrame, "to_type", RUBY_METHOD_FUNC( frameWrapToType ), 1 );
37
+ rb_define_method( cNode, "to_type_with_frame",
38
+ RUBY_METHOD_FUNC( frameWrapToType ), 1 );
36
39
  rb_require( "hornetseye_frame_ext.rb" );
37
40
  }
38
41
 
data/ext/rubyinc.hh ADDED
@@ -0,0 +1,54 @@
1
+ /* HornetsEye - Computer Vision with Ruby
2
+ Copyright (C) 2006, 2007 Jan Wedekind
3
+
4
+ This program is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU General Public License as published by
6
+ the Free Software Foundation, either version 3 of the License, or
7
+ (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
16
+ #ifndef HORNETSEYE_RUBYINC_HH
17
+ #define HORNETSEYE_RUBYINC_HH
18
+
19
+ #ifdef RSHIFT
20
+ #undef RSHIFT
21
+ #endif
22
+
23
+ #define gettimeofday rubygettimeofday
24
+ #define timezone rubygettimezone
25
+ #include <ruby.h>
26
+ // #include <version.h>
27
+ #undef timezone
28
+ #undef gettimeofday
29
+ #ifdef read
30
+ #undef read
31
+ #endif
32
+ #ifdef write
33
+ #undef write
34
+ #endif
35
+ #ifdef RGB
36
+ #undef RGB
37
+ #endif
38
+
39
+ #ifndef RUBY_VERSION_NUMBER
40
+ #define RUBY_VERSION_NUMBER ( RUBY_VERSION_MAJOR * 10000 + \
41
+ RUBY_VERSION_MINOR * 100 + \
42
+ RUBY_VERSION_TEENY )
43
+ #endif
44
+
45
+ #ifndef RUBY_METHOD_FUNC
46
+ #define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))func)
47
+ #endif
48
+
49
+ #ifndef xfree
50
+ #define xfree free
51
+ #endif
52
+
53
+ #endif
54
+
@@ -47,10 +47,11 @@ module Hornetseye
47
47
 
48
48
  module_function :FourCC
49
49
 
50
- BGR = FourCC 'R', 'G', 'B', ' '
50
+ BGR = FourCC 'B', 'G', 'R', ' '
51
+ BGRA = FourCC 'B', 'G', 'R', 'A'
51
52
  UYVY = FourCC 'U', 'Y', 'V', 'Y'
52
53
  YUY2 = FourCC 'Y', 'U', 'Y', '2'
53
- # I420 = FourCC 'I', '4', '2', '0'
54
+ I420 = FourCC 'I', '4', '2', '0'
54
55
  YV12 = FourCC 'Y', 'V', '1', '2'
55
56
  MJPG = FourCC 'M', 'J', 'P', 'G'
56
57
 
@@ -39,6 +39,8 @@ module Hornetseye
39
39
  case typecode
40
40
  when BGR
41
41
  width * height * 3
42
+ when BGRA
43
+ width * height * 4
42
44
  when UYVY
43
45
  width * height * 2
44
46
  when YUY2
@@ -46,6 +48,8 @@ module Hornetseye
46
48
  widtha * height * 2
47
49
  when YV12
48
50
  width * height * 3 / 2
51
+ when I420
52
+ width * height * 3 / 2
49
53
  when MJPG
50
54
  width * height * 2
51
55
  else
@@ -81,6 +85,23 @@ module Hornetseye
81
85
  self.class.height
82
86
  end
83
87
 
88
+ alias_method :orig_to_type, :to_type
89
+
90
+ def to_type( target )
91
+ if target.is_a? Class
92
+ if ( target < INT_ and target != UBYTE ) or target < FLOAT_ or
93
+ target < COMPLEX_
94
+ to_type( UBYTE ).to_type target
95
+ elsif target < RGB_ and target != UBYTERGB
96
+ to_type( UBYTERGB ).to_type target
97
+ else
98
+ orig_to_type target
99
+ end
100
+ else
101
+ orig_to_type target
102
+ end
103
+ end
104
+
84
105
  end
85
106
 
86
107
  def Frame( typecode, width, height )
@@ -0,0 +1,45 @@
1
+ # hornetseye-frame - Colourspace conversions and compression
2
+ # Copyright (C) 2010 Jan Wedekind
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ # Namespace of Hornetseye computer vision library
18
+ module Hornetseye
19
+
20
+ class Node
21
+
22
+ alias_method :orig_to_type_with_frame, :to_type_with_frame
23
+
24
+ def to_type_with_frame( target )
25
+ if target.is_a? FourCC
26
+ if ( typecode < INT_ and typecode != UBYTE ) or typecode < FLOAT_
27
+ to_type( UBYTE ).to_type target
28
+ elsif typecode < COMPLEX_
29
+ real.to_type target
30
+ elsif typecode < RGB_ and typecode != UBYTERGB
31
+ to_type( UBYTERGB ).to_type target
32
+ else
33
+ orig_to_type_with_frame target
34
+ end
35
+ else
36
+ to_type_without_frame target
37
+ end
38
+ end
39
+
40
+ alias_method_chain :to_type, :frame
41
+
42
+ end
43
+
44
+ end
45
+
@@ -18,4 +18,4 @@ require 'malloc'
18
18
  require 'multiarray'
19
19
  require 'hornetseye-frame/fourcc'
20
20
  require 'hornetseye-frame/frame'
21
-
21
+ require 'hornetseye-frame/node'
data/test/tc_frame.rb ADDED
@@ -0,0 +1,97 @@
1
+ # hornetseye-frame - Colourspace conversions and compression
2
+ # Copyright (C) 2010 Jan Wedekind
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ require 'test/unit'
18
+ begin
19
+ require 'rubygems'
20
+ rescue LoadError
21
+ end
22
+ Kernel::require 'hornetseye_frame'
23
+
24
+ class TC_Frame < Test::Unit::TestCase
25
+
26
+ UBYTERGB = Hornetseye::UBYTERGB
27
+
28
+ BGR = Hornetseye::BGR
29
+ UYVY = Hornetseye::UYVY
30
+ YUY2 = Hornetseye::YUY2
31
+ I420 = Hornetseye::I420
32
+ YV12 = Hornetseye::YV12
33
+
34
+ F = Hornetseye::Frame
35
+
36
+ def C( *args )
37
+ Hornetseye::RGB *args
38
+ end
39
+
40
+ def M( *args )
41
+ Hornetseye::MultiArray *args
42
+ end
43
+
44
+ def F( *args )
45
+ Hornetseye::Frame *args
46
+ end
47
+
48
+ def test_frame_inspect
49
+ assert_equal 'Frame(YV12,320,240)', F( YV12, 320, 240 ).inspect
50
+ end
51
+
52
+ def test_frame_to_s
53
+ assert_equal 'Frame(YV12,320,240)', F( YV12, 320, 240 ).to_s
54
+ end
55
+
56
+ def test_frame_typecode
57
+ assert_equal YV12, F( YV12, 320, 240 ).typecode
58
+ end
59
+
60
+ def test_frame_width
61
+ assert_equal 320, F( YV12, 320, 240 ).width
62
+ end
63
+
64
+ def test_frame_height
65
+ assert_equal 240, F( YV12, 320, 240 ).height
66
+ end
67
+
68
+ def test_frame_shape
69
+ assert_equal [ 320, 240 ], F( YV12, 320, 240 ).shape
70
+ end
71
+
72
+ def test_typecode
73
+ assert_equal YV12, F.new( YV12, 320, 240 ).typecode
74
+ end
75
+
76
+ def test_shape
77
+ assert_equal [ 320, 240 ], F.new( YV12, 320, 240 ).shape
78
+ end
79
+
80
+ def test_width
81
+ assert_equal 320, F.new( YV12, 320, 240 ).width
82
+ end
83
+
84
+ def test_height
85
+ assert_equal 240, F.new( YV12, 320, 240 ).height
86
+ end
87
+
88
+ def test_to_type
89
+ m = M( Hornetseye::UBYTERGB, 160, 120 ).new.fill! C( 32, 64, 128 )
90
+ [ UYVY, YUY2, I420, YV12 ].each do |c|
91
+ result = m.to_type( c ).to_type UBYTERGB
92
+ assert_equal ( m / 8.0 ).round, ( result / 8.0 ).round
93
+ end
94
+ end
95
+
96
+ end
97
+
data/test/ts_frame.rb ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+ # hornetseye-frame - Colourspace conversions and compression
3
+ # Copyright (C) 2010 Jan Wedekind
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ require 'tc_frame'
19
+
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
7
+ - 3
8
8
  - 0
9
- version: 0.2.0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jan Wedekind
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-30 00:00:00 +01:00
17
+ date: 2010-10-05 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -73,13 +73,17 @@ files:
73
73
  - .document
74
74
  - lib/hornetseye-frame/fourcc.rb
75
75
  - lib/hornetseye-frame/frame.rb
76
+ - lib/hornetseye-frame/node.rb
76
77
  - lib/hornetseye_frame_ext.rb
77
78
  - ext/init.cc
78
79
  - ext/frame.cc
79
80
  - ext/colourspace.cc
80
81
  - ext/frame.hh
81
82
  - ext/colourspace.hh
83
+ - ext/rubyinc.hh
82
84
  - ext/error.hh
85
+ - test/ts_frame.rb
86
+ - test/tc_frame.rb
83
87
  has_rdoc: yard
84
88
  homepage: http://wedesoft.github.com/hornetseye-frame/
85
89
  licenses: []
@@ -113,5 +117,5 @@ rubygems_version: 1.3.7
113
117
  signing_key:
114
118
  specification_version: 3
115
119
  summary: Colourspace conversions and compression
116
- test_files: []
117
-
120
+ test_files:
121
+ - test/tc_frame.rb