ffruby 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 38afb037560dc46fb90736c4c3ef17b6e407bf6c
4
+ data.tar.gz: a9d56a47829cd214d8bad7326c357f607bff0c4a
5
+ SHA512:
6
+ metadata.gz: e27aadabdf44538cd1d01b6666385ec7c36dcc0097575bf638fc087eaeb6dbb5009e6a91d64535feeedefc3fc1e985b5177e7c42ea65eacfd38bc1133ac62a80
7
+ data.tar.gz: 6a28bdb98bc27da21a9897dab827efee3086e5f7bf37321da4ccf007a07c386433876e1dbdd0e4eb688914b7d457239788a12635072ffd4dae5c93edee934c86
@@ -0,0 +1,9 @@
1
+ /ext/ffruby/*.o
2
+ /ext/ffruby/*.so
3
+ /ext/ffruby/Makefile
4
+ /ext/ffruby/mkmf.log
5
+ /Gemfile.lock
6
+ /lib
7
+ /pkg
8
+ /rdoc
9
+ /tmp
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
@@ -6,11 +6,11 @@ FFruby is a Ruby interface to FFmpeg's libavformat and libavcodec. It allows you
6
6
 
7
7
  === Where do I go for support and contributions?
8
8
 
9
- We are hosted by RubyForge at http://rubyforge.org/projects/ffruby.
9
+ We are hosted on GitHub at https://github.com/chewi/ffruby.
10
10
 
11
11
  === Where do I get the latest version?
12
12
 
13
- It should be available through RubyGems as ffruby. Failing that, try RubyForge.
13
+ It should be available through RubyGems as ffruby. Failing that, try GitHub.
14
14
 
15
15
  === What about transcoding?
16
16
 
@@ -22,6 +22,11 @@ Being able to reliably read the source file's metadata is very important in deci
22
22
 
23
23
  == Changes
24
24
 
25
+ === 0.2.3 (2014/11/15)
26
+
27
+ - Compatibility with newer FFmpeg versions.
28
+ - Compatibility with Ruby 1.9.
29
+
25
30
  === 0.2.2 (2010/11/29)
26
31
 
27
32
  - Fix compilation with -fno-common for OS X.
@@ -50,4 +55,4 @@ Being able to reliably read the source file's metadata is very important in deci
50
55
 
51
56
  == Copyright
52
57
 
53
- Copyright (c) 2007-2010 James Le Cuirot. See LICENSE for details.
58
+ Copyright (c) 2007-2014 James Le Cuirot. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,48 +1,13 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- RDOC_FILES = [ "README.rdoc", "ext/ffruby/ffruby{file,stream,}.c" ]
5
-
6
- begin
7
- require 'jeweler'
8
- Jeweler::Tasks.new do |gem|
9
- gem.name = "ffruby"
10
- gem.version = File.read('VERSION')
11
- gem.license = "LGPL-2.1"
12
- gem.author = "James Le Cuirot"
13
- gem.email = "chewi@aura-online.co.uk"
14
- gem.rubyforge_project = "ffruby"
15
- gem.homepage = "http://rubyforge.org/projects/ffruby/"
16
- gem.summary = "A Ruby interface to FFmpeg's libavformat and libavcodec."
17
- gem.description = "A Ruby interface to FFmpeg's libavformat and libavcodec. It allows you to query metadata from a wide variety of media files through some simple classes."
18
- gem.requirements = "FFmpeg libraries and also development headers if building."
19
- gem.files = RDOC_FILES + [ "LICENSE", "Rakefile", "VERSION", "ext/ffruby/{extconf.rb,ffruby.h}" ]
20
- gem.extra_rdoc_files = RDOC_FILES
21
- end
22
- Jeweler::GemcutterTasks.new
23
- Jeweler::RubyforgeTasks.new do |rubyforge|
24
- rubyforge.doc_task = "rdoc"
25
- rubyforge.remote_doc_path = ""
26
- end
27
- rescue LoadError
28
- puts "To prepare a gem, please install the jeweler gem."
29
- end
30
-
31
- begin
32
- require 'rake/rdoctask'
33
- Rake::RDocTask.new do |rdoc|
34
- rdoc.rdoc_dir = 'rdoc'
35
- rdoc.title = "FFruby " + File.read('VERSION')
36
- rdoc.rdoc_files.include *RDOC_FILES
37
- end
38
- rescue LoadError
39
- puts "To build the documentation, please install the rdoc gem."
40
- end
41
-
42
- begin
43
- require 'rake/extensiontask'
44
- Rake::ExtensionTask.new('ffruby')
45
- task :default => :compile
46
- rescue LoadError
47
- puts "To build the library, please install the rake-compiler gem."
1
+ require "bundler/gem_tasks"
2
+ require "rake/extensiontask"
3
+ require "rdoc/task"
4
+
5
+ spec = Gem::Specification.load(File.expand_path("../ffruby.gemspec", __FILE__))
6
+ Rake::ExtensionTask.new("ffruby", spec)
7
+
8
+ RDoc::Task.new do |rdoc|
9
+ rdoc.main = "README.rdoc"
10
+ rdoc.rdoc_dir = "rdoc"
11
+ rdoc.title = "FFruby " + File.read(File.expand_path("../VERSION", __FILE__)).chomp
12
+ rdoc.rdoc_files.include *`git ls-files \*.{c,h,rdoc}`.split("\n")
48
13
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
@@ -1,10 +1,17 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "mkmf"
4
+ $DEFLIBPATH = []
4
5
 
5
6
  dir_config("ffmpeg")
7
+ libs = %w( avutil avformat avcodec )
8
+ headers = []
6
9
 
7
- %w( avformat avcodec ).each do |lib|
10
+ libs.each do |lib|
11
+ have_library(lib)
12
+ end
13
+
14
+ libs.each do |lib|
8
15
  header = "#{lib}.h"
9
16
  result = false
10
17
 
@@ -12,7 +19,7 @@ dir_config("ffmpeg")
12
19
  path = File.join(dir, header)
13
20
 
14
21
  if checking_for(path) { try_cpp(cpp_include(path)) }
15
- result = path
22
+ headers << result = path
16
23
  break
17
24
  end
18
25
  end
@@ -20,11 +27,13 @@ dir_config("ffmpeg")
20
27
  $defs.push "-D#{lib.upcase}_H_PATH=\"<#{result || header}>\""
21
28
  end
22
29
 
23
- have_library("avformat")
24
- have_library("avcodec")
25
-
26
30
  %w( iformat oformat codec ).each do |func|
27
- have_func("av_#{func}_next")
31
+ have_func("av_#{func}_next", headers)
32
+ end
33
+
34
+ %w( av_dict_get avformat_open_input avformat_close_input avformat_find_stream_info avcodec_open2 ).each do |func|
35
+ have_func(func, headers)
28
36
  end
29
37
 
38
+ have_const("AVMEDIA_TYPE_UNKNOWN", headers)
30
39
  create_makefile("ffruby")
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2007-2010 James Le Cuirot
2
+ * Copyright (c) 2007-2014 James Le Cuirot
3
3
  *
4
4
  * This file is part of FFruby.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2007-2010 James Le Cuirot
2
+ * Copyright (c) 2007-2014 James Le Cuirot
3
3
  *
4
4
  * This file is part of FFruby.
5
5
  *
@@ -22,6 +22,7 @@
22
22
  #define _FFRUBY_H_
23
23
 
24
24
  #include <ruby.h>
25
+ #include AVUTIL_H_PATH
25
26
  #include AVFORMAT_H_PATH
26
27
  #include AVCODEC_H_PATH
27
28
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2007-2010 James Le Cuirot
2
+ * Copyright (c) 2007-2014 James Le Cuirot
3
3
  *
4
4
  * This file is part of FFruby.
5
5
  *
@@ -21,6 +21,7 @@
21
21
  #include "ffruby.h"
22
22
  #include <string.h>
23
23
  #include <stdio.h>
24
+ #include <stdlib.h>
24
25
 
25
26
  VALUE cFFrubyFile;
26
27
 
@@ -41,7 +42,11 @@ static void ffrf_free(AVFormatContext *fmt)
41
42
  avcodec_close(fmt->streams[i]->codec);
42
43
  }
43
44
 
45
+ #ifdef HAVE_AVFORMAT_CLOSE_INPUT
46
+ avformat_close_input(&fmt);
47
+ #else
44
48
  av_close_input_file(fmt);
49
+ #endif
45
50
  }
46
51
  }
47
52
 
@@ -57,60 +62,99 @@ static AVFormatContext* ffrf_get_fmt(VALUE self)
57
62
  return fmt;
58
63
  }
59
64
 
60
- /* Returns the title string. */
61
- static VALUE ffrf_title(VALUE self)
65
+ #ifdef HAVE_AV_DICT_GET
66
+
67
+ static VALUE ffrf_get_metadata_str(VALUE self, const char *key)
62
68
  {
63
69
  AVFormatContext *fmt = ffrf_get_fmt(self);
64
- return rb_str_new2(fmt->title);
70
+ AVDictionaryEntry *tag = av_dict_get(fmt->metadata, key, NULL, 0);
71
+ return (tag && *tag->value) ? rb_str_new2(tag->value) : Qnil;
65
72
  }
66
73
 
67
- /* Returns the author string. */
68
- static VALUE ffrf_author(VALUE self)
74
+ static VALUE ffrf_get_metadata_int(VALUE self, const char *key)
69
75
  {
70
76
  AVFormatContext *fmt = ffrf_get_fmt(self);
71
- return rb_str_new2(fmt->author);
77
+ AVDictionaryEntry *tag = av_dict_get(fmt->metadata, key, NULL, 0);
78
+
79
+ if (tag)
80
+ {
81
+ int value = atoi(tag->value);
82
+ if (value != 0) return INT2NUM(value);
83
+ }
84
+
85
+ return Qnil;
86
+ }
87
+
88
+ #define METADATA_STR(key) ffrf_get_metadata_str(self, # key)
89
+ #define METADATA_INT(key) ffrf_get_metadata_int(self, # key)
90
+
91
+ #else
92
+
93
+ static VALUE ffrf_get_metadata_str(char* value)
94
+ {
95
+ return (value && *value) ? rb_str_new2(value) : Qnil;
96
+ }
97
+
98
+ static VALUE ffrf_get_metadata_int(int value)
99
+ {
100
+ return value != 0 ? INT2NUM(value) : Qnil;
101
+ }
102
+
103
+ #define METADATA_STR(key) ffrf_get_metadata_str(ffrf_get_fmt(self)->key)
104
+ #define METADATA_INT(key) ffrf_get_metadata_int(ffrf_get_fmt(self)->key)
105
+
106
+ #endif
107
+
108
+ /* Returns the title string. */
109
+ static VALUE ffrf_title(VALUE self)
110
+ {
111
+ return METADATA_STR(title);
112
+ }
113
+
114
+ /* Returns the artist/author string. */
115
+ static VALUE ffrf_artist(VALUE self)
116
+ {
117
+ #ifdef HAVE_AV_DICT_GET
118
+ return METADATA_STR(artist);
119
+ #else
120
+ return METADATA_STR(author);
121
+ #endif
72
122
  }
73
123
 
74
124
  /* Returns the copyright string. */
75
125
  static VALUE ffrf_copyright(VALUE self)
76
126
  {
77
- AVFormatContext *fmt = ffrf_get_fmt(self);
78
- return rb_str_new2(fmt->copyright);
127
+ return METADATA_STR(copyright);
79
128
  }
80
129
 
81
130
  /* Returns the comment string. */
82
131
  static VALUE ffrf_comment(VALUE self)
83
132
  {
84
- AVFormatContext *fmt = ffrf_get_fmt(self);
85
- return rb_str_new2(fmt->comment);
133
+ return METADATA_STR(comment);
86
134
  }
87
135
 
88
136
  /* Returns the album string. */
89
137
  static VALUE ffrf_album(VALUE self)
90
138
  {
91
- AVFormatContext *fmt = ffrf_get_fmt(self);
92
- return rb_str_new2(fmt->album);
139
+ return METADATA_STR(album);
93
140
  }
94
141
 
95
142
  /* Returns the genre string. */
96
143
  static VALUE ffrf_genre(VALUE self)
97
144
  {
98
- AVFormatContext *fmt = ffrf_get_fmt(self);
99
- return rb_str_new2(fmt->genre);
145
+ return METADATA_STR(genre);
100
146
  }
101
147
 
102
148
  /* Returns the year. */
103
149
  static VALUE ffrf_year(VALUE self)
104
150
  {
105
- AVFormatContext *fmt = ffrf_get_fmt(self);
106
- return INT2NUM(fmt->year);
151
+ return METADATA_INT(year);
107
152
  }
108
153
 
109
154
  /* Returns the track number. */
110
155
  static VALUE ffrf_track(VALUE self)
111
156
  {
112
- AVFormatContext *fmt = ffrf_get_fmt(self);
113
- return INT2NUM(fmt->track);
157
+ return METADATA_INT(track);
114
158
  }
115
159
 
116
160
  /* Returns the duration in seconds as a float. */
@@ -157,10 +201,18 @@ static VALUE ffrf_streams(VALUE self)
157
201
 
158
202
  switch (fmt->streams[i]->codec->codec_type)
159
203
  {
204
+ #ifdef HAVE_CONST_AVMEDIA_TYPE_UNKNOWN
205
+ case AVMEDIA_TYPE_VIDEO:
206
+ #else
160
207
  case CODEC_TYPE_VIDEO:
208
+ #endif
161
209
  rb_ary_push(streams, rb_class_new_instance(2, args, cFFrubyVideoStream));
162
210
  break;
211
+ #ifdef HAVE_CONST_AVMEDIA_TYPE_UNKNOWN
212
+ case AVMEDIA_TYPE_AUDIO:
213
+ #else
163
214
  case CODEC_TYPE_AUDIO:
215
+ #endif
164
216
  rb_ary_push(streams, rb_class_new_instance(2, args, cFFrubyAudioStream));
165
217
  break;
166
218
  default:
@@ -183,7 +235,7 @@ static VALUE ffrf_av_streams(VALUE self, VALUE klass)
183
235
  typed_streams = rb_ary_new();
184
236
  Check_Type(streams, T_ARRAY);
185
237
 
186
- for (i = 0; i < RARRAY(streams)->len; i++)
238
+ for (i = 0; i < RARRAY_LEN(streams); i++)
187
239
  {
188
240
  if (rb_obj_is_kind_of((stream = rb_ary_entry(streams, i)), klass))
189
241
  rb_ary_push(typed_streams, stream);
@@ -212,13 +264,17 @@ static VALUE ffrf_initialize(VALUE self, VALUE filename)
212
264
  {
213
265
  size_t len;
214
266
  char* msg;
215
- AVFormatContext *fmt;
216
267
  VALUE exception;
268
+ AVFormatContext *fmt = NULL;
217
269
 
218
270
  VALUE filename_str = rb_funcall(filename, rb_intern("to_s"), 0);
219
- char* filename_ptr = RSTRING(filename_str)->ptr;
271
+ char* filename_ptr = RSTRING_PTR(filename_str);
220
272
 
273
+ #ifdef HAVE_AVFORMAT_OPEN_INPUT
274
+ if (avformat_open_input(&fmt, filename_ptr, NULL, NULL) != 0)
275
+ #else
221
276
  if (av_open_input_file(&fmt, filename_ptr, NULL, 0, NULL) != 0)
277
+ #endif
222
278
  {
223
279
  len = strlen("Cannot open file !") + strlen(filename_ptr) + 1;
224
280
  msg = ALLOC_N(char, len);
@@ -228,7 +284,11 @@ static VALUE ffrf_initialize(VALUE self, VALUE filename)
228
284
  rb_exc_raise(exception);
229
285
  }
230
286
 
287
+ #ifdef HAVE_AVFORMAT_FIND_STREAM_INFO
288
+ if (avformat_find_stream_info(fmt, NULL) < 0)
289
+ #else
231
290
  if (av_find_stream_info(fmt) < 0)
291
+ #endif
232
292
  {
233
293
  len = strlen("Problem reading file !") + strlen(filename_ptr) + 1;
234
294
  msg = ALLOC_N(char, len);
@@ -252,7 +312,7 @@ void Init_ffrf()
252
312
  rb_define_alloc_func(cFFrubyFile, ffrf_alloc);
253
313
  rb_define_method(cFFrubyFile, "initialize", ffrf_initialize, 1);
254
314
  rb_define_method(cFFrubyFile, "title", ffrf_title, 0);
255
- rb_define_method(cFFrubyFile, "author", ffrf_author, 0);
315
+ rb_define_method(cFFrubyFile, "artist", ffrf_artist, 0);
256
316
  rb_define_method(cFFrubyFile, "copyright", ffrf_copyright, 0);
257
317
  rb_define_method(cFFrubyFile, "comment", ffrf_comment, 0);
258
318
  rb_define_method(cFFrubyFile, "album", ffrf_album, 0);
@@ -265,4 +325,5 @@ void Init_ffrf()
265
325
  rb_define_method(cFFrubyFile, "streams", ffrf_streams, 0);
266
326
  rb_define_method(cFFrubyFile, "video_streams", ffrf_video_streams, 0);
267
327
  rb_define_method(cFFrubyFile, "audio_streams", ffrf_audio_streams, 0);
328
+ rb_define_alias(cFFrubyFile, "author", "artist");
268
329
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2007-2010 James Le Cuirot
2
+ * Copyright (c) 2007-2014 James Le Cuirot
3
3
  *
4
4
  * This file is part of FFruby.
5
5
  *
@@ -50,7 +50,11 @@ static void ffrs_open_codec(AVStream* stream)
50
50
  if ((codec = avcodec_find_decoder(stream->codec->codec_id)) == NULL)
51
51
  rb_raise(rb_eIOError, "Cannot find codec!");
52
52
 
53
+ #ifdef HAVE_AVCODEC_OPEN2
54
+ if (avcodec_open2(stream->codec, codec, NULL) < 0)
55
+ #else
53
56
  if (avcodec_open(stream->codec, codec) < 0)
57
+ #endif
54
58
  rb_raise(rb_eIOError, "Cannot open codec!");
55
59
  }
56
60
  }
@@ -179,16 +183,14 @@ static VALUE ffras_sample_rate(VALUE self)
179
183
  static VALUE ffrs_initialize(VALUE self, VALUE file, VALUE index)
180
184
  {
181
185
  AVFormatContext *fmt;
182
- AVStream *stream;
183
186
  unsigned int i = FIX2UINT(index);
184
187
 
185
188
  Data_Get_Struct(file, AVFormatContext, fmt);
186
189
 
187
- if (i < 0 || i >= fmt->nb_streams)
190
+ if (i >= fmt->nb_streams)
188
191
  rb_raise(rb_eIndexError, "Stream index out of range!");
189
192
 
190
193
  DATA_PTR(self) = fmt->streams[i];
191
- stream = ffrs_get_stream(self);
192
194
 
193
195
  return self;
194
196
  }
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "ffruby"
5
+ s.version = File.read(File.expand_path("../VERSION", __FILE__)).chomp
6
+ s.license = "LGPL-2.1"
7
+ s.authors = ["James Le Cuirot"]
8
+ s.email = "chewi@aura-online.co.uk"
9
+ s.homepage = "https://github.com/chewi/ffruby"
10
+ s.summary = "A Ruby interface to FFmpeg's libavformat and libavcodec."
11
+ s.description = "A Ruby interface to FFmpeg's libavformat and libavcodec. It allows you to query metadata from a wide variety of media files through some simple classes."
12
+ s.requirements = "FFmpeg libraries and also development headers if building."
13
+
14
+ s.extensions = ["ext/ffruby/extconf.rb"]
15
+ s.extra_rdoc_files = `git ls-files \*.{c,h,rdoc}`.split("\n")
16
+ s.files = `git ls-files`.split("\n")
17
+
18
+ s.add_development_dependency "bundler"
19
+ s.add_development_dependency "rake"
20
+ s.add_development_dependency "rake-compiler"
21
+ end
metadata CHANGED
@@ -1,36 +1,72 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ffruby
3
- version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 2
9
- - 2
10
- version: 0.2.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.3
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - James Le Cuirot
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2010-11-29 00:00:00 +00:00
19
- default_executable:
20
- dependencies: []
21
-
22
- description: A Ruby interface to FFmpeg's libavformat and libavcodec. It allows you to query metadata from a wide variety of media files through some simple classes.
11
+ date: 2014-11-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake-compiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: A Ruby interface to FFmpeg's libavformat and libavcodec. It allows you
56
+ to query metadata from a wide variety of media files through some simple classes.
23
57
  email: chewi@aura-online.co.uk
24
58
  executables: []
25
-
26
- extensions:
59
+ extensions:
27
60
  - ext/ffruby/extconf.rb
28
- extra_rdoc_files:
61
+ extra_rdoc_files:
29
62
  - README.rdoc
30
63
  - ext/ffruby/ffruby.c
64
+ - ext/ffruby/ffruby.h
31
65
  - ext/ffruby/ffrubyfile.c
32
66
  - ext/ffruby/ffrubystream.c
33
- files:
67
+ files:
68
+ - ".gitignore"
69
+ - Gemfile
34
70
  - LICENSE
35
71
  - README.rdoc
36
72
  - Rakefile
@@ -40,39 +76,30 @@ files:
40
76
  - ext/ffruby/ffruby.h
41
77
  - ext/ffruby/ffrubyfile.c
42
78
  - ext/ffruby/ffrubystream.c
43
- has_rdoc: true
44
- homepage: http://rubyforge.org/projects/ffruby/
45
- licenses:
79
+ - ffruby.gemspec
80
+ homepage: https://github.com/chewi/ffruby
81
+ licenses:
46
82
  - LGPL-2.1
83
+ metadata: {}
47
84
  post_install_message:
48
- rdoc_options:
49
- - --charset=UTF-8
50
- require_paths:
85
+ rdoc_options: []
86
+ require_paths:
51
87
  - lib
52
- required_ruby_version: !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
55
90
  - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
61
- required_rubygems_version: !ruby/object:Gem::Requirement
62
- none: false
63
- requirements:
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
64
95
  - - ">="
65
- - !ruby/object:Gem::Version
66
- hash: 3
67
- segments:
68
- - 0
69
- version: "0"
70
- requirements:
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements:
71
99
  - FFmpeg libraries and also development headers if building.
72
- rubyforge_project: ffruby
73
- rubygems_version: 1.3.7
100
+ rubyforge_project:
101
+ rubygems_version: 2.2.2
74
102
  signing_key:
75
- specification_version: 3
103
+ specification_version: 4
76
104
  summary: A Ruby interface to FFmpeg's libavformat and libavcodec.
77
105
  test_files: []
78
-