mxfinfo 0.1.3 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40c3818cd8093fed50a65570f8e79c90aa5239c26faa6eaf4e88896452ffc670
4
- data.tar.gz: 3726fef5774780d8e09a5afbdd8d16027800cad5247eb74c847c36e64920e095
3
+ metadata.gz: '0891821de9c4eef60dde42ddc083cc6a118580768198009962ece8957726f284'
4
+ data.tar.gz: ef9540ce8dd3394e802855220eace91cb64b65fff699574daaa34a13dfff26f8
5
5
  SHA512:
6
- metadata.gz: 14f9e195f73eaf3ae355adec02a6411bcfd70a26d81d9d519a64961771509ac0c4f1f22931a1a2367993069a0211befdd51269efa694332dc5b94a75b0499c33
7
- data.tar.gz: 956d1a30dfb4a3b2cceae263407a6f8130e0da14628e3267c0f51bc9ad0f99bb741943c5a1a8a989b347b773420128bd1df0511cf2cb9fc82b83a136c7293e78
6
+ metadata.gz: 689ea935346dfedffa75e9c14945644b42600f23a8984495034ce04ca73f2a9eea5a7d93a25ba01f64bee127be05e9b1d6f0e53fcf56bed8b7e11e354f676932
7
+ data.tar.gz: de108b7dd52c51ff567df1a3383b7403f32b09ba75e3a8df88034e73c697122d478710b93b6d2d66b171c97e6a83271859825a85a50515f68a470568a3e8b742
data/.gitignore CHANGED
@@ -15,6 +15,7 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .clangd
18
19
 
19
20
  # YARD artifacts
20
21
  .yardoc
@@ -0,0 +1,52 @@
1
+ [
2
+ {
3
+ "arguments": [
4
+ "gcc",
5
+ "-c",
6
+ "-I.",
7
+ "-I/home/steved/.rbenv/versions/2.5.8/include/ruby-2.5.0/x86_64-linux",
8
+ "-I/home/steved/.rbenv/versions/2.5.8/include/ruby-2.5.0/ruby/backward",
9
+ "-I/home/steved/.rbenv/versions/2.5.8/include/ruby-2.5.0",
10
+ "-I../../../../ext/mxfinfo",
11
+ "-I/opt/environments/strawberry/include/libMXF-1.0",
12
+ "--std=gnu99",
13
+ "-D_GNU_SOURCE",
14
+ "-Wall",
15
+ "-I/home/steved/.rbenv/versions/2.5.8/include",
16
+ "-fPIC",
17
+ "-O3",
18
+ "-ggdb3",
19
+ "-fPIC",
20
+ "-o",
21
+ "avid_mxf_info.o",
22
+ "../../../../ext/mxfinfo/avid_mxf_info.c"
23
+ ],
24
+ "directory": "/home/steved/Documents/projective/github/mxfinfo/tmp/x86_64-linux/mxfinfo/2.5.8",
25
+ "file": "../../../../ext/mxfinfo/avid_mxf_info.c"
26
+ },
27
+ {
28
+ "arguments": [
29
+ "gcc",
30
+ "-c",
31
+ "-I.",
32
+ "-I/home/steved/.rbenv/versions/2.5.8/include/ruby-2.5.0/x86_64-linux",
33
+ "-I/home/steved/.rbenv/versions/2.5.8/include/ruby-2.5.0/ruby/backward",
34
+ "-I/home/steved/.rbenv/versions/2.5.8/include/ruby-2.5.0",
35
+ "-I../../../../ext/mxfinfo",
36
+ "-I/opt/environments/strawberry/include/libMXF-1.0",
37
+ "--std=gnu99",
38
+ "-D_GNU_SOURCE",
39
+ "-Wall",
40
+ "-I/home/steved/.rbenv/versions/2.5.8/include",
41
+ "-fPIC",
42
+ "-O3",
43
+ "-ggdb3",
44
+ "-fPIC",
45
+ "-o",
46
+ "mxfinfo.o",
47
+ "../../../../ext/mxfinfo/mxfinfo.c"
48
+ ],
49
+ "directory": "/home/steved/Documents/projective/github/mxfinfo/tmp/x86_64-linux/mxfinfo/2.5.8",
50
+ "file": "../../../../ext/mxfinfo/mxfinfo.c"
51
+ }
52
+ ]
@@ -9,13 +9,12 @@ static
9
9
  VALUE rb_time_from_mxf_timestamp(mxfTimestamp *ts)
10
10
  {
11
11
  /*
12
- * NOTE: This is probably not thread-safe, since struct tm*
13
- * returned by localtime is shared static.
12
+ * NOTE: This is probably not thread-safe, since struct tm* returned by localtime is shared static.
14
13
  */
15
14
  time_t t;
16
15
  time(&t);
17
16
  struct tm *tmts;
18
- tmts = localtime(&t);
17
+ tmts = gmtime(&t);
19
18
 
20
19
  tmts->tm_year = (int) ts->year - 1900;
21
20
  tmts->tm_mon = (int) ts->month - 1;
@@ -23,6 +22,7 @@ VALUE rb_time_from_mxf_timestamp(mxfTimestamp *ts)
23
22
  tmts->tm_hour = (int) ts->hour;
24
23
  tmts->tm_min = (int) ts->min;
25
24
  tmts->tm_sec = (int) ts->sec;
25
+ tmts->tm_isdst = -1;
26
26
 
27
27
  return rb_time_new(mktime(tmts), ts->qmsec);
28
28
  }
@@ -90,6 +90,9 @@ VALUE rb_str_from_label(const unsigned char *lbl, int len)
90
90
 
91
91
  VALUE m_mxfinfo = Qnil;
92
92
  VALUE c_infoobject = Qnil;
93
+ VALUE c_error = Qnil;
94
+ VALUE c_eNotOpAtom = Qnil;
95
+ VALUE c_eNotReadable = Qnil;
93
96
 
94
97
  static
95
98
  void cio_free(void *ptr) {
@@ -133,17 +136,17 @@ VALUE cio_new(VALUE class, VALUE path)
133
136
  switch(params.result)
134
137
  {
135
138
  case -2:
136
- rb_raise(rb_eIOError, "Failed to open file.");
139
+ rb_raise(c_eNotReadable, "Failed to open file.");
137
140
  break;
138
141
  case -3:
139
- rb_raise(rb_eIOError, "Failed to read header partition.");
142
+ rb_raise(c_eNotReadable, "Failed to read header partition.");
140
143
  break;
141
144
  case -4:
142
- rb_raise(rb_eStandardError, "File is not OP-Atom.");
145
+ rb_raise(c_eNotOpAtom, "File is not OP-Atom.");
143
146
  break;
144
147
  case -1:
145
148
  default:
146
- rb_raise(rb_eStandardError, "Failed to read info.");
149
+ rb_raise(c_eNotReadable, "Failed to read info.");
147
150
  break;
148
151
  }
149
152
 
@@ -292,6 +295,10 @@ void Init_mxfinfo()
292
295
  {
293
296
  m_mxfinfo = rb_define_module("MXFInfo");
294
297
 
298
+ c_error = rb_define_class_under(m_mxfinfo, "Error", rb_eStandardError);
299
+ c_eNotOpAtom = rb_define_class_under(c_error, "NotOpAtom", c_error);
300
+ c_eNotReadable = rb_define_class_under(c_error, "NotReadable", c_error);
301
+
295
302
  c_infoobject = rb_define_class_under(m_mxfinfo, "InfoObject", rb_cObject);
296
303
  rb_define_singleton_method(c_infoobject, "new", cio_new, 1);
297
304
 
@@ -1,4 +1,3 @@
1
1
  module MXFInfo
2
- VERSION = '0.1.3'
2
+ VERSION = '0.2.0'.freeze
3
3
  end
4
-
data/mxfinfo.gemspec CHANGED
@@ -1,14 +1,14 @@
1
- require File.expand_path('../lib/mxfinfo/version', __FILE__)
1
+ require File.expand_path('lib/mxfinfo/version', __dir__)
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.authors = ['Steve Dierker', 'Malte Rohde']
5
- gem.email = ['technology@flavoursys.com']
6
- gem.description = %q{MXFinfo is a gem that wraps avidmxfinfo from libmxf in a native ruby extension.}
7
- gem.summary = %q{MXFinfo is a gem that wraps avidmxfinfo from libmxf in a native ruby extension.}
8
- gem.homepage = 'http://github.com/flavoursys/mxfinfo'
5
+ gem.email = ['technology@projective.io']
6
+ gem.description = 'MXFinfo is a gem that wraps avidmxfinfo from libmxf in a native ruby extension.'
7
+ gem.summary = 'MXFinfo is a gem that wraps avidmxfinfo from libmxf in a native ruby extension.'
8
+ gem.homepage = 'http://github.com/projectivetech/mxfinfo'
9
9
 
10
- gem.files = `git ls-files`.split($\)
11
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
10
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
11
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
12
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
13
  gem.extensions = ['ext/mxfinfo/extconf.rb']
14
14
  gem.name = 'mxfinfo'
@@ -18,8 +18,7 @@ Gem::Specification.new do |gem|
18
18
 
19
19
  gem.required_ruby_version = '>= 1.9.3'
20
20
 
21
+ gem.add_development_dependency 'rake-compiler', '~> 0.9'
21
22
  gem.add_development_dependency 'rspec', '~> 3'
22
23
  gem.add_development_dependency 'rspec-its', '1.2.0'
23
- gem.add_development_dependency 'rake-compiler', '~> 0.9'
24
24
  end
25
-
@@ -2,29 +2,29 @@ require 'spec_helper'
2
2
  require 'time'
3
3
 
4
4
  describe 'MXFInfo::InfoObject' do
5
- context 'when created from an valid MXF file' do
5
+ context 'with a valid MXF file' do
6
6
  subject do
7
- MXFInfo.scan File.expand_path('../fixtures/IMG_0395.MOV.A14DC7130D.mxf', __FILE__)
7
+ MXFInfo.scan File.expand_path('fixtures/IMG_0395.MOV.A14DC7130D.mxf', __dir__)
8
8
  end
9
9
 
10
10
  its(:project_name) { should eq('Ballerinas_zippy') }
11
11
  its(:clip_name) { should eq('IMG_0395.MOV') }
12
12
  its(:clip_created_at) { should eq(Time.parse('2011-05-08 22:02:53.000')) }
13
- its(:project_edit_rate) { should eq((25/1)) }
13
+ its(:project_edit_rate) { should eq((25 / 1)) }
14
14
  its(:clip_duration) { should eq(287) }
15
- its(:clip_edit_rate) { should eq((25/1)) }
15
+ its(:clip_edit_rate) { should eq((25 / 1)) }
16
16
  its(:video_tracks) { should eq(1) }
17
17
  its(:audio_tracks) { should eq(1) }
18
18
  its(:clip_track_string) { should eq('V1 A1') }
19
19
  its(:essence_type) { should eq('PCM') }
20
20
  its(:essence_label) { should eq('060e2b34040101010d01030102060200') }
21
21
  its(:track_number) { should eq(1) }
22
- its(:edit_rate) { should eq((48000/1)) }
23
- its(:track_duration) { should eq(551040) }
24
- its(:segment_duration) { should eq(551040) }
22
+ its(:edit_rate) { should eq((48_000 / 1)) }
23
+ its(:track_duration) { should eq(551_040) }
24
+ its(:segment_duration) { should eq(551_040) }
25
25
  its(:segment_offset) { should eq(0) }
26
26
  its(:start_timecode) { should eq(0) }
27
- its(:audio_sampling_rate) { should eq((48000/1)) }
27
+ its(:audio_sampling_rate) { should eq((48_000 / 1)) }
28
28
  its(:quantization_bits) { should eq(16) }
29
29
  its(:channel_count) { should eq(1) }
30
30
  its(:material_package_uid) { should eq('060a2b340101010101010f00130000004dc7130d05831a0a060e2b347f7f2a80') }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mxfinfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Dierker
@@ -9,54 +9,54 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-07-24 00:00:00.000000000 Z
12
+ date: 2021-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rspec
15
+ name: rake-compiler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3'
20
+ version: '0.9'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '3'
27
+ version: '0.9'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rspec-its
29
+ name: rspec
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '='
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 1.2.0
34
+ version: '3'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '='
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 1.2.0
41
+ version: '3'
42
42
  - !ruby/object:Gem::Dependency
43
- name: rake-compiler
43
+ name: rspec-its
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: '0.9'
48
+ version: 1.2.0
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: '0.9'
55
+ version: 1.2.0
56
56
  description: MXFinfo is a gem that wraps avidmxfinfo from libmxf in a native ruby
57
57
  extension.
58
58
  email:
59
- - technology@flavoursys.com
59
+ - technology@projective.io
60
60
  executables: []
61
61
  extensions:
62
62
  - ext/mxfinfo/extconf.rb
@@ -67,6 +67,7 @@ files:
67
67
  - LICENSE
68
68
  - README.md
69
69
  - Rakefile
70
+ - compile_commands.json
70
71
  - ext/mxfinfo/avid_mxf_info.c
71
72
  - ext/mxfinfo/avid_mxf_info.h
72
73
  - ext/mxfinfo/extconf.rb
@@ -79,7 +80,7 @@ files:
79
80
  - spec/info_object_spec.rb
80
81
  - spec/mxfinfo_spec.rb
81
82
  - spec/spec_helper.rb
82
- homepage: http://github.com/flavoursys/mxfinfo
83
+ homepage: http://github.com/projectivetech/mxfinfo
83
84
  licenses:
84
85
  - MIT
85
86
  metadata: {}
@@ -99,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
100
  version: '0'
100
101
  requirements: []
101
102
  rubyforge_project:
102
- rubygems_version: 2.7.6
103
+ rubygems_version: 2.7.6.2
103
104
  signing_key:
104
105
  specification_version: 4
105
106
  summary: MXFinfo is a gem that wraps avidmxfinfo from libmxf in a native ruby extension.