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.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.travis.yml +5 -3
- data/README.md +12 -3
- data/bmff.gemspec +4 -2
- data/lib/bmff/box/protection_system_specific_header.rb +1 -0
- data/lib/bmff/box/segment_index.rb +42 -0
- data/lib/bmff/box/segment_type.rb +6 -0
- data/lib/bmff/box/subsegment_index.rb +30 -0
- data/lib/bmff/box/track_encryption.rb +3 -0
- data/lib/bmff/box.rb +3 -0
- data/lib/bmff/version.rb +1 -1
- data/test/bmff/box/test_audio_sample_entry.rb +1 -1
- data/test/bmff/box/test_base.rb +1 -1
- data/test/bmff/box/test_bit_rate.rb +1 -1
- data/test/bmff/box/test_chunk_large_offset.rb +1 -1
- data/test/bmff/box/test_chunk_offset.rb +1 -1
- data/test/bmff/box/test_clean_aperture.rb +1 -1
- data/test/bmff/box/test_colour_information.rb +1 -1
- data/test/bmff/box/test_compact_sample_size.rb +1 -1
- data/test/bmff/box/test_composition_offset.rb +1 -1
- data/test/bmff/box/test_composition_to_decode.rb +1 -1
- data/test/bmff/box/test_copyright.rb +1 -1
- data/test/bmff/box/test_data_entry_url.rb +1 -1
- data/test/bmff/box/test_data_entry_urn.rb +1 -1
- data/test/bmff/box/test_data_information.rb +1 -1
- data/test/bmff/box/test_data_reference.rb +1 -1
- data/test/bmff/box/test_degradation_priority.rb +1 -1
- data/test/bmff/box/test_edit.rb +1 -1
- data/test/bmff/box/test_edit_list.rb +1 -1
- data/test/bmff/box/test_file_type.rb +1 -1
- data/test/bmff/box/test_free_space.rb +1 -1
- data/test/bmff/box/test_handler.rb +1 -1
- data/test/bmff/box/test_hint_media_header.rb +1 -1
- data/test/bmff/box/test_hint_sample_entry.rb +1 -1
- data/test/bmff/box/test_level_assignment.rb +1 -1
- data/test/bmff/box/test_media.rb +1 -1
- data/test/bmff/box/test_media_data.rb +1 -1
- data/test/bmff/box/test_media_header.rb +1 -1
- data/test/bmff/box/test_media_information.rb +1 -1
- data/test/bmff/box/test_movie.rb +1 -1
- data/test/bmff/box/test_movie_extends.rb +1 -1
- data/test/bmff/box/test_movie_extends_header.rb +1 -1
- data/test/bmff/box/test_movie_fragment.rb +1 -1
- data/test/bmff/box/test_movie_fragment_header.rb +1 -1
- data/test/bmff/box/test_movie_fragment_random_access.rb +1 -1
- data/test/bmff/box/test_movie_fragment_random_access_offset.rb +1 -1
- data/test/bmff/box/test_movie_header.rb +1 -1
- data/test/bmff/box/test_null_media_header.rb +1 -1
- data/test/bmff/box/test_original_format.rb +1 -1
- data/test/bmff/box/test_padding_bits.rb +1 -1
- data/test/bmff/box/test_pixel_aspect_ratio.rb +1 -1
- data/test/bmff/box/test_progressive_download_info.rb +1 -1
- data/test/bmff/box/test_protection_sheme_info.rb +1 -1
- data/test/bmff/box/test_protection_system_specific_header.rb +29 -1
- data/test/bmff/box/test_sample_auxiliary_information_offsets.rb +1 -1
- data/test/bmff/box/test_sample_auxiliary_information_sizes.rb +1 -1
- data/test/bmff/box/test_sample_dependency_type.rb +1 -1
- data/test/bmff/box/test_sample_description.rb +1 -1
- data/test/bmff/box/test_sample_encryption.rb +1 -1
- data/test/bmff/box/test_sample_size.rb +1 -1
- data/test/bmff/box/test_sample_table.rb +1 -1
- data/test/bmff/box/test_sample_to_chunk.rb +1 -1
- data/test/bmff/box/test_segment_index.rb +110 -0
- data/test/bmff/box/test_segment_type.rb +30 -0
- data/test/bmff/box/test_shadow_sync_sample.rb +1 -1
- data/test/bmff/box/test_sheme_information.rb +1 -1
- data/test/bmff/box/test_sheme_type.rb +1 -1
- data/test/bmff/box/test_sound_media_header.rb +1 -1
- data/test/bmff/box/test_sub_sample_information.rb +1 -1
- data/test/bmff/box/test_subsegment_index.rb +43 -0
- data/test/bmff/box/test_sync_sample.rb +1 -1
- data/test/bmff/box/test_text_meta_data_sample_entry.rb +1 -1
- data/test/bmff/box/test_time_to_sample.rb +1 -1
- data/test/bmff/box/test_track.rb +1 -1
- data/test/bmff/box/test_track_encryption.rb +29 -1
- data/test/bmff/box/test_track_extends.rb +1 -1
- data/test/bmff/box/test_track_fragment.rb +1 -1
- data/test/bmff/box/test_track_fragment_base_media_decode_time.rb +1 -1
- data/test/bmff/box/test_track_fragment_header.rb +1 -1
- data/test/bmff/box/test_track_fragment_random_access.rb +1 -1
- data/test/bmff/box/test_track_group.rb +1 -1
- data/test/bmff/box/test_track_group_type.rb +1 -1
- data/test/bmff/box/test_track_header.rb +1 -1
- data/test/bmff/box/test_track_reference.rb +1 -1
- data/test/bmff/box/test_track_reference_type.rb +2 -2
- data/test/bmff/box/test_track_run.rb +1 -1
- data/test/bmff/box/test_track_selection.rb +1 -1
- data/test/bmff/box/test_uri.rb +1 -1
- data/test/bmff/box/test_uri_init.rb +1 -1
- data/test/bmff/box/test_uri_meta_sample_entry.rb +1 -1
- data/test/bmff/box/test_user_data.rb +1 -1
- data/test/bmff/box/test_video_media_header.rb +1 -1
- data/test/bmff/box/test_visual_sample_entry.rb +1 -1
- data/test/bmff/box/test_xml_meta_data_sample_entry.rb +1 -1
- data/test/bmff/test_binary_accessor.rb +1 -1
- data/test/bmff/test_file_container.rb +42 -1
- data/test/minitest_helper.rb +3 -0
- metadata +52 -25
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxProtectionSystemSpecificHeader <
|
|
8
|
+
class TestBMFFBoxProtectionSystemSpecificHeader < Minitest::Test
|
|
9
9
|
def test_parse_playready
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -35,4 +35,32 @@ class TestBMFFBoxProtectionSystemSpecificHeader < MiniTest::Unit::TestCase
|
|
|
35
35
|
assert_equal(16, box.data_size)
|
|
36
36
|
assert_equal("datadatadatadata", box.data)
|
|
37
37
|
end
|
|
38
|
+
|
|
39
|
+
def test_parse_pssh_box
|
|
40
|
+
io = StringIO.new("", "r+:ascii-8bit")
|
|
41
|
+
io.extend(BMFF::BinaryAccessor)
|
|
42
|
+
io.write_uint32(0)
|
|
43
|
+
io.write_ascii("pssh")
|
|
44
|
+
io.write_uint8(0) # version
|
|
45
|
+
io.write_uint24(0) # flags
|
|
46
|
+
|
|
47
|
+
io.write_uuid("5e629af5-38da-4063-8977-97ffbd9902d4") # system_id (Marlin)
|
|
48
|
+
io.write_uint32(16) # data_size
|
|
49
|
+
io.write_byte("datadatadatadata") # data
|
|
50
|
+
|
|
51
|
+
size = io.pos
|
|
52
|
+
io.pos = 0
|
|
53
|
+
io.write_uint32(size)
|
|
54
|
+
io.pos = 0
|
|
55
|
+
|
|
56
|
+
box = BMFF::Box.get_box(io, nil)
|
|
57
|
+
assert_instance_of(BMFF::Box::ProtectionSystemSpecificHeader, box)
|
|
58
|
+
assert_equal(size, box.actual_size)
|
|
59
|
+
assert_equal("pssh", box.type)
|
|
60
|
+
assert_equal(0, box.version)
|
|
61
|
+
assert_equal(0, box.flags)
|
|
62
|
+
assert_equal("5e629af5-38da-4063-8977-97ffbd9902d4", box.system_id.to_s)
|
|
63
|
+
assert_equal(16, box.data_size)
|
|
64
|
+
assert_equal("datadatadatadata", box.data)
|
|
65
|
+
end
|
|
38
66
|
end
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSampleAuxiliaryInformationOffsets <
|
|
8
|
+
class TestBMFFBoxSampleAuxiliaryInformationOffsets < Minitest::Test
|
|
9
9
|
def test_parse_v0_flags_0
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSampleAuxiliaryInformationSizes <
|
|
8
|
+
class TestBMFFBoxSampleAuxiliaryInformationSizes < Minitest::Test
|
|
9
9
|
def test_parse_flags_0
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSampleDescription <
|
|
8
|
+
class TestBMFFBoxSampleDescription < Minitest::Test
|
|
9
9
|
class DummyBox
|
|
10
10
|
attr_accessor :parent, :box
|
|
11
11
|
def find(type)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSampleEncryption <
|
|
8
|
+
class TestBMFFBoxSampleEncryption < Minitest::Test
|
|
9
9
|
def get_dummy_parent
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSampleSize <
|
|
8
|
+
class TestBMFFBoxSampleSize < Minitest::Test
|
|
9
9
|
def test_parse_size_0
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSampleTable <
|
|
8
|
+
class TestBMFFBoxSampleTable < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSampleToChunk <
|
|
8
|
+
class TestBMFFBoxSampleToChunk < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
# vim: set expandtab tabstop=2 shiftwidth=2 softtabstop=2 autoindent:
|
|
3
|
+
|
|
4
|
+
require_relative '../../minitest_helper'
|
|
5
|
+
require 'bmff/box'
|
|
6
|
+
require 'stringio'
|
|
7
|
+
|
|
8
|
+
class TestBMFFSegmentIndex < Minitest::Test
|
|
9
|
+
def test_parse_v0
|
|
10
|
+
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
|
+
io.extend(BMFF::BinaryAccessor)
|
|
12
|
+
io.write_uint32(0)
|
|
13
|
+
io.write_ascii("sidx")
|
|
14
|
+
io.write_uint8(0) # version
|
|
15
|
+
io.write_uint24(0) # flags
|
|
16
|
+
io.write_uint32(1) # reference_id
|
|
17
|
+
io.write_uint32(30000) # timescale
|
|
18
|
+
io.write_uint32(1) # earliest_presentation_time
|
|
19
|
+
io.write_uint32(2) # first_offset
|
|
20
|
+
io.write_uint16(0) # reserved1
|
|
21
|
+
io.write_uint16(3) # reference_count
|
|
22
|
+
# reference
|
|
23
|
+
io.write_uint32(1 << 31 | 1) # reference_type(1) + referenced_size(31)
|
|
24
|
+
io.write_uint32(10) # subsegment_duration
|
|
25
|
+
io.write_uint32(1 << 31 | 1 << 28 | 11) # starts_with_sap(1) + sap_type(3) + sap_delta_time(28)
|
|
26
|
+
|
|
27
|
+
io.write_uint32(2) # reference_type(1) + referenced_size(31)
|
|
28
|
+
io.write_uint32(20) # subsegment_duration
|
|
29
|
+
io.write_uint32(1 << 29 | 22) # starts_with_sap(1) + sap_type(3) + sap_delta_time(28)
|
|
30
|
+
|
|
31
|
+
io.write_uint32(1 << 31 | 3) # reference_type(1) + referenced_size(31)
|
|
32
|
+
io.write_uint32(30) # subsegment_duration
|
|
33
|
+
io.write_uint32(1 << 31 | 1 << 30 | 33) # starts_with_sap(1) + sap_type(3) + sap_delta_time(28)
|
|
34
|
+
|
|
35
|
+
size = io.pos
|
|
36
|
+
io.pos = 0
|
|
37
|
+
io.write_uint32(size)
|
|
38
|
+
io.pos = 0
|
|
39
|
+
|
|
40
|
+
box = BMFF::Box.get_box(io, nil)
|
|
41
|
+
assert_instance_of(BMFF::Box::SegmentIndex, box)
|
|
42
|
+
assert_equal(size, box.actual_size)
|
|
43
|
+
assert_equal("sidx", box.type)
|
|
44
|
+
assert_equal(0, box.version)
|
|
45
|
+
assert_equal(0, box.flags)
|
|
46
|
+
assert_equal(1, box.reference_id)
|
|
47
|
+
assert_equal(30000, box.timescale)
|
|
48
|
+
assert_equal(1, box.earliest_presentation_time)
|
|
49
|
+
assert_equal(2, box.first_offset)
|
|
50
|
+
assert_equal(0, box.reserved1)
|
|
51
|
+
assert_equal(3, box.reference_count)
|
|
52
|
+
assert_equal([true, false, true], box.reference_type)
|
|
53
|
+
assert_equal([1, 2, 3], box.referenced_size)
|
|
54
|
+
assert_equal([10, 20, 30], box.subsegment_duration)
|
|
55
|
+
assert_equal([true, false, true], box.start_with_sap)
|
|
56
|
+
assert_equal([1, 2, 4], box.sap_type)
|
|
57
|
+
assert_equal([11, 22, 33], box.sap_delta_time)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_parse_v1
|
|
61
|
+
io = StringIO.new("", "r+:ascii-8bit")
|
|
62
|
+
io.extend(BMFF::BinaryAccessor)
|
|
63
|
+
io.write_uint32(0)
|
|
64
|
+
io.write_ascii("sidx")
|
|
65
|
+
io.write_uint8(1) # version
|
|
66
|
+
io.write_uint24(0) # flags
|
|
67
|
+
io.write_uint32(1) # reference_id
|
|
68
|
+
io.write_uint32(30000) # timescale
|
|
69
|
+
io.write_uint64(1) # earliest_presentation_time
|
|
70
|
+
io.write_uint64(2) # first_offset
|
|
71
|
+
io.write_uint16(0) # reserved1
|
|
72
|
+
io.write_uint16(3) # reference_count
|
|
73
|
+
# reference
|
|
74
|
+
io.write_uint32(1 << 31 | 1) # reference_type(1) + referenced_size(31)
|
|
75
|
+
io.write_uint32(10) # subsegment_duration
|
|
76
|
+
io.write_uint32(1 << 31 | 1 << 28 | 11) # starts_with_sap(1) + sap_type(3) + sap_delta_time(28)
|
|
77
|
+
|
|
78
|
+
io.write_uint32(2) # reference_type(1) + referenced_size(31)
|
|
79
|
+
io.write_uint32(20) # subsegment_duration
|
|
80
|
+
io.write_uint32(1 << 29 | 22) # starts_with_sap(1) + sap_type(3) + sap_delta_time(28)
|
|
81
|
+
|
|
82
|
+
io.write_uint32(1 << 31 | 3) # reference_type(1) + referenced_size(31)
|
|
83
|
+
io.write_uint32(30) # subsegment_duration
|
|
84
|
+
io.write_uint32(1 << 31 | 1 << 30 | 33) # starts_with_sap(1) + sap_type(3) + sap_delta_time(28)
|
|
85
|
+
|
|
86
|
+
size = io.pos
|
|
87
|
+
io.pos = 0
|
|
88
|
+
io.write_uint32(size)
|
|
89
|
+
io.pos = 0
|
|
90
|
+
|
|
91
|
+
box = BMFF::Box.get_box(io, nil)
|
|
92
|
+
assert_instance_of(BMFF::Box::SegmentIndex, box)
|
|
93
|
+
assert_equal(size, box.actual_size)
|
|
94
|
+
assert_equal("sidx", box.type)
|
|
95
|
+
assert_equal(1, box.version)
|
|
96
|
+
assert_equal(0, box.flags)
|
|
97
|
+
assert_equal(1, box.reference_id)
|
|
98
|
+
assert_equal(30000, box.timescale)
|
|
99
|
+
assert_equal(1, box.earliest_presentation_time)
|
|
100
|
+
assert_equal(2, box.first_offset)
|
|
101
|
+
assert_equal(0, box.reserved1)
|
|
102
|
+
assert_equal(3, box.reference_count)
|
|
103
|
+
assert_equal([true, false, true], box.reference_type)
|
|
104
|
+
assert_equal([1, 2, 3], box.referenced_size)
|
|
105
|
+
assert_equal([10, 20, 30], box.subsegment_duration)
|
|
106
|
+
assert_equal([true, false, true], box.start_with_sap)
|
|
107
|
+
assert_equal([1, 2, 4], box.sap_type)
|
|
108
|
+
assert_equal([11, 22, 33], box.sap_delta_time)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
# vim: set expandtab tabstop=2 shiftwidth=2 softtabstop=2 autoindent:
|
|
3
|
+
|
|
4
|
+
require_relative '../../minitest_helper'
|
|
5
|
+
require 'bmff/box'
|
|
6
|
+
require 'stringio'
|
|
7
|
+
|
|
8
|
+
class TestBMFFBoxSegmentType < Minitest::Test
|
|
9
|
+
def test_parse
|
|
10
|
+
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
|
+
io.extend(BMFF::BinaryAccessor)
|
|
12
|
+
io.write_uint32(0)
|
|
13
|
+
io.write_ascii("styp")
|
|
14
|
+
io.write_ascii("msdh") # major_brand
|
|
15
|
+
io.write_uint32(0) # minor_version
|
|
16
|
+
io.write_ascii("msdhmsix") # compatible_brands
|
|
17
|
+
size = io.pos
|
|
18
|
+
io.pos = 0
|
|
19
|
+
io.write_uint32(size)
|
|
20
|
+
io.pos = 0
|
|
21
|
+
|
|
22
|
+
box = BMFF::Box.get_box(io, nil)
|
|
23
|
+
assert_instance_of(BMFF::Box::SegmentType, box)
|
|
24
|
+
assert_equal(size, box.actual_size)
|
|
25
|
+
assert_equal("styp", box.type)
|
|
26
|
+
assert_equal("msdh", box.major_brand)
|
|
27
|
+
assert_equal(0, box.minor_version)
|
|
28
|
+
assert_equal(%w(msdh msix), box.compatible_brands)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxShadowSyncSample <
|
|
8
|
+
class TestBMFFBoxShadowSyncSample < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSchemeInformation <
|
|
8
|
+
class TestBMFFBoxSchemeInformation < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSchemeType <
|
|
8
|
+
class TestBMFFBoxSchemeType < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSoundMediaHeader <
|
|
8
|
+
class TestBMFFBoxSoundMediaHeader < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSubSampleInformation <
|
|
8
|
+
class TestBMFFBoxSubSampleInformation < Minitest::Test
|
|
9
9
|
def test_parse_v0
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
# vim: set expandtab tabstop=2 shiftwidth=2 softtabstop=2 autoindent:
|
|
3
|
+
|
|
4
|
+
require_relative '../../minitest_helper'
|
|
5
|
+
require 'bmff/box'
|
|
6
|
+
require 'stringio'
|
|
7
|
+
|
|
8
|
+
class TestBMFFSubsegmentIndex < Minitest::Test
|
|
9
|
+
def test_parse
|
|
10
|
+
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
|
+
io.extend(BMFF::BinaryAccessor)
|
|
12
|
+
io.write_uint32(0)
|
|
13
|
+
io.write_ascii("ssix")
|
|
14
|
+
io.write_uint8(0) # version
|
|
15
|
+
io.write_uint24(0) # flags
|
|
16
|
+
io.write_uint32(2) # subsegment_count
|
|
17
|
+
2.times do |i|
|
|
18
|
+
io.write_uint32(i + 1) # range_count
|
|
19
|
+
(i + 1).times do |j|
|
|
20
|
+
io.write_uint8(j) # level
|
|
21
|
+
io.write_uint24(j + 1) # range_size
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
size = io.pos
|
|
25
|
+
io.pos = 0
|
|
26
|
+
io.write_uint32(size)
|
|
27
|
+
io.pos = 0
|
|
28
|
+
|
|
29
|
+
box = BMFF::Box.get_box(io, nil)
|
|
30
|
+
assert_instance_of(BMFF::Box::SubsegmentIndex, box)
|
|
31
|
+
assert_equal(size, box.actual_size)
|
|
32
|
+
assert_equal("ssix", box.type)
|
|
33
|
+
assert_equal(0, box.version)
|
|
34
|
+
assert_equal(0, box.flags)
|
|
35
|
+
assert_equal(2, box.subsegment_count)
|
|
36
|
+
assert_equal([1, 2], box.range_count)
|
|
37
|
+
assert_equal(2, box.ranges.count)
|
|
38
|
+
assert_equal([0], box.ranges[0].level)
|
|
39
|
+
assert_equal([1], box.ranges[0].range_size)
|
|
40
|
+
assert_equal([0, 1], box.ranges[1].level)
|
|
41
|
+
assert_equal([1, 2], box.ranges[1].range_size)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxSyncSample <
|
|
8
|
+
class TestBMFFBoxSyncSample < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTextMetaDataSampleEntry <
|
|
8
|
+
class TestBMFFBoxTextMetaDataSampleEntry < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTimeToSample <
|
|
8
|
+
class TestBMFFBoxTimeToSample < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
data/test/bmff/box/test_track.rb
CHANGED
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrack <
|
|
8
|
+
class TestBMFFBoxTrack < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackEncryption <
|
|
8
|
+
class TestBMFFBoxTrackEncryption < Minitest::Test
|
|
9
9
|
def test_parse_flags_0
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -35,4 +35,32 @@ class TestBMFFBoxTrackEncryption < MiniTest::Unit::TestCase
|
|
|
35
35
|
assert_equal(8, box.default_iv_size)
|
|
36
36
|
assert_equal("00010203-0405-0607-0809-0a0b0c0d0e0f", box.default_kid.to_s)
|
|
37
37
|
end
|
|
38
|
+
|
|
39
|
+
def test_parse_tenc_box
|
|
40
|
+
io = StringIO.new("", "r+:ascii-8bit")
|
|
41
|
+
io.extend(BMFF::BinaryAccessor)
|
|
42
|
+
io.write_uint32(0)
|
|
43
|
+
io.write_ascii("tenc")
|
|
44
|
+
io.write_uint8(0) # version
|
|
45
|
+
io.write_uint24(0) # flags
|
|
46
|
+
|
|
47
|
+
io.write_uint24(1) # default_is_encrypted
|
|
48
|
+
io.write_uint8(8) # default_iv_size
|
|
49
|
+
io.write_uuid("00010203-0405-0607-0809-0a0b0c0d0e0f") # default_kid
|
|
50
|
+
|
|
51
|
+
size = io.pos
|
|
52
|
+
io.pos = 0
|
|
53
|
+
io.write_uint32(size)
|
|
54
|
+
io.pos = 0
|
|
55
|
+
|
|
56
|
+
box = BMFF::Box.get_box(io, nil)
|
|
57
|
+
assert_instance_of(BMFF::Box::TrackEncryption, box)
|
|
58
|
+
assert_equal(size, box.actual_size)
|
|
59
|
+
assert_equal("tenc", box.type)
|
|
60
|
+
assert_equal(0, box.version)
|
|
61
|
+
assert_equal(0, box.flags)
|
|
62
|
+
assert_equal(1, box.default_is_encrypted)
|
|
63
|
+
assert_equal(8, box.default_iv_size)
|
|
64
|
+
assert_equal("00010203-0405-0607-0809-0a0b0c0d0e0f", box.default_kid.to_s)
|
|
65
|
+
end
|
|
38
66
|
end
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackExtends <
|
|
8
|
+
class TestBMFFBoxTrackExtends < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackFragment <
|
|
8
|
+
class TestBMFFBoxTrackFragment < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackFragmentBaseMediaDecodeTime <
|
|
8
|
+
class TestBMFFBoxTrackFragmentBaseMediaDecodeTime < Minitest::Test
|
|
9
9
|
def test_parse_v0
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackFragmentHeader <
|
|
8
|
+
class TestBMFFBoxTrackFragmentHeader < Minitest::Test
|
|
9
9
|
def test_parse_flags_full_present
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackFragmentRandomAccess <
|
|
8
|
+
class TestBMFFBoxTrackFragmentRandomAccess < Minitest::Test
|
|
9
9
|
def test_parse_v0
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackGroup <
|
|
8
|
+
class TestBMFFBoxTrackGroup < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackGroupType <
|
|
8
|
+
class TestBMFFBoxTrackGroupType < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackHeader <
|
|
8
|
+
class TestBMFFBoxTrackHeader < Minitest::Test
|
|
9
9
|
def test_parse_v0
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackReference <
|
|
8
|
+
class TestBMFFBoxTrackReference < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackReferenceType <
|
|
8
|
+
class TestBMFFBoxTrackReferenceType < Minitest::Test
|
|
9
9
|
def test_parse_hint
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -80,7 +80,7 @@ class TestBMFFBoxTrackReferenceType < MiniTest::Unit::TestCase
|
|
|
80
80
|
assert_equal([1], box.track_ids)
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
-
def
|
|
83
|
+
def test_parse_vplx
|
|
84
84
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
85
85
|
io.extend(BMFF::BinaryAccessor)
|
|
86
86
|
io.write_uint32(0)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackRun <
|
|
8
|
+
class TestBMFFBoxTrackRun < Minitest::Test
|
|
9
9
|
def test_parse_v0_flags_full_present
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxTrackSelection <
|
|
8
|
+
class TestBMFFBoxTrackSelection < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
data/test/bmff/box/test_uri.rb
CHANGED
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxURI <
|
|
8
|
+
class TestBMFFBoxURI < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxURIInit <
|
|
8
|
+
class TestBMFFBoxURIInit < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxURIMetaSampleEntry <
|
|
8
|
+
class TestBMFFBoxURIMetaSampleEntry < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxUserData <
|
|
8
|
+
class TestBMFFBoxUserData < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxVideoMediaHeader <
|
|
8
|
+
class TestBMFFBoxVideoMediaHeader < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxVisualSampleEntry <
|
|
8
|
+
class TestBMFFBoxVisualSampleEntry < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|
|
@@ -5,7 +5,7 @@ require_relative '../../minitest_helper'
|
|
|
5
5
|
require 'bmff/box'
|
|
6
6
|
require 'stringio'
|
|
7
7
|
|
|
8
|
-
class TestBMFFBoxXMLMetaDataSampleEntry <
|
|
8
|
+
class TestBMFFBoxXMLMetaDataSampleEntry < Minitest::Test
|
|
9
9
|
def test_parse
|
|
10
10
|
io = StringIO.new("", "r+:ascii-8bit")
|
|
11
11
|
io.extend(BMFF::BinaryAccessor)
|