ffruby 0.2.2 → 0.2.3

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.
@@ -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
-