v4l2-ruby 0.9.1 → 0.9.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f8083f496de211116f0a2b5bd514ee0b59cf6d8aef1e252eab63ab95c30af21
4
- data.tar.gz: ec5a62fe43ee8ed4e204f1bbf2650b82dcbbb76d4113a06ca2fa8b8d2515789e
3
+ metadata.gz: be244fd6bc1590054d5f177e8eea4e446f1f526b1d0d3bee2a9ff91bb0eb9fb9
4
+ data.tar.gz: d31e3955aca0938c4e4a131323877c44c55d223ef14e8366c2beba30768f78fb
5
5
  SHA512:
6
- metadata.gz: e17288b2172260ed25e884d34d5d243550704f5b00761a984ed48ce37564fadd2eae41876cbe014381d3456870c2477e956b1795b052567f24a73cf417558d64
7
- data.tar.gz: 767a8ce16f952a7271d6b7c81325c8c2e0b4501ebecd865071020560b2dafb8b6bbfa05a6b9572c50ddf8243a7c47af7ff1da4a777295586e1ba9729d85cc257
6
+ metadata.gz: 300875132ad4b5c060a1eb7ddfaff65040d28a902559bb120f4ec271c13d1e9ffc3f225415fbbb6930303e8fcefc0de85780149178ba7569bc4d39f090a5d323
7
+ data.tar.gz: b84fd83a6cd1f2141009a6032765be37334b9c8fa7edbf591245d7d6223984d70ebd005017262cb7a92bd61da7964e3ddee47d142965ac07c178136896c4d739
data/ext/v4l2/v4l2.c CHANGED
@@ -16,6 +16,7 @@
16
16
  #define N(x) (sizeof((x))/sizeof(*(x)))
17
17
 
18
18
  extern rb_encoding* rb_utf8_encoding(void);
19
+ extern rb_encoding* rb_default_internal_encoding(void);
19
20
 
20
21
  static VALUE module;
21
22
  static VALUE camera_klass;
@@ -153,9 +154,12 @@ get_menu_list(camera_t* ptr, int ctrl, int min, int max)
153
154
  err = camera_get_menu_item(ptr, ctrl, i, &item);
154
155
  if (!err) {
155
156
  VALUE tmp;
157
+ VALUE name;
156
158
 
157
- tmp = rb_obj_alloc(menu_item_klass);
158
- rb_ivar_set(tmp, id_iv_name, rb_str_new2((const char*)item.name));
159
+ tmp = rb_obj_alloc(menu_item_klass);
160
+ name = rb_enc_str_new_cstr((const char*)item.name, rb_utf8_encoding());
161
+
162
+ rb_ivar_set(tmp, id_iv_name, name);
159
163
  rb_ivar_set(tmp, id_iv_index, INT2FIX(item.index));
160
164
 
161
165
  rb_ary_push(ret, tmp);
@@ -178,9 +182,12 @@ get_int_menu_list(camera_t* ptr, int ctrl, int min, int max)
178
182
  err = camera_get_menu_item(ptr, ctrl, i, &item);
179
183
  if (!err) {
180
184
  VALUE tmp;
185
+ VALUE name;
186
+
187
+ tmp = rb_obj_alloc(menu_item_klass);
188
+ name = rb_enc_sprintf(rb_utf8_encoding(), "%lld", item.value);
181
189
 
182
- tmp = rb_obj_alloc(menu_item_klass);
183
- rb_ivar_set(tmp, id_iv_name, rb_sprintf("%lld", item.value));
190
+ rb_ivar_set(tmp, id_iv_name, name);
184
191
  rb_ivar_set(tmp, id_iv_index, INT2FIX(item.index));
185
192
 
186
193
  rb_ary_push(ret, tmp);
@@ -194,6 +201,7 @@ static VALUE
194
201
  get_control_info(camera_t* ptr, int ctrl)
195
202
  {
196
203
  VALUE ret;
204
+ VALUE name;
197
205
  int err;
198
206
  struct v4l2_queryctrl info;
199
207
 
@@ -202,8 +210,11 @@ get_control_info(camera_t* ptr, int ctrl)
202
210
  if (!err) {
203
211
  switch (info.type) {
204
212
  case V4L2_CTRL_TYPE_INTEGER:
205
- ret = rb_obj_alloc(integer_klass);
206
- rb_ivar_set(ret, id_iv_name, rb_str_new2((const char*)info.name));
213
+ ret = rb_obj_alloc(integer_klass);
214
+ name = rb_enc_str_new_cstr((const char*)info.name,
215
+ rb_utf8_encoding());
216
+
217
+ rb_ivar_set(ret, id_iv_name, name);
207
218
  rb_ivar_set(ret, id_iv_id, INT2NUM(info.id));
208
219
  rb_ivar_set(ret, id_iv_min, INT2FIX(info.minimum));
209
220
  rb_ivar_set(ret, id_iv_max, INT2FIX(info.maximum));
@@ -212,15 +223,21 @@ get_control_info(camera_t* ptr, int ctrl)
212
223
  break;
213
224
 
214
225
  case V4L2_CTRL_TYPE_BOOLEAN:
215
- ret = rb_obj_alloc(boolean_klass);
216
- rb_ivar_set(ret, id_iv_name, rb_str_new2((const char*)info.name));
226
+ ret = rb_obj_alloc(boolean_klass);
227
+ name = rb_enc_str_new_cstr((const char*)info.name,
228
+ rb_utf8_encoding());
229
+
230
+ rb_ivar_set(ret, id_iv_name, name);
217
231
  rb_ivar_set(ret, id_iv_id, INT2NUM(info.id));
218
232
  rb_ivar_set(ret, id_iv_default, (info.default_value)? Qtrue: Qfalse);
219
233
  break;
220
234
 
221
235
  case V4L2_CTRL_TYPE_MENU:
222
- ret = rb_obj_alloc(menu_klass);
223
- rb_ivar_set(ret, id_iv_name, rb_str_new2((const char*)info.name));
236
+ ret = rb_obj_alloc(menu_klass);
237
+ name = rb_enc_str_new_cstr((const char*)info.name,
238
+ rb_utf8_encoding());
239
+
240
+ rb_ivar_set(ret, id_iv_name, name);
224
241
  rb_ivar_set(ret, id_iv_id, INT2NUM(info.id));
225
242
  rb_ivar_set(ret, id_iv_default, INT2FIX(info.default_value));
226
243
  rb_ivar_set(ret, id_iv_items,
@@ -228,8 +245,11 @@ get_control_info(camera_t* ptr, int ctrl)
228
245
  break;
229
246
 
230
247
  case V4L2_CTRL_TYPE_INTEGER_MENU:
231
- ret = rb_obj_alloc(menu_klass);
232
- rb_ivar_set(ret, id_iv_name, rb_str_new2((const char*)info.name));
248
+ ret = rb_obj_alloc(menu_klass);
249
+ name = rb_enc_str_new_cstr((const char*)info.name,
250
+ rb_utf8_encoding());
251
+
252
+ rb_ivar_set(ret, id_iv_name, name);
233
253
  rb_ivar_set(ret, id_iv_id, INT2NUM(info.id));
234
254
  rb_ivar_set(ret, id_iv_default, INT2FIX(info.default_value));
235
255
  rb_ivar_set(ret, id_iv_items,
@@ -352,6 +372,7 @@ rb_camera_get_support_formats(VALUE self)
352
372
 
353
373
  VALUE fmt;
354
374
  VALUE fcc;
375
+ VALUE str;
355
376
 
356
377
  Data_Get_Struct(self, camera_t, ptr);
357
378
 
@@ -362,13 +383,18 @@ rb_camera_get_support_formats(VALUE self)
362
383
  if (err) break;
363
384
 
364
385
  fmt = rb_obj_alloc(fmt_desc_klass);
365
- fcc = rb_sprintf("%c%c%c%c",
366
- desc.pixelformat >> 0 & 0xff,
367
- desc.pixelformat >> 8 & 0xff,
368
- desc.pixelformat >> 16 & 0xff,
369
- desc.pixelformat >> 24 & 0xff);
386
+ fcc = rb_enc_sprintf(rb_utf8_encoding(),
387
+ "%c%c%c%c",
388
+ desc.pixelformat >> 0 & 0xff,
389
+ desc.pixelformat >> 8 & 0xff,
390
+ desc.pixelformat >> 16 & 0xff,
391
+ desc.pixelformat >> 24 & 0xff);
392
+
393
+ str = rb_enc_str_new_cstr((const char*)desc.description,
394
+ rb_utf8_encoding());
395
+
370
396
  rb_ivar_set(fmt, id_iv_fcc, fcc);
371
- rb_ivar_set(fmt, id_iv_desc, rb_str_new2(desc.description));
397
+ rb_ivar_set(fmt, id_iv_desc, str);
372
398
 
373
399
  rb_ary_push(ret, fmt);
374
400
  }
@@ -481,14 +507,32 @@ rb_camera_get_frame_capabilities(VALUE self, VALUE fmt)
481
507
  }
482
508
 
483
509
  static VALUE
484
- rb_camera_set_control(VALUE self, VALUE id, VALUE val)
510
+ rb_camera_set_control(VALUE self, VALUE id, VALUE _val)
485
511
  {
486
512
  camera_t* ptr;
487
513
  int err;
514
+ int val;
488
515
 
489
516
  Data_Get_Struct(self, camera_t, ptr);
490
517
 
491
- err = camera_set_control(ptr, FIX2INT(id), FIX2INT(val));
518
+ switch (TYPE(_val)) {
519
+ case T_TRUE:
520
+ val = 1;
521
+ break;
522
+
523
+ case T_FALSE:
524
+ val = 0;
525
+ break;
526
+
527
+ case T_FIXNUM:
528
+ val = FIX2INT(_val);
529
+ break;
530
+
531
+ default:
532
+ rb_raise(rb_eTypeError, "invalid type of control value");
533
+ }
534
+
535
+ err = camera_set_control(ptr, FIX2INT(id), val);
492
536
  if (err) {
493
537
  rb_raise(rb_eRuntimeError, "set control failed.");
494
538
  }
@@ -953,8 +997,8 @@ Init_v4l2()
953
997
  id_iv_driver = rb_intern_const("@driver");
954
998
  id_iv_bus = rb_intern_const("@bus");
955
999
  id_iv_id = rb_intern_const("@id");
956
- id_iv_min = rb_intern_const("@max");
957
- id_iv_max = rb_intern_const("@min");
1000
+ id_iv_min = rb_intern_const("@min");
1001
+ id_iv_max = rb_intern_const("@max");
958
1002
  id_iv_step = rb_intern_const("@step");
959
1003
  id_iv_default = rb_intern_const("@default");
960
1004
  id_iv_items = rb_intern_const("@items");
data/lib/v4l2/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Video4Linux2
2
- VERSION = "0.9.1"
2
+ VERSION = "0.9.2"
3
3
  end
data/v4l2-ruby.gemspec CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.summary = %q{V4L2 insterface library for ruby}
13
13
  spec.description = %q{V4L2 insterface library for ruby}
14
14
  spec.homepage = "https://github.com/kwgt/v4l2-ruby"
15
+ spec.license = "MIT"
15
16
 
16
17
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
18
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -27,12 +28,15 @@ Gem::Specification.new do |spec|
27
28
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
28
29
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
29
30
  end
31
+
30
32
  spec.bindir = "exe"
31
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
34
  spec.extensions = ["ext/v4l2/extconf.rb"]
33
35
  spec.require_paths = ["lib"]
34
36
 
37
+ spec.required_ruby_version = ">= 2.4.0"
38
+
35
39
  spec.add_development_dependency "bundler", "~> 1.17"
36
40
  spec.add_development_dependency "rake", "~> 10.0"
37
- spec.add_development_dependency "rake-compiler"
41
+ spec.add_development_dependency "rake-compiler", "~> 1.0.7"
38
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: v4l2-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Kuwagata
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-16 00:00:00.000000000 Z
11
+ date: 2019-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rake-compiler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 1.0.7
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 1.0.7
55
55
  description: V4L2 insterface library for ruby
56
56
  email:
57
57
  - kgt9221@gmail.com
@@ -72,7 +72,8 @@ files:
72
72
  - lib/v4l2/version.rb
73
73
  - v4l2-ruby.gemspec
74
74
  homepage: https://github.com/kwgt/v4l2-ruby
75
- licenses: []
75
+ licenses:
76
+ - MIT
76
77
  metadata:
77
78
  homepage_uri: https://github.com/kwgt/v4l2-ruby
78
79
  post_install_message:
@@ -83,15 +84,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
84
  requirements:
84
85
  - - ">="
85
86
  - !ruby/object:Gem::Version
86
- version: '0'
87
+ version: 2.4.0
87
88
  required_rubygems_version: !ruby/object:Gem::Requirement
88
89
  requirements:
89
90
  - - ">="
90
91
  - !ruby/object:Gem::Version
91
92
  version: '0'
92
93
  requirements: []
93
- rubyforge_project:
94
- rubygems_version: 2.7.6
94
+ rubygems_version: 3.0.3
95
95
  signing_key:
96
96
  specification_version: 4
97
97
  summary: V4L2 insterface library for ruby