bmff 0.1.0 → 0.1.1

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.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.travis.yml +5 -3
  4. data/README.md +12 -3
  5. data/bmff.gemspec +4 -2
  6. data/lib/bmff/box/protection_system_specific_header.rb +1 -0
  7. data/lib/bmff/box/segment_index.rb +42 -0
  8. data/lib/bmff/box/segment_type.rb +6 -0
  9. data/lib/bmff/box/subsegment_index.rb +30 -0
  10. data/lib/bmff/box/track_encryption.rb +3 -0
  11. data/lib/bmff/box.rb +3 -0
  12. data/lib/bmff/version.rb +1 -1
  13. data/test/bmff/box/test_audio_sample_entry.rb +1 -1
  14. data/test/bmff/box/test_base.rb +1 -1
  15. data/test/bmff/box/test_bit_rate.rb +1 -1
  16. data/test/bmff/box/test_chunk_large_offset.rb +1 -1
  17. data/test/bmff/box/test_chunk_offset.rb +1 -1
  18. data/test/bmff/box/test_clean_aperture.rb +1 -1
  19. data/test/bmff/box/test_colour_information.rb +1 -1
  20. data/test/bmff/box/test_compact_sample_size.rb +1 -1
  21. data/test/bmff/box/test_composition_offset.rb +1 -1
  22. data/test/bmff/box/test_composition_to_decode.rb +1 -1
  23. data/test/bmff/box/test_copyright.rb +1 -1
  24. data/test/bmff/box/test_data_entry_url.rb +1 -1
  25. data/test/bmff/box/test_data_entry_urn.rb +1 -1
  26. data/test/bmff/box/test_data_information.rb +1 -1
  27. data/test/bmff/box/test_data_reference.rb +1 -1
  28. data/test/bmff/box/test_degradation_priority.rb +1 -1
  29. data/test/bmff/box/test_edit.rb +1 -1
  30. data/test/bmff/box/test_edit_list.rb +1 -1
  31. data/test/bmff/box/test_file_type.rb +1 -1
  32. data/test/bmff/box/test_free_space.rb +1 -1
  33. data/test/bmff/box/test_handler.rb +1 -1
  34. data/test/bmff/box/test_hint_media_header.rb +1 -1
  35. data/test/bmff/box/test_hint_sample_entry.rb +1 -1
  36. data/test/bmff/box/test_level_assignment.rb +1 -1
  37. data/test/bmff/box/test_media.rb +1 -1
  38. data/test/bmff/box/test_media_data.rb +1 -1
  39. data/test/bmff/box/test_media_header.rb +1 -1
  40. data/test/bmff/box/test_media_information.rb +1 -1
  41. data/test/bmff/box/test_movie.rb +1 -1
  42. data/test/bmff/box/test_movie_extends.rb +1 -1
  43. data/test/bmff/box/test_movie_extends_header.rb +1 -1
  44. data/test/bmff/box/test_movie_fragment.rb +1 -1
  45. data/test/bmff/box/test_movie_fragment_header.rb +1 -1
  46. data/test/bmff/box/test_movie_fragment_random_access.rb +1 -1
  47. data/test/bmff/box/test_movie_fragment_random_access_offset.rb +1 -1
  48. data/test/bmff/box/test_movie_header.rb +1 -1
  49. data/test/bmff/box/test_null_media_header.rb +1 -1
  50. data/test/bmff/box/test_original_format.rb +1 -1
  51. data/test/bmff/box/test_padding_bits.rb +1 -1
  52. data/test/bmff/box/test_pixel_aspect_ratio.rb +1 -1
  53. data/test/bmff/box/test_progressive_download_info.rb +1 -1
  54. data/test/bmff/box/test_protection_sheme_info.rb +1 -1
  55. data/test/bmff/box/test_protection_system_specific_header.rb +29 -1
  56. data/test/bmff/box/test_sample_auxiliary_information_offsets.rb +1 -1
  57. data/test/bmff/box/test_sample_auxiliary_information_sizes.rb +1 -1
  58. data/test/bmff/box/test_sample_dependency_type.rb +1 -1
  59. data/test/bmff/box/test_sample_description.rb +1 -1
  60. data/test/bmff/box/test_sample_encryption.rb +1 -1
  61. data/test/bmff/box/test_sample_size.rb +1 -1
  62. data/test/bmff/box/test_sample_table.rb +1 -1
  63. data/test/bmff/box/test_sample_to_chunk.rb +1 -1
  64. data/test/bmff/box/test_segment_index.rb +110 -0
  65. data/test/bmff/box/test_segment_type.rb +30 -0
  66. data/test/bmff/box/test_shadow_sync_sample.rb +1 -1
  67. data/test/bmff/box/test_sheme_information.rb +1 -1
  68. data/test/bmff/box/test_sheme_type.rb +1 -1
  69. data/test/bmff/box/test_sound_media_header.rb +1 -1
  70. data/test/bmff/box/test_sub_sample_information.rb +1 -1
  71. data/test/bmff/box/test_subsegment_index.rb +43 -0
  72. data/test/bmff/box/test_sync_sample.rb +1 -1
  73. data/test/bmff/box/test_text_meta_data_sample_entry.rb +1 -1
  74. data/test/bmff/box/test_time_to_sample.rb +1 -1
  75. data/test/bmff/box/test_track.rb +1 -1
  76. data/test/bmff/box/test_track_encryption.rb +29 -1
  77. data/test/bmff/box/test_track_extends.rb +1 -1
  78. data/test/bmff/box/test_track_fragment.rb +1 -1
  79. data/test/bmff/box/test_track_fragment_base_media_decode_time.rb +1 -1
  80. data/test/bmff/box/test_track_fragment_header.rb +1 -1
  81. data/test/bmff/box/test_track_fragment_random_access.rb +1 -1
  82. data/test/bmff/box/test_track_group.rb +1 -1
  83. data/test/bmff/box/test_track_group_type.rb +1 -1
  84. data/test/bmff/box/test_track_header.rb +1 -1
  85. data/test/bmff/box/test_track_reference.rb +1 -1
  86. data/test/bmff/box/test_track_reference_type.rb +2 -2
  87. data/test/bmff/box/test_track_run.rb +1 -1
  88. data/test/bmff/box/test_track_selection.rb +1 -1
  89. data/test/bmff/box/test_uri.rb +1 -1
  90. data/test/bmff/box/test_uri_init.rb +1 -1
  91. data/test/bmff/box/test_uri_meta_sample_entry.rb +1 -1
  92. data/test/bmff/box/test_user_data.rb +1 -1
  93. data/test/bmff/box/test_video_media_header.rb +1 -1
  94. data/test/bmff/box/test_visual_sample_entry.rb +1 -1
  95. data/test/bmff/box/test_xml_meta_data_sample_entry.rb +1 -1
  96. data/test/bmff/test_binary_accessor.rb +1 -1
  97. data/test/bmff/test_file_container.rb +42 -1
  98. data/test/minitest_helper.rb +3 -0
  99. metadata +52 -25
@@ -5,7 +5,7 @@ require_relative '../minitest_helper'
5
5
  require 'bmff/binary_accessor'
6
6
  require 'stringio'
7
7
 
8
- class TestBMFFBinaryAccessor < MiniTest::Unit::TestCase
8
+ class TestBMFFBinaryAccessor < Minitest::Test
9
9
  def test_get_int8
10
10
  io = StringIO.new("\x00\xFF\x80", "r:ascii-8bit")
11
11
  io.extend(BMFF::BinaryAccessor)
@@ -4,7 +4,7 @@
4
4
  require_relative '../minitest_helper'
5
5
  require 'bmff/file_container'
6
6
 
7
- class TestBMFFFileContainer < MiniTest::Unit::TestCase
7
+ class TestBMFFFileContainer < Minitest::Test
8
8
  SAMPLE_FILE_COMMON_MP4 = 'bmff.mp4'
9
9
 
10
10
  def get_sample_file_path(file_name)
@@ -27,6 +27,47 @@ class TestBMFFFileContainer < MiniTest::Unit::TestCase
27
27
  end
28
28
  end
29
29
 
30
+ def test_find
31
+ open(get_sample_file_path(SAMPLE_FILE_COMMON_MP4), "rb:ascii-8bit") do |f|
32
+ file_container = BMFF::FileContainer.parse(f)
33
+ assert_kind_of(BMFF::FileContainer, file_container)
34
+ assert_kind_of(Array, file_container.boxes)
35
+ assert_equal(5, file_container.boxes.count)
36
+
37
+ box = file_container.find(BMFF::Box::FileType)
38
+ assert_kind_of(BMFF::Box::FileType, box)
39
+ box = file_container.find("ftyp")
40
+ assert_kind_of(BMFF::Box::FileType, box)
41
+
42
+ box = file_container.find(BMFF::Box::TrackRun)
43
+ assert_nil(box)
44
+ box = file_container.find("trun")
45
+ assert_nil(box)
46
+ end
47
+ end
48
+
49
+ def test_find_all
50
+ open(get_sample_file_path(SAMPLE_FILE_COMMON_MP4), "rb:ascii-8bit") do |f|
51
+ file_container = BMFF::FileContainer.parse(f)
52
+ assert_kind_of(BMFF::FileContainer, file_container)
53
+ assert_kind_of(Array, file_container.boxes)
54
+ assert_equal(5, file_container.boxes.count)
55
+
56
+ boxes = file_container.find_all(BMFF::Box::FreeSpace)
57
+ assert_equal(2, boxes.count)
58
+ assert_kind_of(BMFF::Box::FreeSpace, boxes[0])
59
+ assert_kind_of(BMFF::Box::FreeSpace, boxes[1])
60
+ boxes = file_container.find_all("free")
61
+ assert_kind_of(BMFF::Box::FreeSpace, boxes[0])
62
+ assert_kind_of(BMFF::Box::FreeSpace, boxes[1])
63
+
64
+ boxes = file_container.find_all(BMFF::Box::TrackRun)
65
+ assert_equal(0, boxes.count)
66
+ boxes = file_container.find_all("trun")
67
+ assert_equal(0, boxes.count)
68
+ end
69
+ end
70
+
30
71
  def test_select_descendants
31
72
  open(get_sample_file_path(SAMPLE_FILE_COMMON_MP4), "rb:ascii-8bit") do |f|
32
73
  file_container = BMFF::FileContainer.parse(f)
@@ -1,6 +1,9 @@
1
1
  # coding: utf-8
2
2
  # vim: set expandtab tabstop=2 shiftwidth=2 softtabstop=2 autoindent:
3
3
 
4
+ require 'coveralls'
5
+ Coveralls.wear!
6
+
4
7
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
5
8
  require 'bmff'
6
9
 
metadata CHANGED
@@ -1,62 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bmff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Takayuki Ogiso
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-06-29 00:00:00.000000000 Z
11
+ date: 2016-02-07 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: uuidtools
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: bundler
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
37
- version: '1.5'
33
+ version: '1.10'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
45
- version: '1.5'
40
+ version: '1.10'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rake
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '5.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '5.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coveralls
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
60
81
  - !ruby/object:Gem::Version
61
82
  version: '0'
62
83
  description: ISO Base Media File Format file parser.
@@ -66,6 +87,7 @@ executables: []
66
87
  extensions: []
67
88
  extra_rdoc_files: []
68
89
  files:
90
+ - .coveralls.yml
69
91
  - .gitignore
70
92
  - .travis.yml
71
93
  - CHANGELOG.md
@@ -135,9 +157,12 @@ files:
135
157
  - lib/bmff/box/sample_to_chunk.rb
136
158
  - lib/bmff/box/scheme_information.rb
137
159
  - lib/bmff/box/scheme_type.rb
160
+ - lib/bmff/box/segment_index.rb
161
+ - lib/bmff/box/segment_type.rb
138
162
  - lib/bmff/box/shadow_sync_sample.rb
139
163
  - lib/bmff/box/sound_media_header.rb
140
164
  - lib/bmff/box/sub_sample_information.rb
165
+ - lib/bmff/box/subsegment_index.rb
141
166
  - lib/bmff/box/sync_sample.rb
142
167
  - lib/bmff/box/text_meta_data_sample_entry.rb
143
168
  - lib/bmff/box/time_to_sample.rb
@@ -216,11 +241,14 @@ files:
216
241
  - test/bmff/box/test_sample_size.rb
217
242
  - test/bmff/box/test_sample_table.rb
218
243
  - test/bmff/box/test_sample_to_chunk.rb
244
+ - test/bmff/box/test_segment_index.rb
245
+ - test/bmff/box/test_segment_type.rb
219
246
  - test/bmff/box/test_shadow_sync_sample.rb
220
247
  - test/bmff/box/test_sheme_information.rb
221
248
  - test/bmff/box/test_sheme_type.rb
222
249
  - test/bmff/box/test_sound_media_header.rb
223
250
  - test/bmff/box/test_sub_sample_information.rb
251
+ - test/bmff/box/test_subsegment_index.rb
224
252
  - test/bmff/box/test_sync_sample.rb
225
253
  - test/bmff/box/test_text_meta_data_sample_entry.rb
226
254
  - test/bmff/box/test_time_to_sample.rb
@@ -251,30 +279,26 @@ files:
251
279
  homepage: https://github.com/zuku/bmff
252
280
  licenses:
253
281
  - MIT
282
+ metadata: {}
254
283
  post_install_message:
255
284
  rdoc_options: []
256
285
  require_paths:
257
286
  - lib
258
287
  required_ruby_version: !ruby/object:Gem::Requirement
259
- none: false
260
288
  requirements:
261
- - - ! '>='
289
+ - - '>='
262
290
  - !ruby/object:Gem::Version
263
- version: 1.9.0
291
+ version: 2.0.0
264
292
  required_rubygems_version: !ruby/object:Gem::Requirement
265
- none: false
266
293
  requirements:
267
- - - ! '>='
294
+ - - '>='
268
295
  - !ruby/object:Gem::Version
269
296
  version: '0'
270
- segments:
271
- - 0
272
- hash: -3184414125580658475
273
297
  requirements: []
274
298
  rubyforge_project:
275
- rubygems_version: 1.8.25
299
+ rubygems_version: 2.4.5
276
300
  signing_key:
277
- specification_version: 3
301
+ specification_version: 4
278
302
  summary: ISO BMFF Parser
279
303
  test_files:
280
304
  - test/bmff/box/test_audio_sample_entry.rb
@@ -328,11 +352,14 @@ test_files:
328
352
  - test/bmff/box/test_sample_size.rb
329
353
  - test/bmff/box/test_sample_table.rb
330
354
  - test/bmff/box/test_sample_to_chunk.rb
355
+ - test/bmff/box/test_segment_index.rb
356
+ - test/bmff/box/test_segment_type.rb
331
357
  - test/bmff/box/test_shadow_sync_sample.rb
332
358
  - test/bmff/box/test_sheme_information.rb
333
359
  - test/bmff/box/test_sheme_type.rb
334
360
  - test/bmff/box/test_sound_media_header.rb
335
361
  - test/bmff/box/test_sub_sample_information.rb
362
+ - test/bmff/box/test_subsegment_index.rb
336
363
  - test/bmff/box/test_sync_sample.rb
337
364
  - test/bmff/box/test_text_meta_data_sample_entry.rb
338
365
  - test/bmff/box/test_time_to_sample.rb