diff --git a/format/matroska/testdata/mp3.fqtest b/format/matroska/testdata/mp3.fqtest index 8cd6b05e..1f9db8ca 100644 --- a/format/matroska/testdata/mp3.fqtest +++ b/format/matroska/testdata/mp3.fqtest @@ -367,9 +367,9 @@ $ fq -d matroska dv mp3.mkv 0x230| c4 | . | original: 1 0x234.5-0x234.5 (0.1) 0x230| c4 | . | emphasis: "none" (0b0) 0x234.6-0x234.7 (0.2) | | | side_info{}: 0x235-0x245.7 (17) -0x230| 00 00 | .. | main_data_end: 0 0x235-0x236 (1.1) -0x230| 00 | . | private_bits: 0 0x236.1-0x236.5 (0.5) -0x230| 00 0a | .. | share0: 0 0x236.6-0x237.1 (0.4) +0x230| 00 00 | .. | main_data_begin: 0 0x235-0x236 (1.1) +0x230| 00 | . | share: 0 0x236.1-0x236.5 (0.5) +0x230| 00 0a | .. | scfsi0: 0 0x236.6-0x237.1 (0.4) | | | granules[0:2]: 0x237.2-0x245.7 (14.6) | | | [0][0:1]: granule 0x237.2-0x23e.4 (7.3) | | | [0]{}: channel 0x237.2-0x23e.4 (7.3) @@ -406,10 +406,9 @@ $ fq -d matroska dv mp3.mkv 0x240| 00 | . | preflag: 0 0x245.5-0x245.5 (0.1) 0x240| 00 | . | scalefac_scale: 0 0x245.6-0x245.6 (0.1) 0x240| 00 | . | count1table_select: 0 0x245.7-0x245.7 (0.1) -0x240| 07 aa c3 8e 33 85 d3 64 f1 a1| ....3..d..| data: raw bits 0x246-0x300.7 (187) +0x240| 07 aa c3 8e 33 85 d3 64 f1 a1| ....3..d..| audio_data: raw bits 0x246-0x300.7 (187) 0x250|c1 08 1c 58 1f 5e 1f 18 1c 46 04 1e 89 e5 b3 2e|...X.^...F......| * |until 0x300.7 (187) | | - | | | other_data: raw bits 0x301-NA (0) | | | crc_calculated: "2e0a" (raw bits) 0x301-NA (0) | | | [3]{}: element 0x301-0x3d8.7 (216) 0x300| a3 | . | id: "simple_block" (0xa3) (Similar to Block, see (#block-structure), but without all the extra information, mostly used to reduced overhead when no extra feature is needed; see (#simpleblock-structure) on SimpleBlock Structure.) 0x301-0x301.7 (1) @@ -440,9 +439,9 @@ $ fq -d matroska dv mp3.mkv 0x300| c4 | . | original: 1 0x30b.5-0x30b.5 (0.1) 0x300| c4 | . | emphasis: "none" (0b0) 0x30b.6-0x30b.7 (0.2) | | | side_info{}: 0x30c-0x31c.7 (17) -0x300| 04 82 | .. | main_data_end: 9 0x30c-0x30d (1.1) -0x300| 82 | . | private_bits: 0 0x30d.1-0x30d.5 (0.5) -0x300| 82 0a | .. | share0: 8 0x30d.6-0x30e.1 (0.4) +0x300| 04 82 | .. | main_data_begin: 9 0x30c-0x30d (1.1) +0x300| 82 | . | share: 0 0x30d.1-0x30d.5 (0.5) +0x300| 82 0a | .. | scfsi0: 8 0x30d.6-0x30e.1 (0.4) | | | granules[0:2]: 0x30e.2-0x31c.7 (14.6) | | | [0][0:1]: granule 0x30e.2-0x315.4 (7.3) | | | [0]{}: channel 0x30e.2-0x315.4 (7.3) @@ -479,11 +478,9 @@ $ fq -d matroska dv mp3.mkv 0x310| 00 | . | preflag: 0 0x31c.5-0x31c.5 (0.1) 0x310| 00 | . | scalefac_scale: 0 0x31c.6-0x31c.6 (0.1) 0x310| 00 | . | count1table_select: 0 0x31c.7-0x31c.7 (0.1) -0x310| 01 d9 81| ...| data: raw bits 0x31d-0x3ce.7 (178) +0x310| 01 d9 81| ...| audio_data: raw bits 0x31d-0x3d8.7 (188) 0x320|38 05 c9 80 20 04 f1 80 8e 07 01 96 d2 b0 19 91|8... ...........| -* |until 0x3ce.7 (178) | | -0x3c0| 85| .| padding_byte: raw bits 0x3cf-0x3cf.7 (1) -0x3d0|62 08 3d a0 52 36 7f 26 17 |b.=.R6.&. | other_data: raw bits 0x3d0-0x3d8.7 (9) +* |until 0x3d8.7 (188) | | | | | crc_calculated: "9950" (raw bits) 0x3d9-NA (0) | | | [4]{}: element 0x3d9-0x4bf.7 (231) 0x3d0| a0 | . | id: "block_group" (0xa0) (Basic container of information containing a single Block and information specific to that Block.) 0x3d9-0x3d9.7 (1) @@ -519,9 +516,9 @@ $ fq -d matroska dv mp3.mkv 0x3e0| c4 | . | original: 1 0x3ec.5-0x3ec.5 (0.1) 0x3e0| c4 | . | emphasis: "none" (0b0) 0x3ec.6-0x3ec.7 (0.2) | | | side_info{}: 0x3ed-0x3fd.7 (17) -0x3e0| 0d 80 | .. | main_data_end: 27 0x3ed-0x3ee (1.1) -0x3e0| 80 | . | private_bits: 0 0x3ee.1-0x3ee.5 (0.5) -0x3e0| 80 0d| ..| share0: 0 0x3ee.6-0x3ef.1 (0.4) +0x3e0| 0d 80 | .. | main_data_begin: 27 0x3ed-0x3ee (1.1) +0x3e0| 80 | . | share: 0 0x3ee.1-0x3ee.5 (0.5) +0x3e0| 80 0d| ..| scfsi0: 0 0x3ee.6-0x3ef.1 (0.4) | | | granules[0:2]: 0x3ef.2-0x3fd.7 (14.6) | | | [0][0:1]: granule 0x3ef.2-0x3f6.4 (7.3) | | | [0]{}: channel 0x3ef.2-0x3f6.4 (7.3) @@ -558,13 +555,9 @@ $ fq -d matroska dv mp3.mkv 0x3f0| 00 | . | preflag: 0 0x3fd.5-0x3fd.5 (0.1) 0x3f0| 00 | . | scalefac_scale: 0 0x3fd.6-0x3fd.6 (0.1) 0x3f0| 00 | . | count1table_select: 0 0x3fd.7-0x3fd.7 (0.1) -0x3f0| 53 ca| S.| data: raw bits 0x3fe-0x49d.7 (160) +0x3f0| 53 ca| S.| audio_data: raw bits 0x3fe-0x4b9.7 (188) 0x400|1e 59 fd 29 ba 0b 84 d4 8a f8 8d cb a0 77 10 07|.Y.).........w..| -* |until 0x49d.7 (160) | | -0x490| 6a | j | padding_byte: raw bits 0x49e-0x49e.7 (1) -0x490| 4c| L| other_data: raw bits 0x49f-0x4b9.7 (27) -0x4a0|41 4d 45 33 2e 31 30 30 aa aa aa aa aa aa aa aa|AME3.100........| -0x4b0|aa aa aa aa aa aa aa aa aa aa |.......... | +* |until 0x4b9.7 (188) | | | | | crc_calculated: "c36b" (raw bits) 0x4ba-NA (0) | | | [1]{}: element 0x4ba-0x4bf.7 (6) 0x4b0| 75 a2 | u. | id: "discard_padding" (0x75a2) (Duration of the silent data added to the Block, expressed in Matroska Ticks -- ie in nanoseconds; see (#timestamp-ticks) (padding at the end of the Block for positive value, at the beginning of the Block for negative value). The duration of DiscardPadding is not calculated in the duration of the TrackEntry and **SHOULD** be discarded during playback.) 0x4ba-0x4bb.7 (2) diff --git a/format/mp3/testdata/header-zeros-frames.fqtest b/format/mp3/testdata/header-zeros-frames.fqtest index 91186d5a..8818467b 100644 --- a/format/mp3/testdata/header-zeros-frames.fqtest +++ b/format/mp3/testdata/header-zeros-frames.fqtest @@ -52,9 +52,9 @@ $ fq -d mp3 dv header-zeros-frames.mp3 0x030| c4 | . | original: 1 0x33.5-0x33.5 (0.1) 0x030| c4 | . | emphasis: "none" (0b0) 0x33.6-0x33.7 (0.2) | | | side_info{}: 0x34-0x44.7 (17) -0x030| 00 00 | .. | main_data_end: 0 0x34-0x35 (1.1) -0x030| 00 | . | private_bits: 0 0x35.1-0x35.5 (0.5) -0x030| 00 0a | .. | share0: 0 0x35.6-0x36.1 (0.4) +0x030| 00 00 | .. | main_data_begin: 0 0x34-0x35 (1.1) +0x030| 00 | . | share: 0 0x35.1-0x35.5 (0.5) +0x030| 00 0a | .. | scfsi0: 0 0x35.6-0x36.1 (0.4) | | | granules[0:2]: 0x36.2-0x44.7 (14.6) | | | [0][0:1]: granule 0x36.2-0x3d.4 (7.3) | | | [0]{}: channel 0x36.2-0x3d.4 (7.3) @@ -91,9 +91,8 @@ $ fq -d mp3 dv header-zeros-frames.mp3 0x040| 00 | . | preflag: 0 0x44.5-0x44.5 (0.1) 0x040| 00 | . | scalefac_scale: 0 0x44.6-0x44.6 (0.1) 0x040| 00 | . | count1table_select: 0 0x44.7-0x44.7 (0.1) -0x040| 07 aa c3 8e 33 85 d3 64 f1 a1 c1| ....3..d...| data: raw bits 0x45-0xff.7 (187) +0x040| 07 aa c3 8e 33 85 d3 64 f1 a1 c1| ....3..d...| audio_data: raw bits 0x45-0xff.7 (187) 0x050|08 1c 58 1f 5e 1f 18 1c 46 04 1e 89 e5 b3 2e 5a|..X.^...F......Z| * |until 0xff.7 (end) (187) | | - | | | other_data: raw bits 0x100-NA (0) | | | crc_calculated: "e5b0" (raw bits) 0x100-NA (0) | | | footers[0:0]: 0x100-NA (0) diff --git a/format/mp3/testdata/headerfooter.fqtest b/format/mp3/testdata/headerfooter.fqtest index 5d23252f..36a99c96 100644 --- a/format/mp3/testdata/headerfooter.fqtest +++ b/format/mp3/testdata/headerfooter.fqtest @@ -69,9 +69,9 @@ $ fq -d mp3 dv headerfooter.mp3 0x040|c4 |. | original: 1 0x40.5-0x40.5 (0.1) 0x040|c4 |. | emphasis: "none" (0b0) 0x40.6-0x40.7 (0.2) | | | side_info{}: 0x41-0x51.7 (17) -0x040| 00 00 | .. | main_data_end: 0 0x41-0x42 (1.1) -0x040| 00 | . | private_bits: 0 0x42.1-0x42.5 (0.5) -0x040| 00 09 | .. | share0: 0 0x42.6-0x43.1 (0.4) +0x040| 00 00 | .. | main_data_begin: 0 0x41-0x42 (1.1) +0x040| 00 | . | share: 0 0x42.1-0x42.5 (0.5) +0x040| 00 09 | .. | scfsi0: 0 0x42.6-0x43.1 (0.4) | | | granules[0:2]: 0x43.2-0x51.7 (14.6) | | | [0][0:1]: granule 0x43.2-0x4a.4 (7.3) | | | [0]{}: channel 0x43.2-0x4a.4 (7.3) @@ -104,10 +104,9 @@ $ fq -d mp3 dv headerfooter.mp3 0x050| c4 | . | preflag: 1 0x51.5-0x51.5 (0.1) 0x050| c4 | . | scalefac_scale: 0 0x51.6-0x51.6 (0.1) 0x050| c4 | . | count1table_select: 0 0x51.7-0x51.7 (0.1) -0x050| 00 5a b0 55 89 9a ad 48 5b 05 b0 42 03 50| .Z.U...H[..B.P| data: raw bits 0x52-0x10c.7 (187) +0x050| 00 5a b0 55 89 9a ad 48 5b 05 b0 42 03 50| .Z.U...H[..B.P| audio_data: raw bits 0x52-0x10c.7 (187) 0x060|26 02 66 42 ce b0 b4 da 23 1a 08 10 20 84 2c 10|&.fB....#... .,.| * |until 0x10c.7 (187) | | - | | | other_data: raw bits 0x10d-NA (0) | | | crc_calculated: "3c54" (raw bits) 0x10d-NA (0) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [1]{}: frame (mp3_frame) 0x10d-0x1dd.7 (209) | | | header{}: 0x10d-0x110.7 (4) @@ -126,9 +125,9 @@ $ fq -d mp3 dv headerfooter.mp3 0x110|c4 |. | original: 1 0x110.5-0x110.5 (0.1) 0x110|c4 |. | emphasis: "none" (0b0) 0x110.6-0x110.7 (0.2) | | | side_info{}: 0x111-0x121.7 (17) -0x110| 0d 03 | .. | main_data_end: 26 0x111-0x112 (1.1) -0x110| 03 | . | private_bits: 0 0x112.1-0x112.5 (0.5) -0x110| 03 c0 | .. | share0: 15 0x112.6-0x113.1 (0.4) +0x110| 0d 03 | .. | main_data_begin: 26 0x111-0x112 (1.1) +0x110| 03 | . | share: 0 0x112.1-0x112.5 (0.5) +0x110| 03 c0 | .. | scfsi0: 15 0x112.6-0x113.1 (0.4) | | | granules[0:2]: 0x113.2-0x121.7 (14.6) | | | [0][0:1]: granule 0x113.2-0x11a.4 (7.3) | | | [0]{}: channel 0x113.2-0x11a.4 (7.3) @@ -161,12 +160,9 @@ $ fq -d mp3 dv headerfooter.mp3 0x120| 04 | . | preflag: 1 0x121.5-0x121.5 (0.1) 0x120| 04 | . | scalefac_scale: 0 0x121.6-0x121.6 (0.1) 0x120| 04 | . | count1table_select: 0 0x121.7-0x121.7 (0.1) -0x120| 55 55 55 55 55 55 55 55 55 55 55 55 55 55| UUUUUUUUUUUUUU| data: raw bits 0x122-0x1c2.7 (161) +0x120| 55 55 55 55 55 55 55 55 55 55 55 55 55 55| UUUUUUUUUUUUUU| audio_data: raw bits 0x122-0x1dd.7 (188) 0x130|55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55|UUUUUUUUUUUUUUUU| -* |until 0x1c2.7 (161) | | -0x1c0| 55 | U | padding_byte: raw bits 0x1c3-0x1c3.7 (1) -0x1c0| 55 55 55 55 55 55 55 55 55 55 55 55| UUUUUUUUUUUU| other_data: raw bits 0x1c4-0x1dd.7 (26) -0x1d0|55 55 55 55 55 55 55 55 55 55 55 55 55 55 |UUUUUUUUUUUUUU | +* |until 0x1dd.7 (188) | | | | | crc_calculated: "ea58" (raw bits) 0x1de-NA (0) | | | footers[0:1]: 0x1de-0x25d.7 (128) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [0]{}: footer (id3v1) 0x1de-0x25d.7 (128) diff --git a/format/mp3/testdata/test.fqtest b/format/mp3/testdata/test.fqtest index 003d28c9..219903a4 100644 --- a/format/mp3/testdata/test.fqtest +++ b/format/mp3/testdata/test.fqtest @@ -73,10 +73,10 @@ $ fq -d mp3 dv test.mp3 0x040|00 |. | original: 0 0x40.5-0x40.5 (0.1) 0x040|00 |. | emphasis: "none" (0b0) 0x40.6-0x40.7 (0.2) | | | side_info{}: 0x41-0x60.7 (32) -0x040| 00 00 | .. | main_data_end: 0 0x41-0x42 (1.1) -0x040| 00 | . | private_bits: 0 0x42.1-0x42.3 (0.3) -0x040| 00 | . | share0: 0 0x42.4-0x42.7 (0.4) -0x040| 00 | . | share1: 0 0x43-0x43.3 (0.4) +0x040| 00 00 | .. | main_data_begin: 0 0x41-0x42 (1.1) +0x040| 00 | . | share: 0 0x42.1-0x42.3 (0.3) +0x040| 00 | . | scfsi0: 0 0x42.4-0x42.7 (0.4) +0x040| 00 | . | scfsi1: 0 0x43-0x43.3 (0.4) | | | granules[0:2]: 0x43.4-0x60.7 (29.4) | | | [0][0:2]: granule 0x43.4-0x52.1 (14.6) | | | [0]{}: channel 0x43.4-0x4a.6 (7.3) @@ -272,7 +272,7 @@ $ fq -d mp3 dv test.mp3 0x0f0| 00 00 04 13 | .... | length: 1043 0xf5-0xf8.7 (4) 0x0f0| c2 aa | .. | music_crc: 49834 0xf9-0xfa.7 (2) 0x0f0| 7a 03 | z. | tag_crc: 31235 0xfb-0xfc.7 (2) -0x0f0| 00 00 00| ...| padding: raw bits 0xfd-0x10c.7 (16) +0x0f0| 00 00 00| ...| audio_data: raw bits 0xfd-0x10c.7 (16) 0x100|00 00 00 00 00 00 00 00 00 00 00 00 00 |............. | | | | crc_calculated: "f7d3" (raw bits) 0x10d-NA (0) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [1]{}: frame (mp3_frame) 0x10d-0x2ad.7 (417) @@ -292,10 +292,10 @@ $ fq -d mp3 dv test.mp3 0x110|64 |d | original: 1 0x110.5-0x110.5 (0.1) 0x110|64 |d | emphasis: "none" (0b0) 0x110.6-0x110.7 (0.2) | | | side_info{}: 0x111-0x130.7 (32) -0x110| 00 00 | .. | main_data_end: 0 0x111-0x112 (1.1) -0x110| 00 | . | private_bits: 0 0x112.1-0x112.3 (0.3) -0x110| 00 | . | share0: 0 0x112.4-0x112.7 (0.4) -0x110| 02 | . | share1: 0 0x113-0x113.3 (0.4) +0x110| 00 00 | .. | main_data_begin: 0 0x111-0x112 (1.1) +0x110| 00 | . | share: 0 0x112.1-0x112.3 (0.3) +0x110| 00 | . | scfsi0: 0 0x112.4-0x112.7 (0.4) +0x110| 02 | . | scfsi1: 0 0x113-0x113.3 (0.4) | | | granules[0:2]: 0x113.4-0x130.7 (29.4) | | | [0][0:2]: granule 0x113.4-0x122.1 (14.6) | | | [0]{}: channel 0x113.4-0x11a.6 (7.3) @@ -365,10 +365,9 @@ $ fq -d mp3 dv test.mp3 0x130|00 |. | preflag: 0 0x130.5-0x130.5 (0.1) 0x130|00 |. | scalefac_scale: 0 0x130.6-0x130.6 (0.1) 0x130|00 |. | count1table_select: 0 0x130.7-0x130.7 (0.1) -0x130| 0a 6b 6d d8 c2 12 cd a0 0d bf 4d 03 01 8d 4c| .km.......M...L| data: raw bits 0x131-0x2ad.7 (381) +0x130| 0a 6b 6d d8 c2 12 cd a0 0d bf 4d 03 01 8d 4c| .km.......M...L| audio_data: raw bits 0x131-0x2ad.7 (381) 0x140|35 18 20 0c 1d db 6b 6d 7d df 7f e3 72 fb 62 10|5. ...km}...r.b.| * |until 0x2ad.7 (381) | | - | | | other_data: raw bits 0x2ae-NA (0) | | | crc_calculated: "1855" (raw bits) 0x2ae-NA (0) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [2]{}: frame (mp3_frame) 0x2ae-0x44f.7 (418) | | | header{}: 0x2ae-0x2b1.7 (4) @@ -387,10 +386,10 @@ $ fq -d mp3 dv test.mp3 0x2b0| 64 | d | original: 1 0x2b1.5-0x2b1.5 (0.1) 0x2b0| 64 | d | emphasis: "none" (0b0) 0x2b1.6-0x2b1.7 (0.2) | | | side_info{}: 0x2b2-0x2d1.7 (32) -0x2b0| 34 8f | 4. | main_data_end: 105 0x2b2-0x2b3 (1.1) -0x2b0| 8f | . | private_bits: 0 0x2b3.1-0x2b3.3 (0.3) -0x2b0| 8f | . | share0: 15 0x2b3.4-0x2b3.7 (0.4) -0x2b0| f3 | . | share1: 15 0x2b4-0x2b4.3 (0.4) +0x2b0| 34 8f | 4. | main_data_begin: 105 0x2b2-0x2b3 (1.1) +0x2b0| 8f | . | share: 0 0x2b3.1-0x2b3.3 (0.3) +0x2b0| 8f | . | scfsi0: 15 0x2b3.4-0x2b3.7 (0.4) +0x2b0| f3 | . | scfsi1: 15 0x2b4-0x2b4.3 (0.4) | | | granules[0:2]: 0x2b4.4-0x2d1.7 (29.4) | | | [0][0:2]: granule 0x2b4.4-0x2c3.1 (14.6) | | | [0]{}: channel 0x2b4.4-0x2bb.6 (7.3) @@ -455,13 +454,9 @@ $ fq -d mp3 dv test.mp3 0x2d0| 04 | . | preflag: 1 0x2d1.5-0x2d1.5 (0.1) 0x2d0| 04 | . | scalefac_scale: 0 0x2d1.6-0x2d1.6 (0.1) 0x2d0| 04 | . | count1table_select: 0 0x2d1.7-0x2d1.7 (0.1) -0x2d0| 2e 31 30 30 55 55 55 55 55 55 55 55 55 55| .100UUUUUUUUUU| data: raw bits 0x2d2-0x3e5.7 (276) +0x2d0| 2e 31 30 30 55 55 55 55 55 55 55 55 55 55| .100UUUUUUUUUU| audio_data: raw bits 0x2d2-0x44f.7 (382) 0x2e0|55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55|UUUUUUUUUUUUUUUU| -* |until 0x3e5.7 (276) | | -0x3e0| 55 | U | padding_byte: raw bits 0x3e6-0x3e6.7 (1) -0x3e0| 55 55 55 55 55 55 55 55 55| UUUUUUUUU| other_data: raw bits 0x3e7-0x44f.7 (105) -0x3f0|55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55|UUUUUUUUUUUUUUUU| -* |until 0x44f.7 (105) | | +* |until 0x44f.7 (382) | | | | | crc_calculated: "53c8" (raw bits) 0x450-NA (0) | | | footers[0:1]: 0x450-0x4cf.7 (128) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [0]{}: footer (id3v1) 0x450-0x4cf.7 (128) diff --git a/format/mp4/testdata/mp3.fqtest b/format/mp4/testdata/mp3.fqtest index 932048f2..7f08d5dc 100644 --- a/format/mp4/testdata/mp3.fqtest +++ b/format/mp4/testdata/mp3.fqtest @@ -342,9 +342,9 @@ $ fq -d mp4 dv mp3.mp4 0x020| c4| .| original: 1 0x2f.5-0x2f.5 (0.1) 0x020| c4| .| emphasis: "none" (0b0) 0x2f.6-0x2f.7 (0.2) | | | side_info{}: 0x30-0x40.7 (17) -0x030|00 00 |.. | main_data_end: 0 0x30-0x31 (1.1) -0x030| 00 | . | private_bits: 0 0x31.1-0x31.5 (0.5) -0x030| 00 0a | .. | share0: 0 0x31.6-0x32.1 (0.4) +0x030|00 00 |.. | main_data_begin: 0 0x30-0x31 (1.1) +0x030| 00 | . | share: 0 0x31.1-0x31.5 (0.5) +0x030| 00 0a | .. | scfsi0: 0 0x31.6-0x32.1 (0.4) | | | granules[0:2]: 0x32.2-0x40.7 (14.6) | | | [0][0:1]: granule 0x32.2-0x39.4 (7.3) | | | [0]{}: channel 0x32.2-0x39.4 (7.3) @@ -381,10 +381,9 @@ $ fq -d mp4 dv mp3.mp4 0x040|00 |. | preflag: 0 0x40.5-0x40.5 (0.1) 0x040|00 |. | scalefac_scale: 0 0x40.6-0x40.6 (0.1) 0x040|00 |. | count1table_select: 0 0x40.7-0x40.7 (0.1) -0x040| 07 aa c3 8e 33 85 d3 64 f1 a1 c1 08 1c 58 1f| ....3..d.....X.| data: raw bits 0x41-0xfb.7 (187) +0x040| 07 aa c3 8e 33 85 d3 64 f1 a1 c1 08 1c 58 1f| ....3..d.....X.| audio_data: raw bits 0x41-0xfb.7 (187) 0x050|5e 1f 18 1c 46 04 1e 89 e5 b3 2e 5a 0f a8 3b 13|^...F......Z..;.| * |until 0xfb.7 (187) | | - | | | other_data: raw bits 0xfc-NA (0) | | | crc_calculated: "2e0a" (raw bits) 0xfc-NA (0) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [1]{}: sample (mp3_frame) 0xfc-0x1cc.7 (209) | | | header{}: 0xfc-0xff.7 (4) @@ -403,9 +402,9 @@ $ fq -d mp4 dv mp3.mp4 0x0f0| c4| .| original: 1 0xff.5-0xff.5 (0.1) 0x0f0| c4| .| emphasis: "none" (0b0) 0xff.6-0xff.7 (0.2) | | | side_info{}: 0x100-0x110.7 (17) -0x100|04 82 |.. | main_data_end: 9 0x100-0x101 (1.1) -0x100| 82 | . | private_bits: 0 0x101.1-0x101.5 (0.5) -0x100| 82 0a | .. | share0: 8 0x101.6-0x102.1 (0.4) +0x100|04 82 |.. | main_data_begin: 9 0x100-0x101 (1.1) +0x100| 82 | . | share: 0 0x101.1-0x101.5 (0.5) +0x100| 82 0a | .. | scfsi0: 8 0x101.6-0x102.1 (0.4) | | | granules[0:2]: 0x102.2-0x110.7 (14.6) | | | [0][0:1]: granule 0x102.2-0x109.4 (7.3) | | | [0]{}: channel 0x102.2-0x109.4 (7.3) @@ -442,11 +441,9 @@ $ fq -d mp4 dv mp3.mp4 0x110|00 |. | preflag: 0 0x110.5-0x110.5 (0.1) 0x110|00 |. | scalefac_scale: 0 0x110.6-0x110.6 (0.1) 0x110|00 |. | count1table_select: 0 0x110.7-0x110.7 (0.1) -0x110| 01 d9 81 38 05 c9 80 20 04 f1 80 8e 07 01 96| ...8... .......| data: raw bits 0x111-0x1c2.7 (178) +0x110| 01 d9 81 38 05 c9 80 20 04 f1 80 8e 07 01 96| ...8... .......| audio_data: raw bits 0x111-0x1cc.7 (188) 0x120|d2 b0 19 91 ec 2a 39 85 70 0d c9 82 90 07 39 81|.....*9.p.....9.| -* |until 0x1c2.7 (178) | | -0x1c0| 85 | . | padding_byte: raw bits 0x1c3-0x1c3.7 (1) -0x1c0| 62 08 3d a0 52 36 7f 26 17 | b.=.R6.&. | other_data: raw bits 0x1c4-0x1cc.7 (9) +* |until 0x1cc.7 (188) | | | | | crc_calculated: "9950" (raw bits) 0x1cd-NA (0) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [2]{}: sample (mp3_frame) 0x1cd-0x29d.7 (209) | | | header{}: 0x1cd-0x1d0.7 (4) @@ -465,9 +462,9 @@ $ fq -d mp4 dv mp3.mp4 0x1d0|c4 |. | original: 1 0x1d0.5-0x1d0.5 (0.1) 0x1d0|c4 |. | emphasis: "none" (0b0) 0x1d0.6-0x1d0.7 (0.2) | | | side_info{}: 0x1d1-0x1e1.7 (17) -0x1d0| 0d 80 | .. | main_data_end: 27 0x1d1-0x1d2 (1.1) -0x1d0| 80 | . | private_bits: 0 0x1d2.1-0x1d2.5 (0.5) -0x1d0| 80 0d | .. | share0: 0 0x1d2.6-0x1d3.1 (0.4) +0x1d0| 0d 80 | .. | main_data_begin: 27 0x1d1-0x1d2 (1.1) +0x1d0| 80 | . | share: 0 0x1d2.1-0x1d2.5 (0.5) +0x1d0| 80 0d | .. | scfsi0: 0 0x1d2.6-0x1d3.1 (0.4) | | | granules[0:2]: 0x1d3.2-0x1e1.7 (14.6) | | | [0][0:1]: granule 0x1d3.2-0x1da.4 (7.3) | | | [0]{}: channel 0x1d3.2-0x1da.4 (7.3) @@ -504,12 +501,9 @@ $ fq -d mp4 dv mp3.mp4 0x1e0| 00 | . | preflag: 0 0x1e1.5-0x1e1.5 (0.1) 0x1e0| 00 | . | scalefac_scale: 0 0x1e1.6-0x1e1.6 (0.1) 0x1e0| 00 | . | count1table_select: 0 0x1e1.7-0x1e1.7 (0.1) -0x1e0| 53 ca 1e 59 fd 29 ba 0b 84 d4 8a f8 8d cb| S..Y.)........| data: raw bits 0x1e2-0x281.7 (160) +0x1e0| 53 ca 1e 59 fd 29 ba 0b 84 d4 8a f8 8d cb| S..Y.)........| audio_data: raw bits 0x1e2-0x29d.7 (188) 0x1f0|a0 77 10 07 47 8b 8c 7b 2e 82 33 01 c4 c0 04 9f|.w..G..{..3.....| -* |until 0x281.7 (160) | | -0x280| 6a | j | padding_byte: raw bits 0x282-0x282.7 (1) -0x280| 4c 41 4d 45 33 2e 31 30 30 aa aa aa aa| LAME3.100....| other_data: raw bits 0x283-0x29d.7 (27) -0x290|aa aa aa aa aa aa aa aa aa aa aa aa aa aa |.............. | +* |until 0x29d.7 (188) | | | | | crc_calculated: "c36b" (raw bits) 0x29e-NA (0) | | | id: 1 0x565-NA (0) | | | data_foramt: "mp4a" 0x565-NA (0) diff --git a/format/mp4/testdata/stz2.fqtest b/format/mp4/testdata/stz2.fqtest index 1e60590d..9e1ad1d9 100644 --- a/format/mp4/testdata/stz2.fqtest +++ b/format/mp4/testdata/stz2.fqtest @@ -299,9 +299,9 @@ $ fq -d mp4 'dv' stz2.mp4 0x280| c4 | . | original: 1 0x287.5-0x287.5 (0.1) 0x280| c4 | . | emphasis: "none" (0b0) 0x287.6-0x287.7 (0.2) | | | side_info{}: 0x288-0x298.7 (17) -0x280| 00 00 | .. | main_data_end: 0 0x288-0x289 (1.1) -0x280| 00 | . | private_bits: 0 0x289.1-0x289.5 (0.5) -0x280| 00 0a | .. | share0: 0 0x289.6-0x28a.1 (0.4) +0x280| 00 00 | .. | main_data_begin: 0 0x288-0x289 (1.1) +0x280| 00 | . | share: 0 0x289.1-0x289.5 (0.5) +0x280| 00 0a | .. | scfsi0: 0 0x289.6-0x28a.1 (0.4) | | | granules[0:2]: 0x28a.2-0x298.7 (14.6) | | | [0][0:1]: granule 0x28a.2-0x291.4 (7.3) | | | [0]{}: channel 0x28a.2-0x291.4 (7.3) @@ -338,10 +338,9 @@ $ fq -d mp4 'dv' stz2.mp4 0x290| 00 | . | preflag: 0 0x298.5-0x298.5 (0.1) 0x290| 00 | . | scalefac_scale: 0 0x298.6-0x298.6 (0.1) 0x290| 00 | . | count1table_select: 0 0x298.7-0x298.7 (0.1) -0x290| 07 aa c3 8e 33 85 d3| ....3..| data: raw bits 0x299-0x353.7 (187) +0x290| 07 aa c3 8e 33 85 d3| ....3..| audio_data: raw bits 0x299-0x353.7 (187) 0x2a0|64 f1 a1 c1 08 1c 58 1f 5e 1f 18 1c 46 04 1e 89|d.....X.^...F...| * |until 0x353.7 (187) | | - | | | other_data: raw bits 0x354-NA (0) | | | crc_calculated: "2e0a" (raw bits) 0x354-NA (0) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [1]{}: sample (mp3_frame) 0x354-0x424.7 (209) | | | header{}: 0x354-0x357.7 (4) @@ -360,9 +359,9 @@ $ fq -d mp4 'dv' stz2.mp4 0x350| c4 | . | original: 1 0x357.5-0x357.5 (0.1) 0x350| c4 | . | emphasis: "none" (0b0) 0x357.6-0x357.7 (0.2) | | | side_info{}: 0x358-0x368.7 (17) -0x350| 04 82 | .. | main_data_end: 9 0x358-0x359 (1.1) -0x350| 82 | . | private_bits: 0 0x359.1-0x359.5 (0.5) -0x350| 82 0a | .. | share0: 8 0x359.6-0x35a.1 (0.4) +0x350| 04 82 | .. | main_data_begin: 9 0x358-0x359 (1.1) +0x350| 82 | . | share: 0 0x359.1-0x359.5 (0.5) +0x350| 82 0a | .. | scfsi0: 8 0x359.6-0x35a.1 (0.4) | | | granules[0:2]: 0x35a.2-0x368.7 (14.6) | | | [0][0:1]: granule 0x35a.2-0x361.4 (7.3) | | | [0]{}: channel 0x35a.2-0x361.4 (7.3) @@ -399,12 +398,9 @@ $ fq -d mp4 'dv' stz2.mp4 0x360| 00 | . | preflag: 0 0x368.5-0x368.5 (0.1) 0x360| 00 | . | scalefac_scale: 0 0x368.6-0x368.6 (0.1) 0x360| 00 | . | count1table_select: 0 0x368.7-0x368.7 (0.1) -0x360| 01 d9 81 38 05 c9 80| ...8...| data: raw bits 0x369-0x41a.7 (178) +0x360| 01 d9 81 38 05 c9 80| ...8...| audio_data: raw bits 0x369-0x424.7 (188) 0x370|20 04 f1 80 8e 07 01 96 d2 b0 19 91 ec 2a 39 85| ............*9.| -* |until 0x41a.7 (178) | | -0x410| 85 | . | padding_byte: raw bits 0x41b-0x41b.7 (1) -0x410| 62 08 3d a0| b.=.| other_data: raw bits 0x41c-0x424.7 (9) -0x420|52 36 7f 26 17 |R6.&. | +* |until 0x424.7 (188) | | | | | crc_calculated: "9950" (raw bits) 0x425-NA (0) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| [2]{}: sample (mp3_frame) 0x425-0x4f5.7 (209) | | | header{}: 0x425-0x428.7 (4) @@ -423,9 +419,9 @@ $ fq -d mp4 'dv' stz2.mp4 0x420| c4 | . | original: 1 0x428.5-0x428.5 (0.1) 0x420| c4 | . | emphasis: "none" (0b0) 0x428.6-0x428.7 (0.2) | | | side_info{}: 0x429-0x439.7 (17) -0x420| 0d 80 | .. | main_data_end: 27 0x429-0x42a (1.1) -0x420| 80 | . | private_bits: 0 0x42a.1-0x42a.5 (0.5) -0x420| 80 0d | .. | share0: 0 0x42a.6-0x42b.1 (0.4) +0x420| 0d 80 | .. | main_data_begin: 27 0x429-0x42a (1.1) +0x420| 80 | . | share: 0 0x42a.1-0x42a.5 (0.5) +0x420| 80 0d | .. | scfsi0: 0 0x42a.6-0x42b.1 (0.4) | | | granules[0:2]: 0x42b.2-0x439.7 (14.6) | | | [0][0:1]: granule 0x42b.2-0x432.4 (7.3) | | | [0]{}: channel 0x42b.2-0x432.4 (7.3) @@ -462,13 +458,9 @@ $ fq -d mp4 'dv' stz2.mp4 0x430| 00 | . | preflag: 0 0x439.5-0x439.5 (0.1) 0x430| 00 | . | scalefac_scale: 0 0x439.6-0x439.6 (0.1) 0x430| 00 | . | count1table_select: 0 0x439.7-0x439.7 (0.1) -0x430| 53 ca 1e 59 fd 29| S..Y.)| data: raw bits 0x43a-0x4d9.7 (160) +0x430| 53 ca 1e 59 fd 29| S..Y.)| audio_data: raw bits 0x43a-0x4f5.7 (188) 0x440|ba 0b 84 d4 8a f8 8d cb a0 77 10 07 47 8b 8c 7b|.........w..G..{| -* |until 0x4d9.7 (160) | | -0x4d0| 6a | j | padding_byte: raw bits 0x4da-0x4da.7 (1) -0x4d0| 4c 41 4d 45 33| LAME3| other_data: raw bits 0x4db-0x4f5.7 (27) -0x4e0|2e 31 30 30 aa aa aa aa aa aa aa aa aa aa aa aa|.100............| -0x4f0|aa aa aa aa aa aa |...... | +* |until 0x4f5.7 (188) | | | | | crc_calculated: "c36b" (raw bits) 0x4f6-NA (0) | | | id: 1 0x530-NA (0) | | | data_foramt: "mp4a" 0x530-NA (0) diff --git a/format/mpeg/mp3_frame.go b/format/mpeg/mp3_frame.go index a2eba631..ade07d17 100644 --- a/format/mpeg/mp3_frame.go +++ b/format/mpeg/mp3_frame.go @@ -142,19 +142,20 @@ var protectionNames = scalar.BoolToDescription{ func frameDecode(d *decode.D, _ any) any { const headerBytes = 4 - var sideInfoBytes int64 + var sideInfoBytes int var isStereo bool - var paddingBytes uint64 - var crcBytes int64 + var paddingBytes int + var crcBytes int var mpegVersionNr uint64 var mpegLayerNr uint64 var protectionAbsent bool - var bitRate uint64 - var sampleRate uint64 + var sampleCount int + var bitRate int + var sampleRate int var channelsIndex uint64 var channelModeIndex uint64 - var mainDataEnd uint64 var crcValue *decode.Value + var lsf bool // low sampling frequencies, 1 granule if true d.FieldStruct("header", func(d *decode.D) { d.FieldU11("sync", d.AssertU(0b111_1111_1111), scalar.ActualBin) @@ -165,6 +166,11 @@ func frameDecode(d *decode.D, _ any) any { if mpegVersionNr == 0 { d.Errorf("Unsupported mpeg version") } + switch mpegVersion { + case mpegVersion2, + mpegVersion25: + lsf = true + } mpegLayer := d.FieldU2("layer", mpegLayerNames) mpegLayerNr = mpegLayerN[mpegLayer] if mpegLayerNr != 3 { @@ -172,32 +178,33 @@ func frameDecode(d *decode.D, _ any) any { mpegLayerNr = 3 } // [mpeg layer][mpeg version] - var samplesFrameIndex = map[uint][4]uint{ - 0: [...]uint{0, 0, 0, 0}, - 1: [...]uint{0, 384, 384, 384}, - 2: [...]uint{0, 1152, 1152, 1152}, - 3: [...]uint{0, 1152, 576, 576}, + var samplesFrameIndex = map[uint][4]int{ + 0: [...]int{0, 0, 0, 0}, + 1: [...]int{0, 384, 384, 384}, + 2: [...]int{0, 1152, 1152, 1152}, + 3: [...]int{0, 1152, 576, 576}, } - d.FieldValueU("sample_count", uint64(samplesFrameIndex[uint(mpegLayerNr)][uint(mpegVersionNr)])) + sampleCount = samplesFrameIndex[uint(mpegLayerNr)][uint(mpegVersionNr)] + d.FieldValueU("sample_count", uint64(sampleCount)) protection := d.FieldBool("protection_absent", protectionNames) // note false mean has protection hasCRC := !protection // V1,L1 V1,L2 V1,L3 V2,L1 V2,L2 V2,L3 V2.5,L1 V2.5,L2 V2.5,L3 - var bitRateIndex = map[uint][9]uint{ - 0b0001: [...]uint{32, 32, 32, 32, 8, 8, 32, 8, 8}, - 0b0010: [...]uint{64, 48, 40, 48, 16, 16, 48, 16, 16}, - 0b0011: [...]uint{96, 56, 48, 56, 24, 24, 56, 24, 24}, - 0b0100: [...]uint{128, 64, 56, 64, 32, 32, 64, 32, 32}, - 0b0101: [...]uint{160, 80, 64, 80, 40, 40, 80, 40, 40}, - 0b0110: [...]uint{192, 96, 80, 96, 48, 48, 96, 48, 48}, - 0b0111: [...]uint{224, 112, 96, 112, 56, 56, 112, 56, 56}, - 0b1000: [...]uint{256, 128, 112, 128, 64, 64, 128, 64, 64}, - 0b1001: [...]uint{288, 160, 128, 144, 80, 80, 144, 80, 80}, - 0b1010: [...]uint{320, 192, 160, 160, 96, 96, 160, 96, 96}, - 0b1011: [...]uint{352, 224, 192, 176, 112, 112, 176, 112, 112}, - 0b1100: [...]uint{384, 256, 224, 192, 128, 128, 192, 128, 128}, - 0b1101: [...]uint{416, 320, 256, 224, 144, 144, 224, 144, 144}, - 0b1110: [...]uint{448, 384, 320, 256, 160, 160, 256, 160, 160}, + var bitRateIndex = map[int][9]int{ + 0b0001: [...]int{32, 32, 32, 32, 8, 8, 32, 8, 8}, + 0b0010: [...]int{64, 48, 40, 48, 16, 16, 48, 16, 16}, + 0b0011: [...]int{96, 56, 48, 56, 24, 24, 56, 24, 24}, + 0b0100: [...]int{128, 64, 56, 64, 32, 32, 64, 32, 32}, + 0b0101: [...]int{160, 80, 64, 80, 40, 40, 80, 40, 40}, + 0b0110: [...]int{192, 96, 80, 96, 48, 48, 96, 48, 48}, + 0b0111: [...]int{224, 112, 96, 112, 56, 56, 112, 56, 56}, + 0b1000: [...]int{256, 128, 112, 128, 64, 64, 128, 64, 64}, + 0b1001: [...]int{288, 160, 128, 144, 80, 80, 144, 80, 80}, + 0b1010: [...]int{320, 192, 160, 160, 96, 96, 160, 96, 96}, + 0b1011: [...]int{352, 224, 192, 176, 112, 112, 176, 112, 112}, + 0b1100: [...]int{384, 256, 224, 192, 128, 128, 192, 128, 128}, + 0b1101: [...]int{416, 320, 256, 224, 144, 144, 224, 144, 144}, + 0b1110: [...]int{448, 384, 320, 256, 160, 160, 256, 160, 160}, } d.FieldU4("bitrate", scalar.Fn(func(s scalar.S) (scalar.S, error) { u := s.ActualU() @@ -212,17 +219,17 @@ func frameDecode(d *decode.D, _ any) any { if i >= 9 { d.Fatalf("Invalid bitrate index") } - bitRate = uint64(bitRateIndex[uint(u)][(mpegVersionNr-1)*3+(mpegLayerNr-1)]) * 1000 + bitRate = bitRateIndex[int(u)][(mpegVersionNr-1)*3+(mpegLayerNr-1)] * 1000 s.Sym = bitRate } return s, nil })) // MPEG1 MPEG2 MPEG2.5 - var sampleRateIndex = map[uint][3]uint{ - 0b00: [...]uint{44100, 22050, 11025}, - 0b01: [...]uint{48000, 24000, 12000}, - 0b10: [...]uint{32000, 16000, 8000}, + var sampleRateIndex = map[uint][3]int{ + 0b00: [...]int{44100, 22050, 11025}, + 0b01: [...]int{48000, 24000, 12000}, + 0b10: [...]int{32000, 16000, 8000}, } d.FieldU2("sample_rate", scalar.Fn(func(s scalar.S) (scalar.S, error) { u := s.ActualU() @@ -230,16 +237,16 @@ func frameDecode(d *decode.D, _ any) any { case 0b11: s.Description = "reserved" default: - sampleRate = uint64(sampleRateIndex[uint(u)][mpegVersionNr-1]) + sampleRate = sampleRateIndex[uint(u)][mpegVersionNr-1] s.Sym = sampleRate } return s, nil })) - paddingBytes = d.FieldU1("padding", scalar.UToSymStr{ + paddingBytes = int(d.FieldU1("padding", scalar.UToSymStr{ 0: "not_padded", 1: "padded", - }, scalar.ActualBin) + }, scalar.ActualBin)) d.FieldU1("private") channelsIndex = d.FieldU2("channels", scalar.UToSymStr{ 0b00: "stereo", @@ -269,120 +276,102 @@ func frameDecode(d *decode.D, _ any) any { } }) + // // [mono/stereo][mpeg version] + sideInfoIndex := map[bool][4]int{ + false: {0, 17, 9, 9}, // mono + true: {0, 32, 17, 17}, // stereo + } + sideInfoBytes = sideInfoIndex[isStereo][int(mpegVersionNr)] + channelCount := 1 if isStereo { channelCount = 2 } - - // [mono/stereo][mpeg version] - sideInfoIndex := map[bool][4]int64{ - false: {0, 17, 9, 9}, // mono - true: {0, 32, 17, 17}, // stereo - } - if mpegLayerNr == 3 { - sideInfoBytes = sideInfoIndex[isStereo][int(mpegVersionNr)] + granuleCount := 1 + if !lsf { + granuleCount = 2 } - if sideInfoBytes != 0 { - d.FieldStruct("side_info", func(d *decode.D) { - mainDataEnd = d.FieldU9("main_data_end") + d.FieldStruct("side_info", func(d *decode.D) { + if lsf { + d.FieldU8("main_data_begin") + // TODO: naming + d.FieldU("private_bits", channelCount) + } else { + d.FieldU9("main_data_begin") if isStereo { - d.FieldU3("private_bits") + // TODO: naming + d.FieldU3("share") + d.FieldU4("scfsi0") + d.FieldU4("scfsi1") } else { - d.FieldU5("private_bits") - } - d.FieldU4("share0") - if isStereo { - d.FieldU4("share1") + // TODO: naming + d.FieldU5("share") + d.FieldU4("scfsi0") } + } - // TODO: mpeg_version 2 use 1, otherwise 2 - granuleCount := 2 - d.FieldArray("granules", func(d *decode.D) { - for i := 0; i < granuleCount; i++ { - d.FieldArray("granule", func(d *decode.D) { - for j := 0; j < channelCount; j++ { - d.FieldStruct("channel", func(d *decode.D) { - // TODO: tables and interpret values a bit - d.FieldU12("part2_3_length") - d.FieldU9("big_values") - d.FieldU8("global_gain") + d.FieldArray("granules", func(d *decode.D) { + for i := 0; i < granuleCount; i++ { + d.FieldArray("granule", func(d *decode.D) { + for j := 0; j < channelCount; j++ { + d.FieldStruct("channel", func(d *decode.D) { + // TODO: tables and interpret values a bit + d.FieldU12("part2_3_length") + d.FieldU9("big_values") + d.FieldU8("global_gain") + if lsf { + d.FieldU9("scalefac_compress") + } else { d.FieldU4("scalefac_compress") - blocksplitFlag := d.FieldU1("blocksplit_flag") + } + blocksplitFlag := d.FieldU1("blocksplit_flag") - if blocksplitFlag == 1 { - d.FieldU2("block_type", blockTypeNames) - d.FieldU1("switch_point") - d.FieldU5("table_select0") - d.FieldU5("table_select1") - d.FieldU3("subblock_gain0") - d.FieldU3("subblock_gain1") - d.FieldU3("subblock_gain2") - } else { - d.FieldU5("table_select0") - d.FieldU5("table_select1") - d.FieldU5("table_select2") - d.FieldU4("region_address1") - d.FieldU3("region_address2") - } + if blocksplitFlag == 1 { + d.FieldU2("block_type", blockTypeNames) + d.FieldU1("switch_point") + d.FieldU5("table_select0") + d.FieldU5("table_select1") + d.FieldU3("subblock_gain0") + d.FieldU3("subblock_gain1") + d.FieldU3("subblock_gain2") + } else { + d.FieldU5("table_select0") + d.FieldU5("table_select1") + d.FieldU5("table_select2") + d.FieldU4("region_address1") + d.FieldU3("region_address2") + } + if !lsf { d.FieldU1("preflag") - d.FieldU1("scalefac_scale") - d.FieldU1("count1table_select") - }) - } - }) - } - }) + } + d.FieldU1("scalefac_scale") + d.FieldU1("count1table_select") + }) + } + }) + } }) - } + }) if sampleRate == 0 { d.Fatalf("zero sample rate") } - calcFrameBytes := int64(144*bitRate/sampleRate + paddingBytes) - dataWithPaddingBytes := calcFrameBytes - headerBytes - crcBytes - sideInfoBytes - - if dv, _, _ := d.TryFieldFormat("xing", xingHeader, nil); dv != nil { - // TODO: allow shorter? - paddingBytes := dataWithPaddingBytes - dv.Range.Len/8 - d.FieldRawLen("padding", paddingBytes*8) - } else { - frameMainDataPartBytes := dataWithPaddingBytes - int64(mainDataEnd) - int64(paddingBytes) - followingFrameMainDataPartsBytes := int64(mainDataEnd) - - // main data ends in previous frame - if frameMainDataPartBytes < 0 { - frameMainDataPartBytes = 0 - followingFrameMainDataPartsBytes = dataWithPaddingBytes - int64(paddingBytes) - } - - if frameMainDataPartBytes > 0 { - d.FieldRawLen("data", frameMainDataPartBytes*8) - } - - // TODO: correct? part of main data or not? part of next main data? - if paddingBytes > 0 { - d.FieldRawLen("padding_byte", int64(paddingBytes)*8) - } - - // TODO: better naming, main data does not always follow side info - // TODO: ancillary data between end of bitstream main data bits and start of next frames bitstream main data bits - - followingFramesBytesLeft := d.BitsLeft() / 8 - - if followingFramesBytesLeft <= followingFrameMainDataPartsBytes { - followingFrameMainDataPartsBytes = followingFramesBytesLeft - } - - d.FieldRawLen("other_data", followingFrameMainDataPartsBytes*8) - } + // total frame size + frameBytes := int((float64(sampleCount)/float64(sampleRate))*float64(bitRate)/8) + paddingBytes + // audio data size, may include audio data from other frames also if main_data_begin is used + restBytes := frameBytes - headerBytes - crcBytes - sideInfoBytes + d.FramedFn(int64(restBytes)*8, func(d *decode.D) { + _, _, _ = d.TryFieldFormat("xing", xingHeader, nil) + d.FieldRawLen("audio_data", d.BitsLeft()) + }) crcHash := &checksum.CRC{Bits: 16, Current: 0xffff, Table: checksum.ANSI16Table} // 2 bytes after sync and some other fields + all of side info d.CopyBits(crcHash, d.BitBufRange(2*8, 2*8)) - d.CopyBits(crcHash, d.BitBufRange(6*8, sideInfoBytes*8)) + d.CopyBits(crcHash, d.BitBufRange(6*8, int64(sideInfoBytes)*8)) if crcValue != nil { _ = crcValue.TryScalarFn(d.ValidateUBytes(crcHash.Sum(nil))) @@ -392,8 +381,8 @@ func frameDecode(d *decode.D, _ any) any { return format.MP3FrameOut{ MPEGVersion: int(mpegVersionNr), ProtectionAbsent: protectionAbsent, - BitRate: int(bitRate), - SampleRate: int(sampleRate), + BitRate: bitRate, + SampleRate: sampleRate, ChannelsIndex: int(channelModeIndex), ChannelModeIndex: int(channelModeIndex), } diff --git a/format/mpeg/testdata/mp3-frame-128000br-1ch-44100hz b/format/mpeg/testdata/mp3-frame-128000br-1ch-44100hz new file mode 100644 index 00000000..b6dcb8e7 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-128000br-1ch-44100hz differ diff --git a/format/mpeg/testdata/mp3-frame-128000br-1ch-44100hz.fqtest b/format/mpeg/testdata/mp3-frame-128000br-1ch-44100hz.fqtest new file mode 100644 index 00000000..09f6fc73 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-128000br-1ch-44100hz.fqtest @@ -0,0 +1,61 @@ +$ fq -d mp3_frame dv mp3-frame-128000br-1ch-44100hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-128000br-1ch-44100hz (mp3_frame) 0x0-0x1a0.7 (417) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x000| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x000| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| 90 | . | bitrate: 128000 (9) 0x2-0x2.3 (0.4) +0x000| 90 | . | sample_rate: 44100 (0) 0x2.4-0x2.5 (0.2) +0x000| 90 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| 90 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x000| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x000| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x000| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x14.7 (17) +0x000| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x000| 00 | . | share: 0 0x5.1-0x5.5 (0.5) +0x000| 00 14 | .. | scfsi0: 0 0x5.6-0x6.1 (0.4) + | | | granules[0:2]: 0x6.2-0x14.7 (14.6) + | | | [0][0:1]: granule 0x6.2-0xd.4 (7.3) + | | | [0]{}: channel 0x6.2-0xd.4 (7.3) +0x000| 14 54 | .T | part2_3_length: 1301 0x6.2-0x7.5 (1.4) +0x000| 54 95 | T. | big_values: 74 0x7.6-0x8.6 (1.1) +0x000| 95 20 | . | global_gain: 144 0x8.7-0x9.6 (1) +0x000| 20 55 | U | scalefac_compress: 2 0x9.7-0xa.2 (0.4) +0x000| 55 | U | blocksplit_flag: 1 0xa.3-0xa.3 (0.1) +0x000| 55 | U | block_type: "start block" (1) 0xa.4-0xa.5 (0.2) +0x000| 55 | U | switch_point: 0 0xa.6-0xa.6 (0.1) +0x000| 55 b7 | U. | table_select0: 27 0xa.7-0xb.3 (0.5) +0x000| b7 80 | .. | table_select1: 15 0xb.4-0xc (0.5) +0x000| 80 | . | subblock_gain0: 0 0xc.1-0xc.3 (0.3) +0x000| 80 | . | subblock_gain1: 0 0xc.4-0xc.6 (0.3) +0x000| 80 0b | .. | subblock_gain2: 0 0xc.7-0xd.1 (0.3) +0x000| 0b | . | preflag: 0 0xd.2-0xd.2 (0.1) +0x000| 0b | . | scalefac_scale: 0 0xd.3-0xd.3 (0.1) +0x000| 0b | . | count1table_select: 1 0xd.4-0xd.4 (0.1) + | | | [1][0:1]: granule 0xd.5-0x14.7 (7.3) + | | | [0]{}: channel 0xd.5-0x14.7 (7.3) +0x000| 0b 4f b3| .O.| part2_3_length: 1695 0xd.5-0xf (1.4) +0x000| b3| .| big_values: 204 0xf.1-0x10.1 (1.1) +0x010|2e |. | +0x010|2e 37 |.7 | global_gain: 184 0x10.2-0x11.1 (1) +0x010| 37 | 7 | scalefac_compress: 13 0x11.2-0x11.5 (0.4) +0x010| 37 | 7 | blocksplit_flag: 1 0x11.6-0x11.6 (0.1) +0x010| 37 33 | 73 | block_type: "3 short windows" (2) 0x11.7-0x12 (0.2) +0x010| 33 | 3 | switch_point: 0 0x12.1-0x12.1 (0.1) +0x010| 33 | 3 | table_select0: 25 0x12.2-0x12.6 (0.5) +0x010| 33 82 | 3. | table_select1: 24 0x12.7-0x13.3 (0.5) +0x010| 82 | . | subblock_gain0: 1 0x13.4-0x13.6 (0.3) +0x010| 82 0a | .. | subblock_gain1: 0 0x13.7-0x14.1 (0.3) +0x010| 0a | . | subblock_gain2: 1 0x14.2-0x14.4 (0.3) +0x010| 0a | . | preflag: 0 0x14.5-0x14.5 (0.1) +0x010| 0a | . | scalefac_scale: 1 0x14.6-0x14.6 (0.1) +0x010| 0a | . | count1table_select: 0 0x14.7-0x14.7 (0.1) +0x010| 05 90 13 83 81 37 d7 53 67 51 05| .....7.SgQ.| audio_data: raw bits 0x15-0x1a0.7 (396) +0x020|31 98 f2 b1 c1 52 1d d6 11 dd 52 1c 02 61 9d 8a|1....R....R..a..| +* |until 0x1a0.7 (end) (396) | | + | | | crc_calculated: "2b28" (raw bits) 0x1a1-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-128000br-1ch-48000hz b/format/mpeg/testdata/mp3-frame-128000br-1ch-48000hz new file mode 100644 index 00000000..b4f8293f Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-128000br-1ch-48000hz differ diff --git a/format/mpeg/testdata/mp3-frame-128000br-1ch-48000hz.fqtest b/format/mpeg/testdata/mp3-frame-128000br-1ch-48000hz.fqtest new file mode 100644 index 00000000..ef64cd9d --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-128000br-1ch-48000hz.fqtest @@ -0,0 +1,61 @@ +$ fq -d mp3_frame dv mp3-frame-128000br-1ch-48000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-128000br-1ch-48000hz (mp3_frame) 0x0-0x17f.7 (384) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x000| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x000| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| 94 | . | bitrate: 128000 (9) 0x2-0x2.3 (0.4) +0x000| 94 | . | sample_rate: 48000 (1) 0x2.4-0x2.5 (0.2) +0x000| 94 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| 94 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x000| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x000| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x000| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x14.7 (17) +0x000| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x000| 00 | . | share: 0 0x5.1-0x5.5 (0.5) +0x000| 00 12 | .. | scfsi0: 0 0x5.6-0x6.1 (0.4) + | | | granules[0:2]: 0x6.2-0x14.7 (14.6) + | | | [0][0:1]: granule 0x6.2-0xd.4 (7.3) + | | | [0]{}: channel 0x6.2-0xd.4 (7.3) +0x000| 12 ec | .. | part2_3_length: 1211 0x6.2-0x7.5 (1.4) +0x000| ec 59 | .Y | big_values: 44 0x7.6-0x8.6 (1.1) +0x000| 59 20 | Y | global_gain: 144 0x8.7-0x9.6 (1) +0x000| 20 35 | 5 | scalefac_compress: 1 0x9.7-0xa.2 (0.4) +0x000| 35 | 5 | blocksplit_flag: 1 0xa.3-0xa.3 (0.1) +0x000| 35 | 5 | block_type: "start block" (1) 0xa.4-0xa.5 (0.2) +0x000| 35 | 5 | switch_point: 0 0xa.6-0xa.6 (0.1) +0x000| 35 b7 | 5. | table_select0: 27 0xa.7-0xb.3 (0.5) +0x000| b7 80 | .. | table_select1: 15 0xb.4-0xc (0.5) +0x000| 80 | . | subblock_gain0: 0 0xc.1-0xc.3 (0.3) +0x000| 80 | . | subblock_gain1: 0 0xc.4-0xc.6 (0.3) +0x000| 80 0b | .. | subblock_gain2: 0 0xc.7-0xd.1 (0.3) +0x000| 0b | . | preflag: 0 0xd.2-0xd.2 (0.1) +0x000| 0b | . | scalefac_scale: 0 0xd.3-0xd.3 (0.1) +0x000| 0b | . | count1table_select: 1 0xd.4-0xd.4 (0.1) + | | | [1][0:1]: granule 0xd.5-0x14.7 (7.3) + | | | [0]{}: channel 0xd.5-0x14.7 (7.3) +0x000| 0b 05 2f| ../| part2_3_length: 1546 0xd.5-0xf (1.4) +0x000| 2f| /| big_values: 189 0xf.1-0x10.1 (1.1) +0x010|6c |l | +0x010|6c f7 |l. | global_gain: 179 0x10.2-0x11.1 (1) +0x010| f7 | . | scalefac_compress: 13 0x11.2-0x11.5 (0.4) +0x010| f7 | . | blocksplit_flag: 1 0x11.6-0x11.6 (0.1) +0x010| f7 31 | .1 | block_type: "3 short windows" (2) 0x11.7-0x12 (0.2) +0x010| 31 | 1 | switch_point: 0 0x12.1-0x12.1 (0.1) +0x010| 31 | 1 | table_select0: 24 0x12.2-0x12.6 (0.5) +0x010| 31 90 | 1. | table_select1: 25 0x12.7-0x13.3 (0.5) +0x010| 90 | . | subblock_gain0: 0 0x13.4-0x13.6 (0.3) +0x010| 90 02 | .. | subblock_gain1: 0 0x13.7-0x14.1 (0.3) +0x010| 02 | . | subblock_gain2: 0 0x14.2-0x14.4 (0.3) +0x010| 02 | . | preflag: 0 0x14.5-0x14.5 (0.1) +0x010| 02 | . | scalefac_scale: 1 0x14.6-0x14.6 (0.1) +0x010| 02 | . | count1table_select: 0 0x14.7-0x14.7 (0.1) +0x010| 18 0e 4e 34 e0 dc 4d 64 dc c1 45| ..N4..Md..E| audio_data: raw bits 0x15-0x17f.7 (363) +0x020|0d 29 e0 e7 2d 8f 13 18 ee 27 0d d9 08 04 a6 0d|.)..-....'......| +* |until 0x17f.7 (end) (363) | | + | | | crc_calculated: "24a4" (raw bits) 0x180-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-128000br-1ch-8000hz b/format/mpeg/testdata/mp3-frame-128000br-1ch-8000hz new file mode 100644 index 00000000..99faea13 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-128000br-1ch-8000hz differ diff --git a/format/mpeg/testdata/mp3-frame-128000br-1ch-8000hz.fqtest b/format/mpeg/testdata/mp3-frame-128000br-1ch-8000hz.fqtest new file mode 100644 index 00000000..b66c4a61 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-128000br-1ch-8000hz.fqtest @@ -0,0 +1,39 @@ +$ fq -d mp3_frame dv mp3-frame-128000br-1ch-8000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-128000br-1ch-8000hz (mp3_frame) 0x0-0x23f.7 (576) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff e3 |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| e3 | . | mpeg_version: "2.5" (0) (MPEG Version 2.5) 0x1.3-0x1.4 (0.2) +0x000| e3 | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 576 0x1.7-NA (0) +0x000| e3 | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| 88 | . | bitrate: 64000 (8) 0x2-0x2.3 (0.4) +0x000| 88 | . | sample_rate: 8000 (2) 0x2.4-0x2.5 (0.2) +0x000| 88 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| 88 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x000| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x000| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x000| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0xc.7 (9) +0x000| 00 | . | main_data_begin: 0 0x4-0x4.7 (1) +0x000| 71 | q | private_bits: 0 0x5-0x5 (0.1) + | | | granules[0:1]: 0x5.1-0xc.7 (7.7) + | | | [0][0:1]: granule 0x5.1-0xc.7 (7.7) + | | | [0]{}: channel 0x5.1-0xc.7 (7.7) +0x000| 71 ec | q. | part2_3_length: 3645 0x5.1-0x6.4 (1.4) +0x000| ec 6e | .n | big_values: 283 0x6.5-0x7.5 (1.1) +0x000| 6e 30 | n0 | global_gain: 140 0x7.6-0x8.5 (1) +0x000| 30 00 | 0. | scalefac_compress: 0 0x8.6-0x9.6 (1.1) +0x000| 00 | . | blocksplit_flag: 0 0x9.7-0x9.7 (0.1) +0x000| d7 | . | table_select0: 26 0xa-0xa.4 (0.5) +0x000| d7 72 | .r | table_select1: 29 0xa.5-0xb.1 (0.5) +0x000| 72 | r | table_select2: 25 0xb.2-0xb.6 (0.5) +0x000| 72 68 | rh | region_address1: 3 0xb.7-0xc.2 (0.4) +0x000| 68 | h | region_address2: 2 0xc.3-0xc.5 (0.3) +0x000| 68 | h | scalefac_scale: 0 0xc.6-0xc.6 (0.1) +0x000| 68 | h | count1table_select: 0 0xc.7-0xc.7 (0.1) +0x000| 39 f0 cd| 9..| audio_data: raw bits 0xd-0x23f.7 (563) +0x010|79 70 30 b3 06 4c d1 b5 38 32 4e 5c 53 6e 94 30|yp0..L..82N\Sn.0| +* |until 0x23f.7 (end) (563) | | + | | | crc_calculated: "a6be" (raw bits) 0x240-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-stereo b/format/mpeg/testdata/mp3-frame-128000br-2ch-44100hz similarity index 100% rename from format/mpeg/testdata/mp3-frame-stereo rename to format/mpeg/testdata/mp3-frame-128000br-2ch-44100hz diff --git a/format/mpeg/testdata/mp3-frame-stereo.fqtest b/format/mpeg/testdata/mp3-frame-128000br-2ch-44100hz.fqtest similarity index 95% rename from format/mpeg/testdata/mp3-frame-stereo.fqtest rename to format/mpeg/testdata/mp3-frame-128000br-2ch-44100hz.fqtest index 6393a8fb..9c4af37b 100644 --- a/format/mpeg/testdata/mp3-frame-stereo.fqtest +++ b/format/mpeg/testdata/mp3-frame-128000br-2ch-44100hz.fqtest @@ -1,6 +1,5 @@ -# ffmpeg -y -f lavfi -i sine -ac 2 -t 10ms -f mp3 file && fq file '.frame[1] | tobits' > mp3-frame-stereo -$ fq -d mp3_frame dv mp3-frame-stereo - |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-stereo (mp3_frame) 0x0-0x1a0.7 (417) +$ fq -d mp3_frame dv mp3-frame-128000br-2ch-44100hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-128000br-2ch-44100hz (mp3_frame) 0x0-0x1a0.7 (417) | | | header{}: 0x0-0x3.7 (4) 0x000|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) 0x000| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) @@ -17,10 +16,10 @@ $ fq -d mp3_frame dv mp3-frame-stereo 0x000| 64 | d | original: 1 0x3.5-0x3.5 (0.1) 0x000| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) | | | side_info{}: 0x4-0x23.7 (32) -0x000| 00 00 | .. | main_data_end: 0 0x4-0x5 (1.1) -0x000| 00 | . | private_bits: 0 0x5.1-0x5.3 (0.3) -0x000| 00 | . | share0: 0 0x5.4-0x5.7 (0.4) -0x000| 02 | . | share1: 0 0x6-0x6.3 (0.4) +0x000| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x000| 00 | . | share: 0 0x5.1-0x5.3 (0.3) +0x000| 00 | . | scfsi0: 0 0x5.4-0x5.7 (0.4) +0x000| 02 | . | scfsi1: 0 0x6-0x6.3 (0.4) | | | granules[0:2]: 0x6.4-0x23.7 (29.4) | | | [0][0:2]: granule 0x6.4-0x15.1 (14.6) | | | [0]{}: channel 0x6.4-0xd.6 (7.3) @@ -90,8 +89,7 @@ $ fq -d mp3_frame dv mp3-frame-stereo 0x020| 00 | . | preflag: 0 0x23.5-0x23.5 (0.1) 0x020| 00 | . | scalefac_scale: 0 0x23.6-0x23.6 (0.1) 0x020| 00 | . | count1table_select: 0 0x23.7-0x23.7 (0.1) -0x020| 0a 6b 6d d8 c2 12 cd a0 0d bf 4d 03| .km.......M.| data: raw bits 0x24-0x1a0.7 (381) +0x020| 0a 6b 6d d8 c2 12 cd a0 0d bf 4d 03| .km.......M.| audio_data: raw bits 0x24-0x1a0.7 (381) 0x030|01 8d 4c 35 18 20 0c 1d db 6b 6d 7d df 7f e3 72|..L5. ...km}...r| * |until 0x1a0.7 (end) (381) | | - | | | other_data: raw bits 0x1a1-NA (0) | | | crc_calculated: "1855" (raw bits) 0x1a1-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-128000br-2ch-48000hz b/format/mpeg/testdata/mp3-frame-128000br-2ch-48000hz new file mode 100644 index 00000000..93baf707 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-128000br-2ch-48000hz differ diff --git a/format/mpeg/testdata/mp3-frame-128000br-2ch-48000hz.fqtest b/format/mpeg/testdata/mp3-frame-128000br-2ch-48000hz.fqtest new file mode 100644 index 00000000..3ad0a6d6 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-128000br-2ch-48000hz.fqtest @@ -0,0 +1,95 @@ +$ fq -d mp3_frame dv mp3-frame-128000br-2ch-48000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-128000br-2ch-48000hz (mp3_frame) 0x0-0x17f.7 (384) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x000| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x000| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| 94 | . | bitrate: 128000 (9) 0x2-0x2.3 (0.4) +0x000| 94 | . | sample_rate: 48000 (1) 0x2.4-0x2.5 (0.2) +0x000| 94 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| 94 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| 64 | d | channels: "joint_stereo" (0b1) 0x3-0x3.1 (0.2) +0x000| 64 | d | channel_mode: "ms_stereo" (0b10) 0x3.2-0x3.3 (0.2) +0x000| 64 | d | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| 64 | d | original: 1 0x3.5-0x3.5 (0.1) +0x000| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x23.7 (32) +0x000| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x000| 00 | . | share: 0 0x5.1-0x5.3 (0.3) +0x000| 00 | . | scfsi0: 0 0x5.4-0x5.7 (0.4) +0x000| 02 | . | scfsi1: 0 0x6-0x6.3 (0.4) + | | | granules[0:2]: 0x6.4-0x23.7 (29.4) + | | | [0][0:2]: granule 0x6.4-0x15.1 (14.6) + | | | [0]{}: channel 0x6.4-0xd.6 (7.3) +0x000| 02 1c | .. | part2_3_length: 540 0x6.4-0x7.7 (1.4) +0x000| 08 50 | .P | big_values: 16 0x8-0x9 (1.1) +0x000| 50 bd | P. | global_gain: 161 0x9.1-0xa (1) +0x000| bd | . | scalefac_compress: 7 0xa.1-0xa.4 (0.4) +0x000| bd | . | blocksplit_flag: 1 0xa.5-0xa.5 (0.1) +0x000| bd | . | block_type: "start block" (1) 0xa.6-0xa.7 (0.2) +0x000| 3c | < | switch_point: 0 0xb-0xb (0.1) +0x000| 3c | < | table_select0: 15 0xb.1-0xb.5 (0.5) +0x000| 3c 60 | <` | table_select1: 3 0xb.6-0xc.2 (0.5) +0x000| 60 | ` | subblock_gain0: 0 0xc.3-0xc.5 (0.3) +0x000| 60 08 | `. | subblock_gain1: 0 0xc.6-0xd (0.3) +0x000| 08 | . | subblock_gain2: 0 0xd.1-0xd.3 (0.3) +0x000| 08 | . | preflag: 1 0xd.4-0xd.4 (0.1) +0x000| 08 | . | scalefac_scale: 0 0xd.5-0xd.5 (0.1) +0x000| 08 | . | count1table_select: 0 0xd.6-0xd.6 (0.1) + | | | [1]{}: channel 0xd.7-0x15.1 (7.3) +0x000| 08 00 00| ...| part2_3_length: 0 0xd.7-0xf.2 (1.4) +0x000| 00| .| big_values: 0 0xf.3-0x10.3 (1.1) +0x010|0d |. | +0x010|0d 20 |. | global_gain: 210 0x10.4-0x11.3 (1) +0x010| 20 | | scalefac_compress: 0 0x11.4-0x11.7 (0.4) +0x010| a0 | . | blocksplit_flag: 1 0x12-0x12 (0.1) +0x010| a0 | . | block_type: "start block" (1) 0x12.1-0x12.2 (0.2) +0x010| a0 | . | switch_point: 0 0x12.3-0x12.3 (0.1) +0x010| a0 00 | .. | table_select0: 0 0x12.4-0x13 (0.5) +0x010| 00 | . | table_select1: 0 0x13.1-0x13.5 (0.5) +0x010| 00 01 | .. | subblock_gain0: 0 0x13.6-0x14 (0.3) +0x010| 01 | . | subblock_gain1: 0 0x14.1-0x14.3 (0.3) +0x010| 01 | . | subblock_gain2: 0 0x14.4-0x14.6 (0.3) +0x010| 01 | . | preflag: 1 0x14.7-0x14.7 (0.1) +0x010| 16 | . | scalefac_scale: 0 0x15-0x15 (0.1) +0x010| 16 | . | count1table_select: 0 0x15.1-0x15.1 (0.1) + | | | [1][0:2]: granule 0x15.2-0x23.7 (14.6) + | | | [0]{}: channel 0x15.2-0x1c.4 (7.3) +0x010| 16 f1 | .. | part2_3_length: 1468 0x15.2-0x16.5 (1.4) +0x010| f1 7b | .{ | big_values: 189 0x16.6-0x17.6 (1.1) +0x010| 7b 5d | {] | global_gain: 174 0x17.7-0x18.6 (1) +0x010| 5d b9 | ]. | scalefac_compress: 13 0x18.7-0x19.2 (0.4) +0x010| b9 | . | blocksplit_flag: 1 0x19.3-0x19.3 (0.1) +0x010| b9 | . | block_type: "3 short windows" (2) 0x19.4-0x19.5 (0.2) +0x010| b9 | . | switch_point: 0 0x19.6-0x19.6 (0.1) +0x010| b9 89 | .. | table_select0: 24 0x19.7-0x1a.3 (0.5) +0x010| 89 00 | .. | table_select1: 18 0x1a.4-0x1b (0.5) +0x010| 00 | . | subblock_gain0: 0 0x1b.1-0x1b.3 (0.3) +0x010| 00 | . | subblock_gain1: 0 0x1b.4-0x1b.6 (0.3) +0x010| 00 10 | .. | subblock_gain2: 0 0x1b.7-0x1c.1 (0.3) +0x010| 10 | . | preflag: 0 0x1c.2-0x1c.2 (0.1) +0x010| 10 | . | scalefac_scale: 1 0x1c.3-0x1c.3 (0.1) +0x010| 10 | . | count1table_select: 0 0x1c.4-0x1c.4 (0.1) + | | | [1]{}: channel 0x1c.5-0x23.7 (7.3) +0x010| 10 00 00 | ... | part2_3_length: 0 0x1c.5-0x1e (1.4) +0x010| 00 34| .4| big_values: 0 0x1e.1-0x1f.1 (1.1) +0x010| 34| 4| global_gain: 210 0x1f.2-0x20.1 (1) +0x020|83 |. | +0x020|83 |. | scalefac_compress: 0 0x20.2-0x20.5 (0.4) +0x020|83 |. | blocksplit_flag: 1 0x20.6-0x20.6 (0.1) +0x020|83 00 |.. | block_type: "3 short windows" (2) 0x20.7-0x21 (0.2) +0x020| 00 | . | switch_point: 0 0x21.1-0x21.1 (0.1) +0x020| 00 | . | table_select0: 0 0x21.2-0x21.6 (0.5) +0x020| 00 00 | .. | table_select1: 0 0x21.7-0x22.3 (0.5) +0x020| 00 | . | subblock_gain0: 0 0x22.4-0x22.6 (0.3) +0x020| 00 00 | .. | subblock_gain1: 0 0x22.7-0x23.1 (0.3) +0x020| 00 | . | subblock_gain2: 0 0x23.2-0x23.4 (0.3) +0x020| 00 | . | preflag: 0 0x23.5-0x23.5 (0.1) +0x020| 00 | . | scalefac_scale: 0 0x23.6-0x23.6 (0.1) +0x020| 00 | . | count1table_select: 0 0x23.7-0x23.7 (0.1) +0x020| 00 25 df 6c 97 04 8c 43 cb 9b 10 dc| .%.l...C....| audio_data: raw bits 0x24-0x17f.7 (348) +0x030|02 e0 0b 00 60 1f 8a b8 6c 6a f6 77 ef c1 f0 40|....`...lj.w...@| +* |until 0x17f.7 (end) (348) | | + | | | crc_calculated: "9633" (raw bits) 0x180-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-128000br-2ch-8000hz b/format/mpeg/testdata/mp3-frame-128000br-2ch-8000hz new file mode 100644 index 00000000..86db0dbe Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-128000br-2ch-8000hz differ diff --git a/format/mpeg/testdata/mp3-frame-128000br-2ch-8000hz.fqtest b/format/mpeg/testdata/mp3-frame-128000br-2ch-8000hz.fqtest new file mode 100644 index 00000000..856d8447 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-128000br-2ch-8000hz.fqtest @@ -0,0 +1,53 @@ +$ fq -d mp3_frame dv mp3-frame-128000br-2ch-8000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-128000br-2ch-8000hz (mp3_frame) 0x0-0x23f.7 (576) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff e3 |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| e3 | . | mpeg_version: "2.5" (0) (MPEG Version 2.5) 0x1.3-0x1.4 (0.2) +0x000| e3 | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 576 0x1.7-NA (0) +0x000| e3 | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| 88 | . | bitrate: 64000 (8) 0x2-0x2.3 (0.4) +0x000| 88 | . | sample_rate: 8000 (2) 0x2.4-0x2.5 (0.2) +0x000| 88 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| 88 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| 64 | d | channels: "joint_stereo" (0b1) 0x3-0x3.1 (0.2) +0x000| 64 | d | channel_mode: "ms_stereo" (0b10) 0x3.2-0x3.3 (0.2) +0x000| 64 | d | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| 64 | d | original: 1 0x3.5-0x3.5 (0.1) +0x000| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x14.7 (17) +0x000| 00 | . | main_data_begin: 0 0x4-0x4.7 (1) +0x000| 26 | & | private_bits: 0 0x5-0x5.1 (0.2) + | | | granules[0:1]: 0x5.2-0x14.7 (15.6) + | | | [0][0:2]: granule 0x5.2-0x14.7 (15.6) + | | | [0]{}: channel 0x5.2-0xd (7.7) +0x000| 26 76 | &v | part2_3_length: 2461 0x5.2-0x6.5 (1.4) +0x000| 76 37 | v7 | big_values: 283 0x6.6-0x7.6 (1.1) +0x000| 37 2a | 7* | global_gain: 149 0x7.7-0x8.6 (1) +0x000| 2a 01 | *. | scalefac_compress: 1 0x8.7-0x9.7 (1.1) +0x000| 63 | c | blocksplit_flag: 0 0xa-0xa (0.1) +0x000| 63 | c | table_select0: 24 0xa.1-0xa.5 (0.5) +0x000| 63 6c | cl | table_select1: 27 0xa.6-0xb.2 (0.5) +0x000| 6c | l | table_select2: 12 0xb.3-0xb.7 (0.5) +0x000| 38 | 8 | region_address1: 3 0xc-0xc.3 (0.4) +0x000| 38 | 8 | region_address2: 4 0xc.4-0xc.6 (0.3) +0x000| 38 | 8 | scalefac_scale: 0 0xc.7-0xc.7 (0.1) +0x000| 00 | . | count1table_select: 0 0xd-0xd (0.1) + | | | [1]{}: channel 0xd.1-0x14.7 (7.7) +0x000| 00 00 | .. | part2_3_length: 0 0xd.1-0xe.4 (1.4) +0x000| 00 03| ..| big_values: 0 0xe.5-0xf.5 (1.1) +0x000| 03| .| global_gain: 210 0xf.6-0x10.5 (1) +0x010|48 |H | +0x010|48 00 |H. | scalefac_compress: 0 0x10.6-0x11.6 (1.1) +0x010| 00 | . | blocksplit_flag: 0 0x11.7-0x11.7 (0.1) +0x010| 00 | . | table_select0: 0 0x12-0x12.4 (0.5) +0x010| 00 00 | .. | table_select1: 0 0x12.5-0x13.1 (0.5) +0x010| 00 | . | table_select2: 0 0x13.2-0x13.6 (0.5) +0x010| 00 00 | .. | region_address1: 0 0x13.7-0x14.2 (0.4) +0x010| 00 | . | region_address2: 0 0x14.3-0x14.5 (0.3) +0x010| 00 | . | scalefac_scale: 0 0x14.6-0x14.6 (0.1) +0x010| 00 | . | count1table_select: 0 0x14.7-0x14.7 (0.1) +0x010| 81 94 28 6e ef b2 b2 eb 98 46 63| ..(n.....Fc| audio_data: raw bits 0x15-0x23f.7 (555) +0x020|09 76 db 7a ef 01 6e 0c 44 33 08 b7 8f 65 b6 90|.v.z..n.D3...e..| +* |until 0x23f.7 (end) (555) | | + | | | crc_calculated: "eae8" (raw bits) 0x240-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-320000br-1ch-44100hz b/format/mpeg/testdata/mp3-frame-320000br-1ch-44100hz new file mode 100644 index 00000000..608f3ade Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-320000br-1ch-44100hz differ diff --git a/format/mpeg/testdata/mp3-frame-320000br-1ch-44100hz.fqtest b/format/mpeg/testdata/mp3-frame-320000br-1ch-44100hz.fqtest new file mode 100644 index 00000000..1343fc45 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-320000br-1ch-44100hz.fqtest @@ -0,0 +1,61 @@ +$ fq -d mp3_frame dv mp3-frame-320000br-1ch-44100hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-320000br-1ch-44100hz (mp3_frame) 0x0-0x413.7 (1044) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x000| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x000| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| e0 | . | bitrate: 320000 (14) 0x2-0x2.3 (0.4) +0x000| e0 | . | sample_rate: 44100 (0) 0x2.4-0x2.5 (0.2) +0x000| e0 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| e0 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x000| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x000| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x000| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x14.7 (17) +0x000| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x000| 00 | . | share: 0 0x5.1-0x5.5 (0.5) +0x000| 00 33 | .3 | scfsi0: 0 0x5.6-0x6.1 (0.4) + | | | granules[0:2]: 0x6.2-0x14.7 (14.6) + | | | [0][0:1]: granule 0x6.2-0xd.4 (7.3) + | | | [0]{}: channel 0x6.2-0xd.4 (7.3) +0x000| 33 7a | 3z | part2_3_length: 3294 0x6.2-0x7.5 (1.4) +0x000| 7a 0b | z. | big_values: 261 0x7.6-0x8.6 (1.1) +0x000| 0b 06 | .. | global_gain: 131 0x8.7-0x9.6 (1) +0x000| 06 75 | .u | scalefac_compress: 3 0x9.7-0xa.2 (0.4) +0x000| 75 | u | blocksplit_flag: 1 0xa.3-0xa.3 (0.1) +0x000| 75 | u | block_type: "start block" (1) 0xa.4-0xa.5 (0.2) +0x000| 75 | u | switch_point: 0 0xa.6-0xa.6 (0.1) +0x000| 75 ed | u. | table_select0: 30 0xa.7-0xb.3 (0.5) +0x000| ed 00 | .. | table_select1: 26 0xb.4-0xc (0.5) +0x000| 00 | . | subblock_gain0: 0 0xc.1-0xc.3 (0.3) +0x000| 00 | . | subblock_gain1: 0 0xc.4-0xc.6 (0.3) +0x000| 00 0f | .. | subblock_gain2: 0 0xc.7-0xd.1 (0.3) +0x000| 0f | . | preflag: 0 0xd.2-0xd.2 (0.1) +0x000| 0f | . | scalefac_scale: 0 0xd.3-0xd.3 (0.1) +0x000| 0f | . | count1table_select: 1 0xd.4-0xd.4 (0.1) + | | | [1][0:1]: granule 0xd.5-0x14.7 (7.3) + | | | [0]{}: channel 0xd.5-0x14.7 (7.3) +0x000| 0f c5 c5| ...| part2_3_length: 3979 0xd.5-0xf (1.4) +0x000| c5| .| big_values: 279 0xf.1-0x10.1 (1.1) +0x010|e3 |. | +0x010|e3 03 |.. | global_gain: 140 0x10.2-0x11.1 (1) +0x010| 03 | . | scalefac_compress: 0 0x11.2-0x11.5 (0.4) +0x010| 03 | . | blocksplit_flag: 1 0x11.6-0x11.6 (0.1) +0x010| 03 3d | .= | block_type: "3 short windows" (2) 0x11.7-0x12 (0.2) +0x010| 3d | = | switch_point: 0 0x12.1-0x12.1 (0.1) +0x010| 3d | = | table_select0: 30 0x12.2-0x12.6 (0.5) +0x010| 3d b0 | =. | table_select1: 27 0x12.7-0x13.3 (0.5) +0x010| b0 | . | subblock_gain0: 0 0x13.4-0x13.6 (0.3) +0x010| b0 00 | .. | subblock_gain1: 0 0x13.7-0x14.1 (0.3) +0x010| 00 | . | subblock_gain2: 0 0x14.2-0x14.4 (0.3) +0x010| 00 | . | preflag: 0 0x14.5-0x14.5 (0.1) +0x010| 00 | . | scalefac_scale: 0 0x14.6-0x14.6 (0.1) +0x010| 00 | . | count1table_select: 0 0x14.7-0x14.7 (0.1) +0x010| 01 46 db 6c cd 9c d7 4c d1 cc 6c| .F.l...L..l| audio_data: raw bits 0x15-0x413.7 (1023) +0x020|cb 34 94 cc 65 41 9c c4 e0 9b 0c da 10 a0 d2 91|.4..eA..........| +* |until 0x413.7 (end) (1023) | | + | | | crc_calculated: "8629" (raw bits) 0x414-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-320000br-1ch-48000hz b/format/mpeg/testdata/mp3-frame-320000br-1ch-48000hz new file mode 100644 index 00000000..364d4cd8 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-320000br-1ch-48000hz differ diff --git a/format/mpeg/testdata/mp3-frame-320000br-1ch-48000hz.fqtest b/format/mpeg/testdata/mp3-frame-320000br-1ch-48000hz.fqtest new file mode 100644 index 00000000..4c96aef7 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-320000br-1ch-48000hz.fqtest @@ -0,0 +1,61 @@ +$ fq -d mp3_frame dv mp3-frame-320000br-1ch-48000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-320000br-1ch-48000hz (mp3_frame) 0x0-0x3bf.7 (960) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x000| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x000| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| e4 | . | bitrate: 320000 (14) 0x2-0x2.3 (0.4) +0x000| e4 | . | sample_rate: 48000 (1) 0x2.4-0x2.5 (0.2) +0x000| e4 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| e4 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x000| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x000| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x000| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x14.7 (17) +0x000| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x000| 00 | . | share: 0 0x5.1-0x5.5 (0.5) +0x000| 00 2d | .- | scfsi0: 0 0x5.6-0x6.1 (0.4) + | | | granules[0:2]: 0x6.2-0x14.7 (14.6) + | | | [0][0:1]: granule 0x6.2-0xd.4 (7.3) + | | | [0]{}: channel 0x6.2-0xd.4 (7.3) +0x000| 2d 85 | -. | part2_3_length: 2913 0x6.2-0x7.5 (1.4) +0x000| 85 e3 | .. | big_values: 241 0x7.6-0x8.6 (1.1) +0x000| e3 0a | .. | global_gain: 133 0x8.7-0x9.6 (1) +0x000| 0a 75 | .u | scalefac_compress: 3 0x9.7-0xa.2 (0.4) +0x000| 75 | u | blocksplit_flag: 1 0xa.3-0xa.3 (0.1) +0x000| 75 | u | block_type: "start block" (1) 0xa.4-0xa.5 (0.2) +0x000| 75 | u | switch_point: 0 0xa.6-0xa.6 (0.1) +0x000| 75 dc | u. | table_select0: 29 0xa.7-0xb.3 (0.5) +0x000| dc 80 | .. | table_select1: 25 0xb.4-0xc (0.5) +0x000| 80 | . | subblock_gain0: 0 0xc.1-0xc.3 (0.3) +0x000| 80 | . | subblock_gain1: 0 0xc.4-0xc.6 (0.3) +0x000| 80 0f | .. | subblock_gain2: 0 0xc.7-0xd.1 (0.3) +0x000| 0f | . | preflag: 0 0xd.2-0xd.2 (0.1) +0x000| 0f | . | scalefac_scale: 0 0xd.3-0xd.3 (0.1) +0x000| 0f | . | count1table_select: 1 0xd.4-0xd.4 (0.1) + | | | [1][0:1]: granule 0xd.5-0x14.7 (7.3) + | | | [0]{}: channel 0xd.5-0x14.7 (7.3) +0x000| 0f d3 44| ..D| part2_3_length: 4006 0xd.5-0xf (1.4) +0x000| 44| D| big_values: 273 0xf.1-0x10.1 (1.1) +0x010|62 |b | +0x010|62 83 |b. | global_gain: 138 0x10.2-0x11.1 (1) +0x010| 83 | . | scalefac_compress: 0 0x11.2-0x11.5 (0.4) +0x010| 83 | . | blocksplit_flag: 1 0x11.6-0x11.6 (0.1) +0x010| 83 3f | .? | block_type: "3 short windows" (2) 0x11.7-0x12 (0.2) +0x010| 3f | ? | switch_point: 0 0x12.1-0x12.1 (0.1) +0x010| 3f | ? | table_select0: 31 0x12.2-0x12.6 (0.5) +0x010| 3f c0 | ?. | table_select1: 28 0x12.7-0x13.3 (0.5) +0x010| c0 | . | subblock_gain0: 0 0x13.4-0x13.6 (0.3) +0x010| c0 00 | .. | subblock_gain1: 0 0x13.7-0x14.1 (0.3) +0x010| 00 | . | subblock_gain2: 0 0x14.2-0x14.4 (0.3) +0x010| 00 | . | preflag: 0 0x14.5-0x14.5 (0.1) +0x010| 00 | . | scalefac_scale: 0 0x14.6-0x14.6 (0.1) +0x010| 00 | . | count1table_select: 0 0x14.7-0x14.7 (0.1) +0x010| 01 cb 23 90 ed fb 1c e9 79 2c de| ..#.....y,.| audio_data: raw bits 0x15-0x3bf.7 (939) +0x020|15 34 c7 52 e0 da 69 a8 f0 ad f0 fb ae f8 f8 4c|.4.R..i........L| +* |until 0x3bf.7 (end) (939) | | + | | | crc_calculated: "b64d" (raw bits) 0x3c0-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-320000br-1ch-8000hz b/format/mpeg/testdata/mp3-frame-320000br-1ch-8000hz new file mode 100644 index 00000000..99faea13 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-320000br-1ch-8000hz differ diff --git a/format/mpeg/testdata/mp3-frame-320000br-1ch-8000hz.fqtest b/format/mpeg/testdata/mp3-frame-320000br-1ch-8000hz.fqtest new file mode 100644 index 00000000..06b934c7 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-320000br-1ch-8000hz.fqtest @@ -0,0 +1,39 @@ +$ fq -d mp3_frame dv mp3-frame-320000br-1ch-8000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-320000br-1ch-8000hz (mp3_frame) 0x0-0x23f.7 (576) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff e3 |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| e3 | . | mpeg_version: "2.5" (0) (MPEG Version 2.5) 0x1.3-0x1.4 (0.2) +0x000| e3 | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 576 0x1.7-NA (0) +0x000| e3 | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| 88 | . | bitrate: 64000 (8) 0x2-0x2.3 (0.4) +0x000| 88 | . | sample_rate: 8000 (2) 0x2.4-0x2.5 (0.2) +0x000| 88 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| 88 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x000| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x000| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x000| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0xc.7 (9) +0x000| 00 | . | main_data_begin: 0 0x4-0x4.7 (1) +0x000| 71 | q | private_bits: 0 0x5-0x5 (0.1) + | | | granules[0:1]: 0x5.1-0xc.7 (7.7) + | | | [0][0:1]: granule 0x5.1-0xc.7 (7.7) + | | | [0]{}: channel 0x5.1-0xc.7 (7.7) +0x000| 71 ec | q. | part2_3_length: 3645 0x5.1-0x6.4 (1.4) +0x000| ec 6e | .n | big_values: 283 0x6.5-0x7.5 (1.1) +0x000| 6e 30 | n0 | global_gain: 140 0x7.6-0x8.5 (1) +0x000| 30 00 | 0. | scalefac_compress: 0 0x8.6-0x9.6 (1.1) +0x000| 00 | . | blocksplit_flag: 0 0x9.7-0x9.7 (0.1) +0x000| d7 | . | table_select0: 26 0xa-0xa.4 (0.5) +0x000| d7 72 | .r | table_select1: 29 0xa.5-0xb.1 (0.5) +0x000| 72 | r | table_select2: 25 0xb.2-0xb.6 (0.5) +0x000| 72 68 | rh | region_address1: 3 0xb.7-0xc.2 (0.4) +0x000| 68 | h | region_address2: 2 0xc.3-0xc.5 (0.3) +0x000| 68 | h | scalefac_scale: 0 0xc.6-0xc.6 (0.1) +0x000| 68 | h | count1table_select: 0 0xc.7-0xc.7 (0.1) +0x000| 39 f0 cd| 9..| audio_data: raw bits 0xd-0x23f.7 (563) +0x010|79 70 30 b3 06 4c d1 b5 38 32 4e 5c 53 6e 94 30|yp0..L..82N\Sn.0| +* |until 0x23f.7 (end) (563) | | + | | | crc_calculated: "a6be" (raw bits) 0x240-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-320000br-2ch-44100hz b/format/mpeg/testdata/mp3-frame-320000br-2ch-44100hz new file mode 100644 index 00000000..401afe36 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-320000br-2ch-44100hz differ diff --git a/format/mpeg/testdata/mp3-frame-320000br-2ch-44100hz.fqtest b/format/mpeg/testdata/mp3-frame-320000br-2ch-44100hz.fqtest new file mode 100644 index 00000000..0d47fc98 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-320000br-2ch-44100hz.fqtest @@ -0,0 +1,95 @@ +$ fq -d mp3_frame dv mp3-frame-320000br-2ch-44100hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-320000br-2ch-44100hz (mp3_frame) 0x0-0x413.7 (1044) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x000| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x000| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| e0 | . | bitrate: 320000 (14) 0x2-0x2.3 (0.4) +0x000| e0 | . | sample_rate: 44100 (0) 0x2.4-0x2.5 (0.2) +0x000| e0 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| e0 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| 64 | d | channels: "joint_stereo" (0b1) 0x3-0x3.1 (0.2) +0x000| 64 | d | channel_mode: "ms_stereo" (0b10) 0x3.2-0x3.3 (0.2) +0x000| 64 | d | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| 64 | d | original: 1 0x3.5-0x3.5 (0.1) +0x000| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x23.7 (32) +0x000| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x000| 00 | . | share: 0 0x5.1-0x5.3 (0.3) +0x000| 00 | . | scfsi0: 0 0x5.4-0x5.7 (0.4) +0x000| 08 | . | scfsi1: 0 0x6-0x6.3 (0.4) + | | | granules[0:2]: 0x6.4-0x23.7 (29.4) + | | | [0][0:2]: granule 0x6.4-0x15.1 (14.6) + | | | [0]{}: channel 0x6.4-0xd.6 (7.3) +0x000| 08 e4 | .. | part2_3_length: 2276 0x6.4-0x7.7 (1.4) +0x000| 6f 44 | oD | big_values: 222 0x8-0x9 (1.1) +0x000| 44 8d | D. | global_gain: 137 0x9.1-0xa (1) +0x000| 8d | . | scalefac_compress: 1 0xa.1-0xa.4 (0.4) +0x000| 8d | . | blocksplit_flag: 1 0xa.5-0xa.5 (0.1) +0x000| 8d | . | block_type: "start block" (1) 0xa.6-0xa.7 (0.2) +0x000| 77 | w | switch_point: 0 0xb-0xb (0.1) +0x000| 77 | w | table_select0: 29 0xb.1-0xb.5 (0.5) +0x000| 77 00 | w. | table_select1: 24 0xb.6-0xc.2 (0.5) +0x000| 00 | . | subblock_gain0: 0 0xc.3-0xc.5 (0.3) +0x000| 00 02 | .. | subblock_gain1: 0 0xc.6-0xd (0.3) +0x000| 02 | . | subblock_gain2: 0 0xd.1-0xd.3 (0.3) +0x000| 02 | . | preflag: 0 0xd.4-0xd.4 (0.1) +0x000| 02 | . | scalefac_scale: 0 0xd.5-0xd.5 (0.1) +0x000| 02 | . | count1table_select: 1 0xd.6-0xd.6 (0.1) + | | | [1]{}: channel 0xd.7-0x15.1 (7.3) +0x000| 02 00 00| ...| part2_3_length: 0 0xd.7-0xf.2 (1.4) +0x000| 00| .| big_values: 0 0xf.3-0x10.3 (1.1) +0x010|0d |. | +0x010|0d 20 |. | global_gain: 210 0x10.4-0x11.3 (1) +0x010| 20 | | scalefac_compress: 0 0x11.4-0x11.7 (0.4) +0x010| a0 | . | blocksplit_flag: 1 0x12-0x12 (0.1) +0x010| a0 | . | block_type: "start block" (1) 0x12.1-0x12.2 (0.2) +0x010| a0 | . | switch_point: 0 0x12.3-0x12.3 (0.1) +0x010| a0 00 | .. | table_select0: 0 0x12.4-0x13 (0.5) +0x010| 00 | . | table_select1: 0 0x13.1-0x13.5 (0.5) +0x010| 00 01 | .. | subblock_gain0: 0 0x13.6-0x14 (0.3) +0x010| 01 | . | subblock_gain1: 0 0x14.1-0x14.3 (0.3) +0x010| 01 | . | subblock_gain2: 0 0x14.4-0x14.6 (0.3) +0x010| 01 | . | preflag: 1 0x14.7-0x14.7 (0.1) +0x010| 3e | > | scalefac_scale: 0 0x15-0x15 (0.1) +0x010| 3e | > | count1table_select: 0 0x15.1-0x15.1 (0.1) + | | | [1][0:2]: granule 0x15.2-0x23.7 (14.6) + | | | [0]{}: channel 0x15.2-0x1c.4 (7.3) +0x010| 3e 46 | >F | part2_3_length: 3985 0x15.2-0x16.5 (1.4) +0x010| 46 2f | F/ | big_values: 279 0x16.6-0x17.6 (1.1) +0x010| 2f 18 | /. | global_gain: 140 0x17.7-0x18.6 (1) +0x010| 18 19 | .. | scalefac_compress: 0 0x18.7-0x19.2 (0.4) +0x010| 19 | . | blocksplit_flag: 1 0x19.3-0x19.3 (0.1) +0x010| 19 | . | block_type: "3 short windows" (2) 0x19.4-0x19.5 (0.2) +0x010| 19 | . | switch_point: 0 0x19.6-0x19.6 (0.1) +0x010| 19 ed | .. | table_select0: 30 0x19.7-0x1a.3 (0.5) +0x010| ed 80 | .. | table_select1: 27 0x1a.4-0x1b (0.5) +0x010| 80 | . | subblock_gain0: 0 0x1b.1-0x1b.3 (0.3) +0x010| 80 | . | subblock_gain1: 0 0x1b.4-0x1b.6 (0.3) +0x010| 80 00 | .. | subblock_gain2: 0 0x1b.7-0x1c.1 (0.3) +0x010| 00 | . | preflag: 0 0x1c.2-0x1c.2 (0.1) +0x010| 00 | . | scalefac_scale: 0 0x1c.3-0x1c.3 (0.1) +0x010| 00 | . | count1table_select: 0 0x1c.4-0x1c.4 (0.1) + | | | [1]{}: channel 0x1c.5-0x23.7 (7.3) +0x010| 00 00 00 | ... | part2_3_length: 0 0x1c.5-0x1e (1.4) +0x010| 00 34| .4| big_values: 0 0x1e.1-0x1f.1 (1.1) +0x010| 34| 4| global_gain: 210 0x1f.2-0x20.1 (1) +0x020|83 |. | +0x020|83 |. | scalefac_compress: 0 0x20.2-0x20.5 (0.4) +0x020|83 |. | blocksplit_flag: 1 0x20.6-0x20.6 (0.1) +0x020|83 00 |.. | block_type: "3 short windows" (2) 0x20.7-0x21 (0.2) +0x020| 00 | . | switch_point: 0 0x21.1-0x21.1 (0.1) +0x020| 00 | . | table_select0: 0 0x21.2-0x21.6 (0.5) +0x020| 00 00 | .. | table_select1: 0 0x21.7-0x22.3 (0.5) +0x020| 00 | . | subblock_gain0: 0 0x22.4-0x22.6 (0.3) +0x020| 00 00 | .. | subblock_gain1: 0 0x22.7-0x23.1 (0.3) +0x020| 00 | . | subblock_gain2: 0 0x23.2-0x23.4 (0.3) +0x020| 00 | . | preflag: 0 0x23.5-0x23.5 (0.1) +0x020| 00 | . | scalefac_scale: 0 0x23.6-0x23.6 (0.1) +0x020| 00 | . | count1table_select: 0 0x23.7-0x23.7 (0.1) +0x020| 1c 0d 7f 5e cd 71 57 4d 39 40 4c a9| ...^.qWM9@L.| audio_data: raw bits 0x24-0x413.7 (1008) +0x030|07 cc 7e 43 0d 80 76 0e 10 89 0e 10 75 0d 78 3d|..~C..v.....u.x=| +* |until 0x413.7 (end) (1008) | | + | | | crc_calculated: "a2ea" (raw bits) 0x414-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-320000br-2ch-48000hz b/format/mpeg/testdata/mp3-frame-320000br-2ch-48000hz new file mode 100644 index 00000000..58fe75d7 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-320000br-2ch-48000hz differ diff --git a/format/mpeg/testdata/mp3-frame-320000br-2ch-48000hz.fqtest b/format/mpeg/testdata/mp3-frame-320000br-2ch-48000hz.fqtest new file mode 100644 index 00000000..d4e281d6 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-320000br-2ch-48000hz.fqtest @@ -0,0 +1,95 @@ +$ fq -d mp3_frame dv mp3-frame-320000br-2ch-48000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-320000br-2ch-48000hz (mp3_frame) 0x0-0x3bf.7 (960) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x000| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x000| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| e4 | . | bitrate: 320000 (14) 0x2-0x2.3 (0.4) +0x000| e4 | . | sample_rate: 48000 (1) 0x2.4-0x2.5 (0.2) +0x000| e4 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| e4 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| 64 | d | channels: "joint_stereo" (0b1) 0x3-0x3.1 (0.2) +0x000| 64 | d | channel_mode: "ms_stereo" (0b10) 0x3.2-0x3.3 (0.2) +0x000| 64 | d | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| 64 | d | original: 1 0x3.5-0x3.5 (0.1) +0x000| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x23.7 (32) +0x000| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x000| 00 | . | share: 0 0x5.1-0x5.3 (0.3) +0x000| 00 | . | scfsi0: 0 0x5.4-0x5.7 (0.4) +0x000| 08 | . | scfsi1: 0 0x6-0x6.3 (0.4) + | | | granules[0:2]: 0x6.4-0x23.7 (29.4) + | | | [0][0:2]: granule 0x6.4-0x15.1 (14.6) + | | | [0]{}: channel 0x6.4-0xd.6 (7.3) +0x000| 08 68 | .h | part2_3_length: 2152 0x6.4-0x7.7 (1.4) +0x000| 71 44 | qD | big_values: 226 0x8-0x9 (1.1) +0x000| 44 85 | D. | global_gain: 137 0x9.1-0xa (1) +0x000| 85 | . | scalefac_compress: 0 0xa.1-0xa.4 (0.4) +0x000| 85 | . | blocksplit_flag: 1 0xa.5-0xa.5 (0.1) +0x000| 85 | . | block_type: "start block" (1) 0xa.6-0xa.7 (0.2) +0x000| 77 | w | switch_point: 0 0xb-0xb (0.1) +0x000| 77 | w | table_select0: 29 0xb.1-0xb.5 (0.5) +0x000| 77 00 | w. | table_select1: 24 0xb.6-0xc.2 (0.5) +0x000| 00 | . | subblock_gain0: 0 0xc.3-0xc.5 (0.3) +0x000| 00 02 | .. | subblock_gain1: 0 0xc.6-0xd (0.3) +0x000| 02 | . | subblock_gain2: 0 0xd.1-0xd.3 (0.3) +0x000| 02 | . | preflag: 0 0xd.4-0xd.4 (0.1) +0x000| 02 | . | scalefac_scale: 0 0xd.5-0xd.5 (0.1) +0x000| 02 | . | count1table_select: 1 0xd.6-0xd.6 (0.1) + | | | [1]{}: channel 0xd.7-0x15.1 (7.3) +0x000| 02 00 00| ...| part2_3_length: 0 0xd.7-0xf.2 (1.4) +0x000| 00| .| big_values: 0 0xf.3-0x10.3 (1.1) +0x010|0d |. | +0x010|0d 20 |. | global_gain: 210 0x10.4-0x11.3 (1) +0x010| 20 | | scalefac_compress: 0 0x11.4-0x11.7 (0.4) +0x010| a0 | . | blocksplit_flag: 1 0x12-0x12 (0.1) +0x010| a0 | . | block_type: "start block" (1) 0x12.1-0x12.2 (0.2) +0x010| a0 | . | switch_point: 0 0x12.3-0x12.3 (0.1) +0x010| a0 00 | .. | table_select0: 0 0x12.4-0x13 (0.5) +0x010| 00 | . | table_select1: 0 0x13.1-0x13.5 (0.5) +0x010| 00 01 | .. | subblock_gain0: 0 0x13.6-0x14 (0.3) +0x010| 01 | . | subblock_gain1: 0 0x14.1-0x14.3 (0.3) +0x010| 01 | . | subblock_gain2: 0 0x14.4-0x14.6 (0.3) +0x010| 01 | . | preflag: 1 0x14.7-0x14.7 (0.1) +0x010| 3c | < | scalefac_scale: 0 0x15-0x15 (0.1) +0x010| 3c | < | count1table_select: 0 0x15.1-0x15.1 (0.1) + | | | [1][0:2]: granule 0x15.2-0x23.7 (14.6) + | | | [0]{}: channel 0x15.2-0x1c.4 (7.3) +0x010| 3c 2e | <. | part2_3_length: 3851 0x15.2-0x16.5 (1.4) +0x010| 2e 23 | .# | big_values: 273 0x16.6-0x17.6 (1.1) +0x010| 23 16 | #. | global_gain: 139 0x17.7-0x18.6 (1) +0x010| 16 19 | .. | scalefac_compress: 0 0x18.7-0x19.2 (0.4) +0x010| 19 | . | blocksplit_flag: 1 0x19.3-0x19.3 (0.1) +0x010| 19 | . | block_type: "3 short windows" (2) 0x19.4-0x19.5 (0.2) +0x010| 19 | . | switch_point: 0 0x19.6-0x19.6 (0.1) +0x010| 19 ee | .. | table_select0: 30 0x19.7-0x1a.3 (0.5) +0x010| ee 00 | .. | table_select1: 28 0x1a.4-0x1b (0.5) +0x010| 00 | . | subblock_gain0: 0 0x1b.1-0x1b.3 (0.3) +0x010| 00 | . | subblock_gain1: 0 0x1b.4-0x1b.6 (0.3) +0x010| 00 00 | .. | subblock_gain2: 0 0x1b.7-0x1c.1 (0.3) +0x010| 00 | . | preflag: 0 0x1c.2-0x1c.2 (0.1) +0x010| 00 | . | scalefac_scale: 0 0x1c.3-0x1c.3 (0.1) +0x010| 00 | . | count1table_select: 0 0x1c.4-0x1c.4 (0.1) + | | | [1]{}: channel 0x1c.5-0x23.7 (7.3) +0x010| 00 00 00 | ... | part2_3_length: 0 0x1c.5-0x1e (1.4) +0x010| 00 34| .4| big_values: 0 0x1e.1-0x1f.1 (1.1) +0x010| 34| 4| global_gain: 210 0x1f.2-0x20.1 (1) +0x020|83 |. | +0x020|83 |. | scalefac_compress: 0 0x20.2-0x20.5 (0.4) +0x020|83 |. | blocksplit_flag: 1 0x20.6-0x20.6 (0.1) +0x020|83 00 |.. | block_type: "3 short windows" (2) 0x20.7-0x21 (0.2) +0x020| 00 | . | switch_point: 0 0x21.1-0x21.1 (0.1) +0x020| 00 | . | table_select0: 0 0x21.2-0x21.6 (0.5) +0x020| 00 00 | .. | table_select1: 0 0x21.7-0x22.3 (0.5) +0x020| 00 | . | subblock_gain0: 0 0x22.4-0x22.6 (0.3) +0x020| 00 00 | .. | subblock_gain1: 0 0x22.7-0x23.1 (0.3) +0x020| 00 | . | subblock_gain2: 0 0x23.2-0x23.4 (0.3) +0x020| 00 | . | preflag: 0 0x23.5-0x23.5 (0.1) +0x020| 00 | . | scalefac_scale: 0 0x23.6-0x23.6 (0.1) +0x020| 00 | . | count1table_select: 0 0x23.7-0x23.7 (0.1) +0x020| 36 a5 9b 35 fd 51 34 4c b9 30 ec 62| 6..5.Q4L.0.b| audio_data: raw bits 0x24-0x3bf.7 (924) +0x030|33 b9 64 37 0a 06 38 aa 2e 38 31 c4 35 78 d8 32|3.d7..8..81.5x.2| +* |until 0x3bf.7 (end) (924) | | + | | | crc_calculated: "d503" (raw bits) 0x3c0-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-320000br-2ch-8000hz b/format/mpeg/testdata/mp3-frame-320000br-2ch-8000hz new file mode 100644 index 00000000..86db0dbe Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-320000br-2ch-8000hz differ diff --git a/format/mpeg/testdata/mp3-frame-320000br-2ch-8000hz.fqtest b/format/mpeg/testdata/mp3-frame-320000br-2ch-8000hz.fqtest new file mode 100644 index 00000000..9ac912cb --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-320000br-2ch-8000hz.fqtest @@ -0,0 +1,53 @@ +$ fq -d mp3_frame dv mp3-frame-320000br-2ch-8000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-320000br-2ch-8000hz (mp3_frame) 0x0-0x23f.7 (576) + | | | header{}: 0x0-0x3.7 (4) +0x000|ff e3 |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x000| e3 | . | mpeg_version: "2.5" (0) (MPEG Version 2.5) 0x1.3-0x1.4 (0.2) +0x000| e3 | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 576 0x1.7-NA (0) +0x000| e3 | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x000| 88 | . | bitrate: 64000 (8) 0x2-0x2.3 (0.4) +0x000| 88 | . | sample_rate: 8000 (2) 0x2.4-0x2.5 (0.2) +0x000| 88 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x000| 88 | . | private: 0 0x2.7-0x2.7 (0.1) +0x000| 64 | d | channels: "joint_stereo" (0b1) 0x3-0x3.1 (0.2) +0x000| 64 | d | channel_mode: "ms_stereo" (0b10) 0x3.2-0x3.3 (0.2) +0x000| 64 | d | copyright: 0 0x3.4-0x3.4 (0.1) +0x000| 64 | d | original: 1 0x3.5-0x3.5 (0.1) +0x000| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x14.7 (17) +0x000| 00 | . | main_data_begin: 0 0x4-0x4.7 (1) +0x000| 26 | & | private_bits: 0 0x5-0x5.1 (0.2) + | | | granules[0:1]: 0x5.2-0x14.7 (15.6) + | | | [0][0:2]: granule 0x5.2-0x14.7 (15.6) + | | | [0]{}: channel 0x5.2-0xd (7.7) +0x000| 26 76 | &v | part2_3_length: 2461 0x5.2-0x6.5 (1.4) +0x000| 76 37 | v7 | big_values: 283 0x6.6-0x7.6 (1.1) +0x000| 37 2a | 7* | global_gain: 149 0x7.7-0x8.6 (1) +0x000| 2a 01 | *. | scalefac_compress: 1 0x8.7-0x9.7 (1.1) +0x000| 63 | c | blocksplit_flag: 0 0xa-0xa (0.1) +0x000| 63 | c | table_select0: 24 0xa.1-0xa.5 (0.5) +0x000| 63 6c | cl | table_select1: 27 0xa.6-0xb.2 (0.5) +0x000| 6c | l | table_select2: 12 0xb.3-0xb.7 (0.5) +0x000| 38 | 8 | region_address1: 3 0xc-0xc.3 (0.4) +0x000| 38 | 8 | region_address2: 4 0xc.4-0xc.6 (0.3) +0x000| 38 | 8 | scalefac_scale: 0 0xc.7-0xc.7 (0.1) +0x000| 00 | . | count1table_select: 0 0xd-0xd (0.1) + | | | [1]{}: channel 0xd.1-0x14.7 (7.7) +0x000| 00 00 | .. | part2_3_length: 0 0xd.1-0xe.4 (1.4) +0x000| 00 03| ..| big_values: 0 0xe.5-0xf.5 (1.1) +0x000| 03| .| global_gain: 210 0xf.6-0x10.5 (1) +0x010|48 |H | +0x010|48 00 |H. | scalefac_compress: 0 0x10.6-0x11.6 (1.1) +0x010| 00 | . | blocksplit_flag: 0 0x11.7-0x11.7 (0.1) +0x010| 00 | . | table_select0: 0 0x12-0x12.4 (0.5) +0x010| 00 00 | .. | table_select1: 0 0x12.5-0x13.1 (0.5) +0x010| 00 | . | table_select2: 0 0x13.2-0x13.6 (0.5) +0x010| 00 00 | .. | region_address1: 0 0x13.7-0x14.2 (0.4) +0x010| 00 | . | region_address2: 0 0x14.3-0x14.5 (0.3) +0x010| 00 | . | scalefac_scale: 0 0x14.6-0x14.6 (0.1) +0x010| 00 | . | count1table_select: 0 0x14.7-0x14.7 (0.1) +0x010| 81 94 28 6e ef b2 b2 eb 98 46 63| ..(n.....Fc| audio_data: raw bits 0x15-0x23f.7 (555) +0x020|09 76 db 7a ef 01 6e 0c 44 33 08 b7 8f 65 b6 90|.v.z..n.D3...e..| +* |until 0x23f.7 (end) (555) | | + | | | crc_calculated: "eae8" (raw bits) 0x240-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-8000br-1ch-44100hz b/format/mpeg/testdata/mp3-frame-8000br-1ch-44100hz new file mode 100644 index 00000000..7d0d8eb9 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-8000br-1ch-44100hz differ diff --git a/format/mpeg/testdata/mp3-frame-mono.fqtest b/format/mpeg/testdata/mp3-frame-8000br-1ch-44100hz.fqtest similarity index 53% rename from format/mpeg/testdata/mp3-frame-mono.fqtest rename to format/mpeg/testdata/mp3-frame-8000br-1ch-44100hz.fqtest index dd997d0e..7df2c94d 100644 --- a/format/mpeg/testdata/mp3-frame-mono.fqtest +++ b/format/mpeg/testdata/mp3-frame-8000br-1ch-44100hz.fqtest @@ -1,63 +1,61 @@ -# ffmpeg -y -f lavfi -i sine -ac 1 -t 10ms -f mp3 file && fq file '.frame[1] | tobits' > mp3-frame-mono -$ fq -d mp3_frame dv mp3-frame-mono - |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-mono (mp3_frame) 0x0-0xcf.7 (208) +$ fq -d mp3_frame dv mp3-frame-8000br-1ch-44100hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-8000br-1ch-44100hz (mp3_frame) 0x0-0x67.7 (104) | | | header{}: 0x0-0x3.7 (4) 0x00|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) 0x00| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) 0x00| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) | | | sample_count: 1152 0x1.7-NA (0) 0x00| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) -0x00| 50 | P | bitrate: 64000 (5) 0x2-0x2.3 (0.4) -0x00| 50 | P | sample_rate: 44100 (0) 0x2.4-0x2.5 (0.2) -0x00| 50 | P | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) -0x00| 50 | P | private: 0 0x2.7-0x2.7 (0.1) +0x00| 10 | . | bitrate: 32000 (1) 0x2-0x2.3 (0.4) +0x00| 10 | . | sample_rate: 44100 (0) 0x2.4-0x2.5 (0.2) +0x00| 10 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x00| 10 | . | private: 0 0x2.7-0x2.7 (0.1) 0x00| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) 0x00| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) 0x00| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) 0x00| c4 | . | original: 1 0x3.5-0x3.5 (0.1) 0x00| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) | | | side_info{}: 0x4-0x14.7 (17) -0x00| 00 00 | .. | main_data_end: 0 0x4-0x5 (1.1) -0x00| 00 | . | private_bits: 0 0x5.1-0x5.5 (0.5) -0x00| 00 0a | .. | share0: 0 0x5.6-0x6.1 (0.4) +0x00| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x00| 00 | . | share: 0 0x5.1-0x5.5 (0.5) +0x00| 00 04 | .. | scfsi0: 0 0x5.6-0x6.1 (0.4) | | | granules[0:2]: 0x6.2-0x14.7 (14.6) | | | [0][0:1]: granule 0x6.2-0xd.4 (7.3) | | | [0]{}: channel 0x6.2-0xd.4 (7.3) -0x00| 0a 2c | ., | part2_3_length: 651 0x6.2-0x7.5 (1.4) -0x00| 2c 43 | ,C | big_values: 33 0x7.6-0x8.6 (1.1) -0x00| 43 2e | C. | global_gain: 151 0x8.7-0x9.6 (1) -0x00| 2e 55 | .U | scalefac_compress: 2 0x9.7-0xa.2 (0.4) -0x00| 55 | U | blocksplit_flag: 1 0xa.3-0xa.3 (0.1) -0x00| 55 | U | block_type: "start block" (1) 0xa.4-0xa.5 (0.2) -0x00| 55 | U | switch_point: 0 0xa.6-0xa.6 (0.1) -0x00| 55 94 | U. | table_select0: 25 0xa.7-0xb.3 (0.5) -0x00| 94 80 | .. | table_select1: 9 0xb.4-0xc (0.5) +0x00| 04 80 | .. | part2_3_length: 288 0x6.2-0x7.5 (1.4) +0x00| 80 25 | .% | big_values: 18 0x7.6-0x8.6 (1.1) +0x00| 25 3c | %< | global_gain: 158 0x8.7-0x9.6 (1) +0x00| 3c 35 | <5 | scalefac_compress: 1 0x9.7-0xa.2 (0.4) +0x00| 35 | 5 | blocksplit_flag: 1 0xa.3-0xa.3 (0.1) +0x00| 35 | 5 | block_type: "start block" (1) 0xa.4-0xa.5 (0.2) +0x00| 35 | 5 | switch_point: 0 0xa.6-0xa.6 (0.1) +0x00| 35 80 | 5. | table_select0: 24 0xa.7-0xb.3 (0.5) +0x00| 80 80 | .. | table_select1: 1 0xb.4-0xc (0.5) 0x00| 80 | . | subblock_gain0: 0 0xc.1-0xc.3 (0.3) 0x00| 80 | . | subblock_gain1: 0 0xc.4-0xc.6 (0.3) -0x00| 80 01 | .. | subblock_gain2: 0 0xc.7-0xd.1 (0.3) -0x00| 01 | . | preflag: 0 0xd.2-0xd.2 (0.1) -0x00| 01 | . | scalefac_scale: 0 0xd.3-0xd.3 (0.1) -0x00| 01 | . | count1table_select: 0 0xd.4-0xd.4 (0.1) +0x00| 80 18 | .. | subblock_gain2: 0 0xc.7-0xd.1 (0.3) +0x00| 18 | . | preflag: 0 0xd.2-0xd.2 (0.1) +0x00| 18 | . | scalefac_scale: 1 0xd.3-0xd.3 (0.1) +0x00| 18 | . | count1table_select: 1 0xd.4-0xd.4 (0.1) | | | [1][0:1]: granule 0xd.5-0x14.7 (7.3) | | | [0]{}: channel 0xd.5-0x14.7 (7.3) -0x00| 01 80 93| ...| part2_3_length: 769 0xd.5-0xf (1.4) -0x00| 93| .| big_values: 77 0xf.1-0x10.1 (1.1) -0x10|6b |k | -0x10|6b 27 |k' | global_gain: 172 0x10.2-0x11.1 (1) -0x10| 27 | ' | scalefac_compress: 9 0x11.2-0x11.5 (0.4) -0x10| 27 | ' | blocksplit_flag: 1 0x11.6-0x11.6 (0.1) -0x10| 27 30 | '0 | block_type: "3 short windows" (2) 0x11.7-0x12 (0.2) -0x10| 30 | 0 | switch_point: 0 0x12.1-0x12.1 (0.1) -0x10| 30 | 0 | table_select0: 24 0x12.2-0x12.6 (0.5) -0x10| 30 80 | 0. | table_select1: 8 0x12.7-0x13.3 (0.5) +0x00| 18 aa 8b| ...| part2_3_length: 341 0xd.5-0xf (1.4) +0x00| 8b| .| big_values: 45 0xf.1-0x10.1 (1.1) +0x10|69 |i | +0x10|69 c3 |i. | global_gain: 167 0x10.2-0x11.1 (1) +0x10| c3 | . | scalefac_compress: 0 0x11.2-0x11.5 (0.4) +0x10| c3 | . | blocksplit_flag: 1 0x11.6-0x11.6 (0.1) +0x10| c3 34 | .4 | block_type: "3 short windows" (2) 0x11.7-0x12 (0.2) +0x10| 34 | 4 | switch_point: 0 0x12.1-0x12.1 (0.1) +0x10| 34 | 4 | table_select0: 26 0x12.2-0x12.6 (0.5) +0x10| 34 80 | 4. | table_select1: 8 0x12.7-0x13.3 (0.5) 0x10| 80 | . | subblock_gain0: 0 0x13.4-0x13.6 (0.3) 0x10| 80 00 | .. | subblock_gain1: 0 0x13.7-0x14.1 (0.3) 0x10| 00 | . | subblock_gain2: 0 0x14.2-0x14.4 (0.3) 0x10| 00 | . | preflag: 0 0x14.5-0x14.5 (0.1) 0x10| 00 | . | scalefac_scale: 0 0x14.6-0x14.6 (0.1) 0x10| 00 | . | count1table_select: 0 0x14.7-0x14.7 (0.1) -0x10| 07 aa c3 8e 33 85 d3 64 f1 a1 c1| ....3..d...| data: raw bits 0x15-0xcf.7 (187) -0x20|08 1c 58 1f 5e 1f 18 1c 46 04 1e 89 e5 b3 2e 5a|..X.^...F......Z| -* |until 0xcf.7 (end) (187) | | - | | | other_data: raw bits 0xd0-NA (0) - | | | crc_calculated: "e5b0" (raw bits) 0xd0-NA (0) +0x10| 40 0b 4e 5c b4 53 79 d6 80 10 46| @.N\.Sy...F| audio_data: raw bits 0x15-0x67.7 (83) +0x20|63 19 84 5f 06 9e ff b9 6e 5b ff 0f c6 e9 ed 80|c.._....n[......| +* |until 0x67.7 (end) (83) | | + | | | crc_calculated: "b723" (raw bits) 0x68-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-8000br-1ch-48000hz b/format/mpeg/testdata/mp3-frame-8000br-1ch-48000hz new file mode 100644 index 00000000..7145deb0 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-8000br-1ch-48000hz differ diff --git a/format/mpeg/testdata/mp3-frame-8000br-1ch-48000hz.fqtest b/format/mpeg/testdata/mp3-frame-8000br-1ch-48000hz.fqtest new file mode 100644 index 00000000..41d97cfc --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-8000br-1ch-48000hz.fqtest @@ -0,0 +1,61 @@ +$ fq -d mp3_frame dv mp3-frame-8000br-1ch-48000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-8000br-1ch-48000hz (mp3_frame) 0x0-0x5f.7 (96) + | | | header{}: 0x0-0x3.7 (4) +0x00|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x00| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x00| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x00| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x00| 14 | . | bitrate: 32000 (1) 0x2-0x2.3 (0.4) +0x00| 14 | . | sample_rate: 48000 (1) 0x2.4-0x2.5 (0.2) +0x00| 14 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x00| 14 | . | private: 0 0x2.7-0x2.7 (0.1) +0x00| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x00| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x00| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x00| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x00| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x14.7 (17) +0x00| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x00| 00 | . | share: 0 0x5.1-0x5.5 (0.5) +0x00| 00 04 | .. | scfsi0: 0 0x5.6-0x6.1 (0.4) + | | | granules[0:2]: 0x6.2-0x14.7 (14.6) + | | | [0][0:1]: granule 0x6.2-0xd.4 (7.3) + | | | [0]{}: channel 0x6.2-0xd.4 (7.3) +0x00| 04 14 | .. | part2_3_length: 261 0x6.2-0x7.5 (1.4) +0x00| 14 2f | ./ | big_values: 23 0x7.6-0x8.6 (1.1) +0x00| 2f 3a | /: | global_gain: 157 0x8.7-0x9.6 (1) +0x00| 3a 15 | :. | scalefac_compress: 0 0x9.7-0xa.2 (0.4) +0x00| 15 | . | blocksplit_flag: 1 0xa.3-0xa.3 (0.1) +0x00| 15 | . | block_type: "start block" (1) 0xa.4-0xa.5 (0.2) +0x00| 15 | . | switch_point: 0 0xa.6-0xa.6 (0.1) +0x00| 15 81 | .. | table_select0: 24 0xa.7-0xb.3 (0.5) +0x00| 81 80 | .. | table_select1: 3 0xb.4-0xc (0.5) +0x00| 80 | . | subblock_gain0: 0 0xc.1-0xc.3 (0.3) +0x00| 80 | . | subblock_gain1: 0 0xc.4-0xc.6 (0.3) +0x00| 80 08 | .. | subblock_gain2: 0 0xc.7-0xd.1 (0.3) +0x00| 08 | . | preflag: 0 0xd.2-0xd.2 (0.1) +0x00| 08 | . | scalefac_scale: 0 0xd.3-0xd.3 (0.1) +0x00| 08 | . | count1table_select: 1 0xd.4-0xd.4 (0.1) + | | | [1][0:1]: granule 0xd.5-0x14.7 (7.3) + | | | [0]{}: channel 0xd.5-0x14.7 (7.3) +0x00| 08 96 8a| ...| part2_3_length: 301 0xd.5-0xf (1.4) +0x00| 8a| .| big_values: 40 0xf.1-0x10.1 (1.1) +0x10|2d |- | +0x10|2d 13 |-. | global_gain: 180 0x10.2-0x11.1 (1) +0x10| 13 | . | scalefac_compress: 4 0x11.2-0x11.5 (0.4) +0x10| 13 | . | blocksplit_flag: 1 0x11.6-0x11.6 (0.1) +0x10| 13 1e | .. | block_type: "3 short windows" (2) 0x11.7-0x12 (0.2) +0x10| 1e | . | switch_point: 0 0x12.1-0x12.1 (0.1) +0x10| 1e | . | table_select0: 15 0x12.2-0x12.6 (0.5) +0x10| 1e 90 | .. | table_select1: 9 0x12.7-0x13.3 (0.5) +0x10| 90 | . | subblock_gain0: 0 0x13.4-0x13.6 (0.3) +0x10| 90 00 | .. | subblock_gain1: 0 0x13.7-0x14.1 (0.3) +0x10| 00 | . | subblock_gain2: 0 0x14.2-0x14.4 (0.3) +0x10| 00 | . | preflag: 0 0x14.5-0x14.5 (0.1) +0x10| 00 | . | scalefac_scale: 0 0x14.6-0x14.6 (0.1) +0x10| 00 | . | count1table_select: 0 0x14.7-0x14.7 (0.1) +0x10| 31 8c 0c 34 7f 7d 8b 70 64 51 b1| 1..4.}.pdQ.| audio_data: raw bits 0x15-0x5f.7 (75) +0x20|86 a2 17 41 d7 95 bb 6e 5b ff 0f c6 e9 ed a2 20|...A...n[...... | +* |until 0x5f.7 (end) (75) | | + | | | crc_calculated: "19b9" (raw bits) 0x60-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-8000br-1ch-8000hz b/format/mpeg/testdata/mp3-frame-8000br-1ch-8000hz new file mode 100644 index 00000000..5a02cd2f Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-8000br-1ch-8000hz differ diff --git a/format/mpeg/testdata/mp3-frame-8000br-1ch-8000hz.fqtest b/format/mpeg/testdata/mp3-frame-8000br-1ch-8000hz.fqtest new file mode 100644 index 00000000..c390e449 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-8000br-1ch-8000hz.fqtest @@ -0,0 +1,39 @@ +$ fq -d mp3_frame dv mp3-frame-8000br-1ch-8000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-8000br-1ch-8000hz (mp3_frame) 0x0-0x47.7 (72) + | | | header{}: 0x0-0x3.7 (4) +0x00|ff e3 |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x00| e3 | . | mpeg_version: "2.5" (0) (MPEG Version 2.5) 0x1.3-0x1.4 (0.2) +0x00| e3 | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 576 0x1.7-NA (0) +0x00| e3 | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x00| 18 | . | bitrate: 8000 (1) 0x2-0x2.3 (0.4) +0x00| 18 | . | sample_rate: 8000 (2) 0x2.4-0x2.5 (0.2) +0x00| 18 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x00| 18 | . | private: 0 0x2.7-0x2.7 (0.1) +0x00| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x00| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x00| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x00| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x00| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0xc.7 (9) +0x00| 00 | . | main_data_begin: 0 0x4-0x4.7 (1) +0x00| 0c | . | private_bits: 0 0x5-0x5 (0.1) + | | | granules[0:1]: 0x5.1-0xc.7 (7.7) + | | | [0][0:1]: granule 0x5.1-0xc.7 (7.7) + | | | [0]{}: channel 0x5.1-0xc.7 (7.7) +0x00| 0c 90 | .. | part2_3_length: 402 0x5.1-0x6.4 (1.4) +0x00| 90 8e | .. | big_values: 35 0x6.5-0x7.5 (1.1) +0x00| 8e c1 | .. | global_gain: 176 0x7.6-0x8.5 (1) +0x00| c1 b8 | .. | scalefac_compress: 220 0x8.6-0x9.6 (1.1) +0x00| b8 | . | blocksplit_flag: 0 0x9.7-0x9.7 (0.1) +0x00| 08 | . | table_select0: 1 0xa-0xa.4 (0.5) +0x00| 08 4c | .L | table_select1: 1 0xa.5-0xb.1 (0.5) +0x00| 4c | L | table_select2: 6 0xb.2-0xb.6 (0.5) +0x00| 4c 0c | L. | region_address1: 0 0xb.7-0xc.2 (0.4) +0x00| 0c | . | region_address2: 3 0xc.3-0xc.5 (0.3) +0x00| 0c | . | scalefac_scale: 0 0xc.6-0xc.6 (0.1) +0x00| 0c | . | count1table_select: 0 0xc.7-0xc.7 (0.1) +0x00| 64 00 9d| d..| audio_data: raw bits 0xd-0x47.7 (59) +0x10|db fe 1f 98 df 20 03 e6 3f 31 81 19 e4 c0 64 d3|..... ..?1....d.| +* |until 0x47.7 (end) (59) | | + | | | crc_calculated: "8213" (raw bits) 0x48-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-8000br-2ch-44100hz b/format/mpeg/testdata/mp3-frame-8000br-2ch-44100hz new file mode 100644 index 00000000..30b99e5c Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-8000br-2ch-44100hz differ diff --git a/format/mpeg/testdata/mp3-frame-8000br-2ch-44100hz.fqtest b/format/mpeg/testdata/mp3-frame-8000br-2ch-44100hz.fqtest new file mode 100644 index 00000000..a803ebd7 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-8000br-2ch-44100hz.fqtest @@ -0,0 +1,95 @@ +$ fq -d mp3_frame dv mp3-frame-8000br-2ch-44100hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-8000br-2ch-44100hz (mp3_frame) 0x0-0x67.7 (104) + | | | header{}: 0x0-0x3.7 (4) +0x00|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x00| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x00| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x00| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x00| 10 | . | bitrate: 32000 (1) 0x2-0x2.3 (0.4) +0x00| 10 | . | sample_rate: 44100 (0) 0x2.4-0x2.5 (0.2) +0x00| 10 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x00| 10 | . | private: 0 0x2.7-0x2.7 (0.1) +0x00| 64 | d | channels: "joint_stereo" (0b1) 0x3-0x3.1 (0.2) +0x00| 64 | d | channel_mode: "ms_stereo" (0b10) 0x3.2-0x3.3 (0.2) +0x00| 64 | d | copyright: 0 0x3.4-0x3.4 (0.1) +0x00| 64 | d | original: 1 0x3.5-0x3.5 (0.1) +0x00| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x23.7 (32) +0x00| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x00| 00 | . | share: 0 0x5.1-0x5.3 (0.3) +0x00| 00 | . | scfsi0: 0 0x5.4-0x5.7 (0.4) +0x00| 00 | . | scfsi1: 0 0x6-0x6.3 (0.4) + | | | granules[0:2]: 0x6.4-0x23.7 (29.4) + | | | [0][0:2]: granule 0x6.4-0x15.1 (14.6) + | | | [0]{}: channel 0x6.4-0xd.6 (7.3) +0x00| 00 76 | .v | part2_3_length: 118 0x6.4-0x7.7 (1.4) +0x00| 04 d8 | .. | big_values: 9 0x8-0x9 (1.1) +0x00| d8 25 | .% | global_gain: 176 0x9.1-0xa (1) +0x00| 25 | % | scalefac_compress: 4 0xa.1-0xa.4 (0.4) +0x00| 25 | % | blocksplit_flag: 1 0xa.5-0xa.5 (0.1) +0x00| 25 | % | block_type: "start block" (1) 0xa.6-0xa.7 (0.2) +0x00| 0c | . | switch_point: 0 0xb-0xb (0.1) +0x00| 0c | . | table_select0: 3 0xb.1-0xb.5 (0.5) +0x00| 0c 00 | .. | table_select1: 0 0xb.6-0xc.2 (0.5) +0x00| 00 | . | subblock_gain0: 0 0xc.3-0xc.5 (0.3) +0x00| 00 0a | .. | subblock_gain1: 0 0xc.6-0xd (0.3) +0x00| 0a | . | subblock_gain2: 0 0xd.1-0xd.3 (0.3) +0x00| 0a | . | preflag: 1 0xd.4-0xd.4 (0.1) +0x00| 0a | . | scalefac_scale: 0 0xd.5-0xd.5 (0.1) +0x00| 0a | . | count1table_select: 1 0xd.6-0xd.6 (0.1) + | | | [1]{}: channel 0xd.7-0x15.1 (7.3) +0x00| 0a 00 00| ...| part2_3_length: 0 0xd.7-0xf.2 (1.4) +0x00| 00| .| big_values: 0 0xf.3-0x10.3 (1.1) +0x10|0d |. | +0x10|0d 20 |. | global_gain: 210 0x10.4-0x11.3 (1) +0x10| 20 | | scalefac_compress: 0 0x11.4-0x11.7 (0.4) +0x10| a0 | . | blocksplit_flag: 1 0x12-0x12 (0.1) +0x10| a0 | . | block_type: "start block" (1) 0x12.1-0x12.2 (0.2) +0x10| a0 | . | switch_point: 0 0x12.3-0x12.3 (0.1) +0x10| a0 00 | .. | table_select0: 0 0x12.4-0x13 (0.5) +0x10| 00 | . | table_select1: 0 0x13.1-0x13.5 (0.5) +0x10| 00 01 | .. | subblock_gain0: 0 0x13.6-0x14 (0.3) +0x10| 01 | . | subblock_gain1: 0 0x14.1-0x14.3 (0.3) +0x10| 01 | . | subblock_gain2: 0 0x14.4-0x14.6 (0.3) +0x10| 01 | . | preflag: 1 0x14.7-0x14.7 (0.1) +0x10| 04 | . | scalefac_scale: 0 0x15-0x15 (0.1) +0x10| 04 | . | count1table_select: 0 0x15.1-0x15.1 (0.1) + | | | [1][0:2]: granule 0x15.2-0x23.7 (14.6) + | | | [0]{}: channel 0x15.2-0x1c.4 (7.3) +0x10| 04 30 | .0 | part2_3_length: 268 0x15.2-0x16.5 (1.4) +0x10| 30 3f | 0? | big_values: 31 0x16.6-0x17.6 (1.1) +0x10| 3f 66 | ?f | global_gain: 179 0x17.7-0x18.6 (1) +0x10| 66 98 | f. | scalefac_compress: 4 0x18.7-0x19.2 (0.4) +0x10| 98 | . | blocksplit_flag: 1 0x19.3-0x19.3 (0.1) +0x10| 98 | . | block_type: "3 short windows" (2) 0x19.4-0x19.5 (0.2) +0x10| 98 | . | switch_point: 0 0x19.6-0x19.6 (0.1) +0x10| 98 f4 | .. | table_select0: 15 0x19.7-0x1a.3 (0.5) +0x10| f4 00 | .. | table_select1: 8 0x1a.4-0x1b (0.5) +0x10| 00 | . | subblock_gain0: 0 0x1b.1-0x1b.3 (0.3) +0x10| 00 | . | subblock_gain1: 0 0x1b.4-0x1b.6 (0.3) +0x10| 00 00 | .. | subblock_gain2: 0 0x1b.7-0x1c.1 (0.3) +0x10| 00 | . | preflag: 0 0x1c.2-0x1c.2 (0.1) +0x10| 00 | . | scalefac_scale: 0 0x1c.3-0x1c.3 (0.1) +0x10| 00 | . | count1table_select: 0 0x1c.4-0x1c.4 (0.1) + | | | [1]{}: channel 0x1c.5-0x23.7 (7.3) +0x10| 00 00 00 | ... | part2_3_length: 0 0x1c.5-0x1e (1.4) +0x10| 00 34| .4| big_values: 0 0x1e.1-0x1f.1 (1.1) +0x10| 34| 4| global_gain: 210 0x1f.2-0x20.1 (1) +0x20|83 |. | +0x20|83 |. | scalefac_compress: 0 0x20.2-0x20.5 (0.4) +0x20|83 |. | blocksplit_flag: 1 0x20.6-0x20.6 (0.1) +0x20|83 00 |.. | block_type: "3 short windows" (2) 0x20.7-0x21 (0.2) +0x20| 00 | . | switch_point: 0 0x21.1-0x21.1 (0.1) +0x20| 00 | . | table_select0: 0 0x21.2-0x21.6 (0.5) +0x20| 00 00 | .. | table_select1: 0 0x21.7-0x22.3 (0.5) +0x20| 00 | . | subblock_gain0: 0 0x22.4-0x22.6 (0.3) +0x20| 00 00 | .. | subblock_gain1: 0 0x22.7-0x23.1 (0.3) +0x20| 00 | . | subblock_gain2: 0 0x23.2-0x23.4 (0.3) +0x20| 00 | . | preflag: 0 0x23.5-0x23.5 (0.1) +0x20| 00 | . | scalefac_scale: 0 0x23.6-0x23.6 (0.1) +0x20| 00 | . | count1table_select: 0 0x23.7-0x23.7 (0.1) +0x20| 00 00 53 d8 3b b9 c4 00 10 8f 0f 3d| ..S.;......=| audio_data: raw bits 0x24-0x67.7 (68) +0x30|fa c0 00 00 00 ff ff e0 e0 08 42 0d 42 04 f9 b4|..........B.B...| +* |until 0x67.7 (end) (68) | | + | | | crc_calculated: "b123" (raw bits) 0x68-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-8000br-2ch-48000hz b/format/mpeg/testdata/mp3-frame-8000br-2ch-48000hz new file mode 100644 index 00000000..44b4f377 Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-8000br-2ch-48000hz differ diff --git a/format/mpeg/testdata/mp3-frame-8000br-2ch-48000hz.fqtest b/format/mpeg/testdata/mp3-frame-8000br-2ch-48000hz.fqtest new file mode 100644 index 00000000..cab7345a --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-8000br-2ch-48000hz.fqtest @@ -0,0 +1,95 @@ +$ fq -d mp3_frame dv mp3-frame-8000br-2ch-48000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-8000br-2ch-48000hz (mp3_frame) 0x0-0x5f.7 (96) + | | | header{}: 0x0-0x3.7 (4) +0x00|ff fb |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x00| fb | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x00| fb | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x00| fb | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x00| 14 | . | bitrate: 32000 (1) 0x2-0x2.3 (0.4) +0x00| 14 | . | sample_rate: 48000 (1) 0x2.4-0x2.5 (0.2) +0x00| 14 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x00| 14 | . | private: 0 0x2.7-0x2.7 (0.1) +0x00| 64 | d | channels: "joint_stereo" (0b1) 0x3-0x3.1 (0.2) +0x00| 64 | d | channel_mode: "ms_stereo" (0b10) 0x3.2-0x3.3 (0.2) +0x00| 64 | d | copyright: 0 0x3.4-0x3.4 (0.1) +0x00| 64 | d | original: 1 0x3.5-0x3.5 (0.1) +0x00| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x23.7 (32) +0x00| 00 00 | .. | main_data_begin: 0 0x4-0x5 (1.1) +0x00| 00 | . | share: 0 0x5.1-0x5.3 (0.3) +0x00| 00 | . | scfsi0: 0 0x5.4-0x5.7 (0.4) +0x00| 00 | . | scfsi1: 0 0x6-0x6.3 (0.4) + | | | granules[0:2]: 0x6.4-0x23.7 (29.4) + | | | [0][0:2]: granule 0x6.4-0x15.1 (14.6) + | | | [0]{}: channel 0x6.4-0xd.6 (7.3) +0x00| 00 67 | .g | part2_3_length: 103 0x6.4-0x7.7 (1.4) +0x00| 00 d9 | .. | big_values: 1 0x8-0x9 (1.1) +0x00| d9 25 | .% | global_gain: 178 0x9.1-0xa (1) +0x00| 25 | % | scalefac_compress: 4 0xa.1-0xa.4 (0.4) +0x00| 25 | % | blocksplit_flag: 1 0xa.5-0xa.5 (0.1) +0x00| 25 | % | block_type: "start block" (1) 0xa.6-0xa.7 (0.2) +0x00| 04 | . | switch_point: 0 0xb-0xb (0.1) +0x00| 04 | . | table_select0: 1 0xb.1-0xb.5 (0.5) +0x00| 04 00 | .. | table_select1: 0 0xb.6-0xc.2 (0.5) +0x00| 00 | . | subblock_gain0: 0 0xc.3-0xc.5 (0.3) +0x00| 00 0a | .. | subblock_gain1: 0 0xc.6-0xd (0.3) +0x00| 0a | . | subblock_gain2: 0 0xd.1-0xd.3 (0.3) +0x00| 0a | . | preflag: 1 0xd.4-0xd.4 (0.1) +0x00| 0a | . | scalefac_scale: 0 0xd.5-0xd.5 (0.1) +0x00| 0a | . | count1table_select: 1 0xd.6-0xd.6 (0.1) + | | | [1]{}: channel 0xd.7-0x15.1 (7.3) +0x00| 0a 00 00| ...| part2_3_length: 0 0xd.7-0xf.2 (1.4) +0x00| 00| .| big_values: 0 0xf.3-0x10.3 (1.1) +0x10|0d |. | +0x10|0d 20 |. | global_gain: 210 0x10.4-0x11.3 (1) +0x10| 20 | | scalefac_compress: 0 0x11.4-0x11.7 (0.4) +0x10| a0 | . | blocksplit_flag: 1 0x12-0x12 (0.1) +0x10| a0 | . | block_type: "start block" (1) 0x12.1-0x12.2 (0.2) +0x10| a0 | . | switch_point: 0 0x12.3-0x12.3 (0.1) +0x10| a0 00 | .. | table_select0: 0 0x12.4-0x13 (0.5) +0x10| 00 | . | table_select1: 0 0x13.1-0x13.5 (0.5) +0x10| 00 01 | .. | subblock_gain0: 0 0x13.6-0x14 (0.3) +0x10| 01 | . | subblock_gain1: 0 0x14.1-0x14.3 (0.3) +0x10| 01 | . | subblock_gain2: 0 0x14.4-0x14.6 (0.3) +0x10| 01 | . | preflag: 1 0x14.7-0x14.7 (0.1) +0x10| 03 | . | scalefac_scale: 0 0x15-0x15 (0.1) +0x10| 03 | . | count1table_select: 0 0x15.1-0x15.1 (0.1) + | | | [1][0:2]: granule 0x15.2-0x23.7 (14.6) + | | | [0]{}: channel 0x15.2-0x1c.4 (7.3) +0x10| 03 b4 | .. | part2_3_length: 237 0x15.2-0x16.5 (1.4) +0x10| b4 3f | .? | big_values: 31 0x16.6-0x17.6 (1.1) +0x10| 3f 52 | ?R | global_gain: 169 0x17.7-0x18.6 (1) +0x10| 52 19 | R. | scalefac_compress: 0 0x18.7-0x19.2 (0.4) +0x10| 19 | . | blocksplit_flag: 1 0x19.3-0x19.3 (0.1) +0x10| 19 | . | block_type: "3 short windows" (2) 0x19.4-0x19.5 (0.2) +0x10| 19 | . | switch_point: 0 0x19.6-0x19.6 (0.1) +0x10| 19 92 | .. | table_select0: 25 0x19.7-0x1a.3 (0.5) +0x10| 92 80 | .. | table_select1: 5 0x1a.4-0x1b (0.5) +0x10| 80 | . | subblock_gain0: 0 0x1b.1-0x1b.3 (0.3) +0x10| 80 | . | subblock_gain1: 0 0x1b.4-0x1b.6 (0.3) +0x10| 80 00 | .. | subblock_gain2: 0 0x1b.7-0x1c.1 (0.3) +0x10| 00 | . | preflag: 0 0x1c.2-0x1c.2 (0.1) +0x10| 00 | . | scalefac_scale: 0 0x1c.3-0x1c.3 (0.1) +0x10| 00 | . | count1table_select: 0 0x1c.4-0x1c.4 (0.1) + | | | [1]{}: channel 0x1c.5-0x23.7 (7.3) +0x10| 00 00 00 | ... | part2_3_length: 0 0x1c.5-0x1e (1.4) +0x10| 00 34| .4| big_values: 0 0x1e.1-0x1f.1 (1.1) +0x10| 34| 4| global_gain: 210 0x1f.2-0x20.1 (1) +0x20|83 |. | +0x20|83 |. | scalefac_compress: 0 0x20.2-0x20.5 (0.4) +0x20|83 |. | blocksplit_flag: 1 0x20.6-0x20.6 (0.1) +0x20|83 00 |.. | block_type: "3 short windows" (2) 0x20.7-0x21 (0.2) +0x20| 00 | . | switch_point: 0 0x21.1-0x21.1 (0.1) +0x20| 00 | . | table_select0: 0 0x21.2-0x21.6 (0.5) +0x20| 00 00 | .. | table_select1: 0 0x21.7-0x22.3 (0.5) +0x20| 00 | . | subblock_gain0: 0 0x22.4-0x22.6 (0.3) +0x20| 00 00 | .. | subblock_gain1: 0 0x22.7-0x23.1 (0.3) +0x20| 00 | . | subblock_gain2: 0 0x23.2-0x23.4 (0.3) +0x20| 00 | . | preflag: 0 0x23.5-0x23.5 (0.1) +0x20| 00 | . | scalefac_scale: 0 0x23.6-0x23.6 (0.1) +0x20| 00 | . | count1table_select: 0 0x23.7-0x23.7 (0.1) +0x20| 00 00 d8 fc 0c 7e 00 02 3e 3b ff 5c| .....~..>;.\| audio_data: raw bits 0x24-0x5f.7 (60) +0x30|10 be 8c 39 9f 53 16 f5 76 6a 2a 2d 2c d1 11 bd|...9.S..vj*-,...| +* |until 0x5f.7 (end) (60) | | + | | | crc_calculated: "d083" (raw bits) 0x60-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-8000br-2ch-8000hz b/format/mpeg/testdata/mp3-frame-8000br-2ch-8000hz new file mode 100644 index 00000000..a70f75da Binary files /dev/null and b/format/mpeg/testdata/mp3-frame-8000br-2ch-8000hz differ diff --git a/format/mpeg/testdata/mp3-frame-8000br-2ch-8000hz.fqtest b/format/mpeg/testdata/mp3-frame-8000br-2ch-8000hz.fqtest new file mode 100644 index 00000000..24814945 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame-8000br-2ch-8000hz.fqtest @@ -0,0 +1,53 @@ +$ fq -d mp3_frame dv mp3-frame-8000br-2ch-8000hz + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-8000br-2ch-8000hz (mp3_frame) 0x0-0x47.7 (72) + | | | header{}: 0x0-0x3.7 (4) +0x00|ff e3 |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x00| e3 | . | mpeg_version: "2.5" (0) (MPEG Version 2.5) 0x1.3-0x1.4 (0.2) +0x00| e3 | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 576 0x1.7-NA (0) +0x00| e3 | . | protection_absent: true (No CRC) 0x1.7-0x1.7 (0.1) +0x00| 18 | . | bitrate: 8000 (1) 0x2-0x2.3 (0.4) +0x00| 18 | . | sample_rate: 8000 (2) 0x2.4-0x2.5 (0.2) +0x00| 18 | . | padding: "not_padded" (0b0) 0x2.6-0x2.6 (0.1) +0x00| 18 | . | private: 0 0x2.7-0x2.7 (0.1) +0x00| 64 | d | channels: "joint_stereo" (0b1) 0x3-0x3.1 (0.2) +0x00| 64 | d | channel_mode: "ms_stereo" (0b10) 0x3.2-0x3.3 (0.2) +0x00| 64 | d | copyright: 0 0x3.4-0x3.4 (0.1) +0x00| 64 | d | original: 1 0x3.5-0x3.5 (0.1) +0x00| 64 | d | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) + | | | side_info{}: 0x4-0x14.7 (17) +0x00| 00 | . | main_data_begin: 0 0x4-0x4.7 (1) +0x00| 03 | . | private_bits: 0 0x5-0x5.1 (0.2) + | | | granules[0:1]: 0x5.2-0x14.7 (15.6) + | | | [0][0:2]: granule 0x5.2-0x14.7 (15.6) + | | | [0]{}: channel 0x5.2-0xd (7.7) +0x00| 03 ac | .. | part2_3_length: 235 0x5.2-0x6.5 (1.4) +0x00| ac 01 | .. | big_values: 0 0x6.6-0x7.6 (1.1) +0x00| 01 79 | .y | global_gain: 188 0x7.7-0x8.6 (1) +0x00| 79 2c | y, | scalefac_compress: 300 0x8.7-0x9.7 (1.1) +0x00| 04 | . | blocksplit_flag: 0 0xa-0xa (0.1) +0x00| 04 | . | table_select0: 1 0xa.1-0xa.5 (0.5) +0x00| 04 22 | ." | table_select1: 1 0xa.6-0xb.2 (0.5) +0x00| 22 | " | table_select2: 2 0xb.3-0xb.7 (0.5) +0x00| 01 | . | region_address1: 0 0xc-0xc.3 (0.4) +0x00| 01 | . | region_address2: 0 0xc.4-0xc.6 (0.3) +0x00| 01 | . | scalefac_scale: 1 0xc.7-0xc.7 (0.1) +0x00| 00 | . | count1table_select: 0 0xd-0xd (0.1) + | | | [1]{}: channel 0xd.1-0x14.7 (7.7) +0x00| 00 00 | .. | part2_3_length: 0 0xd.1-0xe.4 (1.4) +0x00| 00 03| ..| big_values: 0 0xe.5-0xf.5 (1.1) +0x00| 03| .| global_gain: 210 0xf.6-0x10.5 (1) +0x10|48 |H | +0x10|48 00 |H. | scalefac_compress: 0 0x10.6-0x11.6 (1.1) +0x10| 00 | . | blocksplit_flag: 0 0x11.7-0x11.7 (0.1) +0x10| 00 | . | table_select0: 0 0x12-0x12.4 (0.5) +0x10| 00 00 | .. | table_select1: 0 0x12.5-0x13.1 (0.5) +0x10| 00 | . | table_select2: 0 0x13.2-0x13.6 (0.5) +0x10| 00 00 | .. | region_address1: 0 0x13.7-0x14.2 (0.4) +0x10| 00 | . | region_address2: 0 0x14.3-0x14.5 (0.3) +0x10| 00 | . | scalefac_scale: 0 0x14.6-0x14.6 (0.1) +0x10| 00 | . | count1table_select: 0 0x14.7-0x14.7 (0.1) +0x10| 92 34 1c a3 60 00 3f 13 87 ea 04| .4..`.?....| audio_data: raw bits 0x15-0x47.7 (51) +0x20|1d 59 fc a7 a6 18 d6 fc 10 ff f7 97 88 27 16 7f|.Y...........'..| +* |until 0x47.7 (end) (51) | | + | | | crc_calculated: "5197" (raw bits) 0x48-NA (0) diff --git a/format/mpeg/testdata/mp3-frame-mono b/format/mpeg/testdata/mp3-frame-mono deleted file mode 100644 index 0d479175..00000000 Binary files a/format/mpeg/testdata/mp3-frame-mono and /dev/null differ diff --git a/format/mpeg/testdata/mp3-frame-mono-crc.fqtest b/format/mpeg/testdata/mp3-frame-mono-crc.fqtest index 87208486..fbd8f315 100644 --- a/format/mpeg/testdata/mp3-frame-mono-crc.fqtest +++ b/format/mpeg/testdata/mp3-frame-mono-crc.fqtest @@ -1,5 +1,61 @@ # ffmpeg -f lavfi -i sine -t 10ms -f wav pipe:1 | lame - - | fq - '.frame[1] | tobits' > mp3-frame-mono-crc -$ fq -d mp3_frame '.header.crc | verbose' mp3-frame-mono-crc -exitcode: 3 -stderr: -error: arg: function not defined: verbose/0 +$ fq -d mp3_frame dv mp3-frame-mono-crc + |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|.{}: mp3-frame-mono-crc (mp3_frame) 0x0-0xd0.7 (209) + | | | header{}: 0x0-0x5.7 (6) +0x00|ff fa |.. | sync: 0b11111111111 (valid) 0x0-0x1.2 (1.3) +0x00| fa | . | mpeg_version: "1" (3) (MPEG Version 1) 0x1.3-0x1.4 (0.2) +0x00| fa | . | layer: 3 (1) (MPEG Layer 3) 0x1.5-0x1.6 (0.2) + | | | sample_count: 1152 0x1.7-NA (0) +0x00| fa | . | protection_absent: false (Has CRC) 0x1.7-0x1.7 (0.1) +0x00| 52 | R | bitrate: 64000 (5) 0x2-0x2.3 (0.4) +0x00| 52 | R | sample_rate: 44100 (0) 0x2.4-0x2.5 (0.2) +0x00| 52 | R | padding: "padded" (0b1) 0x2.6-0x2.6 (0.1) +0x00| 52 | R | private: 0 0x2.7-0x2.7 (0.1) +0x00| c4 | . | channels: "mono" (0b11) 0x3-0x3.1 (0.2) +0x00| c4 | . | channel_mode: "none" (0b0) 0x3.2-0x3.3 (0.2) +0x00| c4 | . | copyright: 0 0x3.4-0x3.4 (0.1) +0x00| c4 | . | original: 1 0x3.5-0x3.5 (0.1) +0x00| c4 | . | emphasis: "none" (0b0) 0x3.6-0x3.7 (0.2) +0x00| 2c b9 | ,. | crc: 0x2cb9 (valid) 0x4-0x5.7 (2) + | | | side_info{}: 0x6-0x16.7 (17) +0x00| 07 83 | .. | main_data_begin: 15 0x6-0x7 (1.1) +0x00| 83 | . | share: 0 0x7.1-0x7.5 (0.5) +0x00| 83 c9 | .. | scfsi0: 15 0x7.6-0x8.1 (0.4) + | | | granules[0:2]: 0x8.2-0x16.7 (14.6) + | | | [0][0:1]: granule 0x8.2-0xf.4 (7.3) + | | | [0]{}: channel 0x8.2-0xf.4 (7.3) +0x00| c9 14 | .. | part2_3_length: 581 0x8.2-0x9.5 (1.4) +0x00| 14 39 | .9 | big_values: 28 0x9.6-0xa.6 (1.1) +0x00| 39 29 | 9) | global_gain: 148 0xa.7-0xb.6 (1) +0x00| 29 3c | )< | scalefac_compress: 9 0xb.7-0xc.2 (0.4) +0x00| 3c | < | blocksplit_flag: 1 0xc.3-0xc.3 (0.1) +0x00| 3c | < | block_type: "end" (3) 0xc.4-0xc.5 (0.2) +0x00| 3c | < | switch_point: 0 0xc.6-0xc.6 (0.1) +0x00| 3c c3 | <. | table_select0: 12 0xc.7-0xd.3 (0.5) +0x00| c3 00 | .. | table_select1: 6 0xd.4-0xe (0.5) +0x00| 00 | . | subblock_gain0: 0 0xe.1-0xe.3 (0.3) +0x00| 00 | . | subblock_gain1: 0 0xe.4-0xe.6 (0.3) +0x00| 00 00| ..| subblock_gain2: 0 0xe.7-0xf.1 (0.3) +0x00| 00| .| preflag: 0 0xf.2-0xf.2 (0.1) +0x00| 00| .| scalefac_scale: 0 0xf.3-0xf.3 (0.1) +0x00| 00| .| count1table_select: 0 0xf.4-0xf.4 (0.1) + | | | [1][0:1]: granule 0xf.5-0x16.7 (7.3) + | | | [0]{}: channel 0xf.5-0x16.7 (7.3) +0x00| 00| .| part2_3_length: 0 0xf.5-0x11 (1.4) +0x10|00 00 |.. | +0x10| 00 34 | .4 | big_values: 0 0x11.1-0x12.1 (1.1) +0x10| 34 80 | 4. | global_gain: 210 0x12.2-0x13.1 (1) +0x10| 80 | . | scalefac_compress: 0 0x13.2-0x13.5 (0.4) +0x10| 80 | . | blocksplit_flag: 0 0x13.6-0x13.6 (0.1) +0x10| 80 00 | .. | table_select0: 0 0x13.7-0x14.3 (0.5) +0x10| 00 00 | .. | table_select1: 0 0x14.4-0x15 (0.5) +0x10| 00 | . | table_select2: 0 0x15.1-0x15.5 (0.5) +0x10| 00 04 | .. | region_address1: 0 0x15.6-0x16.1 (0.4) +0x10| 04 | . | region_address2: 0 0x16.2-0x16.4 (0.3) +0x10| 04 | . | preflag: 1 0x16.5-0x16.5 (0.1) +0x10| 04 | . | scalefac_scale: 0 0x16.6-0x16.6 (0.1) +0x10| 04 | . | count1table_select: 0 0x16.7-0x16.7 (0.1) +0x10| 58 c9 20 d4 29 52 98 c8 c8| X. .)R...| audio_data: raw bits 0x17-0xd0.7 (186) +0x20|f9 13 80 40 24 bc 91 23 42 50 56 0d 18 11 03 41|...@$..#BPV....A| +* |until 0xd0.7 (end) (186) | | + | | | crc_calculated: "2cb9" (raw bits) 0xd1-NA (0) diff --git a/format/mpeg/testdata/mp3-frame.sh b/format/mpeg/testdata/mp3-frame.sh new file mode 100644 index 00000000..18f8b519 --- /dev/null +++ b/format/mpeg/testdata/mp3-frame.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# 8 16 24 32 40 48 56 64 80 96 112 128 144 160 256 320 +for br in 8000 128000 320000; do + for ch in 1 2; do + # 48000 44100 32000 22050 24000 16000 11025 12000 8000 + for hz in 48000 44100 8000; do + f="mp3-frame-${br}br-${ch}ch-${hz}hz" + ffmpeg -y -f lavfi -i sine -ar $hz -b:a $br -ac $ch -t 10ms -id3v2_version 0 -write_xing 0 -f mp3 $f.temp + fq -d raw 'tobytes[0:nth(1;match([0xff,0xe3],[0xff,0xfb]; "g")).offset // .size]' $f.temp >$f + rm $f.temp + echo "\$ fq -d mp3_frame dv $f" >$f.fqtest + done + done +done diff --git a/pkg/interp/testdata/binary.fqtest b/pkg/interp/testdata/binary.fqtest index a553b547..4a3a8e29 100644 --- a/pkg/interp/testdata/binary.fqtest +++ b/pkg/interp/testdata/binary.fqtest @@ -35,7 +35,7 @@ $ fq -d mp3 '.frames[]._bits[0:12] | tonumber' test.mp3 4095 $ fq -d mp3 '.headers[0].magic._bits[0:24] | tostring' test.mp3 "ID3" -$ fq -d mp3 '.frames[0].padding | ("", "md5", "base64", "snippet") as $f | tovalue({bits_format: $f})' test.mp3 +$ fq -d mp3 '.frames[0].audio_data | ("", "md5", "base64", "snippet") as $f | tovalue({bits_format: $f})' test.mp3 "<5>AAAAAAA=" "ca9c491ac66b2c62500882e93f3719a8" "AAAAAAA=" @@ -236,7 +236,7 @@ mp3> .frames[1] | tobytesrange | ., .start, .stop, .size, .[4:17], (tobits, toby |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| 0xe0| 00 00 0a 2c 43 2e 55 94 80| ...,C.U..|.: raw bits 0xe7-0xf3.7 (13) 0xf0|01 80 93 6b |...k | -mp3> .frames[1].data | tobytes | match([0x33, 0x85]), first(scan([0x33, 0x85]) | tohex), first(splits([0x33, 0x85]) | tohex) +mp3> .frames[1].audio_data | tobytes | match([0x33, 0x85]), first(scan([0x33, 0x85]) | tohex), first(splits([0x33, 0x85]) | tohex) { "captures": [], "length": 2, diff --git a/pkg/interp/testdata/display.fqtest b/pkg/interp/testdata/display.fqtest index f1ebbfd8..d41365f3 100644 --- a/pkg/interp/testdata/display.fqtest +++ b/pkg/interp/testdata/display.fqtest @@ -59,7 +59,7 @@ mp3> .frames[0] | dv({depth: 1, addrbase: 10}) 064|00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15|0123456789012345| xing{}: (xing) 66-221.7 (156) 080|02 57 00 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6|.W..............| * |until 221.7 (156) | | -208| 00 00| ..| padding: raw bits 222-226.7 (5) +208| 00 00| ..| audio_data: raw bits 222-226.7 (5) 224|00 00 00 |... | | | | crc_calculated: "827a" (raw bits) 227-NA (0) mp3> .frames[0] | dv({depth: 1, sizebase: 16}) @@ -71,7 +71,7 @@ mp3> .frames[0] | dv({depth: 1, sizebase: 16}) 0x40|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| xing{}: (xing) 0x42-0xdd.7 (0x9c) 0x50|02 57 00 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6|.W..............| * |until 0xdd.7 (0x9c) | | -0xd0| 00 00| ..| padding: raw bits 0xde-0xe2.7 (0x5) +0xd0| 00 00| ..| audio_data: raw bits 0xde-0xe2.7 (0x5) 0xe0|00 00 00 |... | | | | crc_calculated: "827a" (raw bits) 0xe3-NA (0x0) mp3> .frames[0].xing | "d", d, "da", da, "dd", dd, "dv", dv, "ddv", ddv diff --git a/pkg/interp/testdata/gojq.fqtest b/pkg/interp/testdata/gojq.fqtest index 6a8b80da..7c59a5de 100644 --- a/pkg/interp/testdata/gojq.fqtest +++ b/pkg/interp/testdata/gojq.fqtest @@ -34,8 +34,7 @@ $ fq -d mp3 '{(.headers[0].magic): 123}' test.mp3 } $ fq -d mp3 '.frames | group_by(.side_info | {b: .main_data_end}) | map(length)' test.mp3 [ - 2, - 1 + 3 ] $ fq -d mp3 '.frames | map(.header) | group_by(.bitrate)' test.mp3 [ @@ -193,6 +192,7 @@ $ fq -d mp3 '.frames | map(.header) | max_by(.bitrate)' test.mp3 0x1b0| c4 | . | emphasis: "none" (0b0) $ fq -d mp3 '.frames[0] | . + .header | keys, .bitrate' test.mp3 [ + "audio_data", "bitrate", "channel_mode", "channels", @@ -216,6 +216,7 @@ $ fq -d mp3 '.frames[0] | . + .header | keys, .bitrate' test.mp3 0x20| 40| @|.frames[0].header.bitrate: 56000 (4) $ fq -d mp3 '[.frames[0] | ., .header] | add | keys, .bitrate' test.mp3 [ + "audio_data", "bitrate", "channel_mode", "channels", @@ -243,14 +244,14 @@ $ fq -d mp3 '.frames[0] | keys' test.mp3 "header", "side_info", "xing", - "padding", + "audio_data", "crc_calculated" ] $ fq -d mp3 '.frames[0] | to_entries[].key' test.mp3 "header" "side_info" "xing" -"padding" +"audio_data" "crc_calculated" # xml, csv does string normalization, make sure it works with nested JQValue:s # TODO: move this test as it depends on xml diff --git a/pkg/interp/testdata/grep.fqtest b/pkg/interp/testdata/grep.fqtest index 5781d2c5..6bd2d8a6 100644 --- a/pkg/interp/testdata/grep.fqtest +++ b/pkg/interp/testdata/grep.fqtest @@ -7,9 +7,9 @@ mp3> grep(44100, "ID", "^ID3$", "^ID.?$", "Info", "magic", "\u00ff", [0x49, 0x44 |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| 0x1b0| 52 | R |.frames[2].header.sample_rate: 44100 (0) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| -0x1c0| 11 4b 36 4a 08 83 58 c9| .K6J..X.|.frames[2].data: raw bits +0x1c0| 11 4b 36 4a 08 83 58 c9| .K6J..X.|.frames[2].audio_data: raw bits 0x1d0|20 d4 29 52 98 c8 c8 f9 13 80 40 24 bc 91 23 42| .)R......@$..#B| -* |until 0x279.7 (178) | | +* |until 0x283.7 (end) (188) | | |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| 0x0|49 44 33 |ID3 |.headers[0].magic: "ID3" (valid) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| @@ -40,9 +40,9 @@ mp3> fgrep(44100, "ID", "^ID3$", "^ID.?$", "Info", "magic", "\u00ff", [0x49, 0x4 0x0|49 44 33 |ID3 |.headers[0].magic: "ID3" (valid) mp3> bgrep(44100, "ID", "^ID3$", "^ID.?$", "Info", "magic", "\u00ff", [0x49, 0x44]) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| -0x1c0| 11 4b 36 4a 08 83 58 c9| .K6J..X.|.frames[2].data: raw bits +0x1c0| 11 4b 36 4a 08 83 58 c9| .K6J..X.|.frames[2].audio_data: raw bits 0x1d0|20 d4 29 52 98 c8 c8 f9 13 80 40 24 bc 91 23 42| .)R......@$..#B| -* |until 0x279.7 (178) | | +* |until 0x283.7 (end) (188) | | |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| 0x0|49 44 33 |ID3 |.headers[0].magic: "ID3" (valid) |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| diff --git a/pkg/interp/testdata/match.fqtest b/pkg/interp/testdata/match.fqtest index d4343484..1e52a0ef 100644 --- a/pkg/interp/testdata/match.fqtest +++ b/pkg/interp/testdata/match.fqtest @@ -1,5 +1,5 @@ $ fq -i -d mp3 . test.mp3 -mp3> .frames[1].data | tobytes | match("3\u0085"; "b") +mp3> .frames[1].audio_data | tobytes | match("3\u0085"; "b") { "captures": [], "length": 2, diff --git a/pkg/interp/testdata/slurp.fqtest b/pkg/interp/testdata/slurp.fqtest index fe9e41a0..ad3c2b5f 100644 --- a/pkg/interp/testdata/slurp.fqtest +++ b/pkg/interp/testdata/slurp.fqtest @@ -96,7 +96,7 @@ mp3> $f[] 0x40|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| xing{}: (xing) 0x50|02 57 00 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6|.W..............| * |until 0xdd.7 (156) | | -0xd0| 00 00| ..| padding: raw bits +0xd0| 00 00| ..| audio_data: raw bits 0xe0|00 00 00 |... | | | | crc_calculated: "827a" (raw bits) mp3> ^D diff --git a/pkg/interp/testdata/value_array.fqtest b/pkg/interp/testdata/value_array.fqtest index bba69a6f..93221bcc 100644 --- a/pkg/interp/testdata/value_array.fqtest +++ b/pkg/interp/testdata/value_array.fqtest @@ -190,6 +190,7 @@ mp3> .headers[0] = 1 "footers": [], "frames": [ { + "audio_data": "<5>AAAAAAA=", "crc_calculated": "827a", "header": { "bitrate": 56000, @@ -207,7 +208,6 @@ mp3> .headers[0] = 1 "sample_rate": 44100, "sync": 2047 }, - "padding": "<5>AAAAAAA=", "side_info": { "granules": [ [ @@ -245,9 +245,9 @@ mp3> .headers[0] = 1 } ] ], - "main_data_end": 0, - "private_bits": 0, - "share0": 0 + "main_data_begin": 0, + "scfsi0": 0, + "share": 0 }, "xing": { "bytes": 599, @@ -386,8 +386,8 @@ mp3> .headers[0] = 1 } }, { + "audio_data": "<187>B6rDjjOF02TxocEIHFgfXh8YHEYEHonlsy5aD6g7E2vw+GBQFAQDAoJEDE5o0aNsH3iAEAQxOD/BB050+c5fznL+7p93Lg+D4Ph8EAxKAMH9IAH///555554T7EPKQdc5TdRYNYihmqWGn6jVTNuL+Em0eAKJCYbPQRwVHtKrRk2Hogmi3/vFJwLDWJ//++4IUY5R/oJnyoaCgV9HgUESINnfuTyoCETQkEv/+OQSYPWtQkEQMCZSqCIEQ==", "crc_calculated": "e5b0", - "data": "<187>B6rDjjOF02TxocEIHFgfXh8YHEYEHonlsy5aD6g7E2vw+GBQFAQDAoJEDE5o0aNsH3iAEAQxOD/BB050+c5fznL+7p93Lg+D4Ph8EAxKAMH9IAH///555554T7EPKQdc5TdRYNYihmqWGn6jVTNuL+Em0eAKJCYbPQRwVHtKrRk2Hogmi3/vFJwLDWJ//++4IUY5R/oJnyoaCgV9HgUESINnfuTyoCETQkEv/+OQSYPWtQkEQMCZSqCIEQ==", "header": { "bitrate": 64000, "channel_mode": "none", @@ -404,7 +404,6 @@ mp3> .headers[0] = 1 "sample_rate": 44100, "sync": 2047 }, - "other_data": "<0>", "side_info": { "granules": [ [ @@ -446,14 +445,14 @@ mp3> .headers[0] = 1 } ] ], - "main_data_end": 0, - "private_bits": 0, - "share0": 0 + "main_data_begin": 0, + "scfsi0": 0, + "share": 0 } }, { + "audio_data": "<188>EUs2SgiDWMkg1ClSmMjI+ROAQCS8kSNCUFYNGBEDQd6wVWCsRHiwdgr6P4lOlXKBqDUqdWdiL/BXlj3Ev//xEkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo=", "crc_calculated": "61fd", - "data": "<178>EUs2SgiDWMkg1ClSmMjI+ROAQCS8kSNCUFYNGBEDQd6wVWCsRHiwdgr6P4lOlXKBqDUqdWdiL/BXlj3Ev//xEkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==", "header": { "bitrate": 64000, "channel_mode": "none", @@ -470,8 +469,6 @@ mp3> .headers[0] = 1 "sample_rate": 44100, "sync": 2047 }, - "other_data": "<9>qqqqqqqqqqqq", - "padding_byte": "<1>qg==", "side_info": { "granules": [ [ @@ -511,9 +508,9 @@ mp3> .headers[0] = 1 } ] ], - "main_data_end": 9, - "private_bits": 0, - "share0": 15 + "main_data_begin": 9, + "scfsi0": 15, + "share": 0 } } ], @@ -528,6 +525,7 @@ mp3> .headers[0] |= empty "footers": [], "frames": [ { + "audio_data": "<5>AAAAAAA=", "crc_calculated": "827a", "header": { "bitrate": 56000, @@ -545,7 +543,6 @@ mp3> .headers[0] |= empty "sample_rate": 44100, "sync": 2047 }, - "padding": "<5>AAAAAAA=", "side_info": { "granules": [ [ @@ -583,9 +580,9 @@ mp3> .headers[0] |= empty } ] ], - "main_data_end": 0, - "private_bits": 0, - "share0": 0 + "main_data_begin": 0, + "scfsi0": 0, + "share": 0 }, "xing": { "bytes": 599, @@ -724,8 +721,8 @@ mp3> .headers[0] |= empty } }, { + "audio_data": "<187>B6rDjjOF02TxocEIHFgfXh8YHEYEHonlsy5aD6g7E2vw+GBQFAQDAoJEDE5o0aNsH3iAEAQxOD/BB050+c5fznL+7p93Lg+D4Ph8EAxKAMH9IAH///555554T7EPKQdc5TdRYNYihmqWGn6jVTNuL+Em0eAKJCYbPQRwVHtKrRk2Hogmi3/vFJwLDWJ//++4IUY5R/oJnyoaCgV9HgUESINnfuTyoCETQkEv/+OQSYPWtQkEQMCZSqCIEQ==", "crc_calculated": "e5b0", - "data": "<187>B6rDjjOF02TxocEIHFgfXh8YHEYEHonlsy5aD6g7E2vw+GBQFAQDAoJEDE5o0aNsH3iAEAQxOD/BB050+c5fznL+7p93Lg+D4Ph8EAxKAMH9IAH///555554T7EPKQdc5TdRYNYihmqWGn6jVTNuL+Em0eAKJCYbPQRwVHtKrRk2Hogmi3/vFJwLDWJ//++4IUY5R/oJnyoaCgV9HgUESINnfuTyoCETQkEv/+OQSYPWtQkEQMCZSqCIEQ==", "header": { "bitrate": 64000, "channel_mode": "none", @@ -742,7 +739,6 @@ mp3> .headers[0] |= empty "sample_rate": 44100, "sync": 2047 }, - "other_data": "<0>", "side_info": { "granules": [ [ @@ -784,14 +780,14 @@ mp3> .headers[0] |= empty } ] ], - "main_data_end": 0, - "private_bits": 0, - "share0": 0 + "main_data_begin": 0, + "scfsi0": 0, + "share": 0 } }, { + "audio_data": "<188>EUs2SgiDWMkg1ClSmMjI+ROAQCS8kSNCUFYNGBEDQd6wVWCsRHiwdgr6P4lOlXKBqDUqdWdiL/BXlj3Ev//xEkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo=", "crc_calculated": "61fd", - "data": "<178>EUs2SgiDWMkg1ClSmMjI+ROAQCS8kSNCUFYNGBEDQd6wVWCsRHiwdgr6P4lOlXKBqDUqdWdiL/BXlj3Ev//xEkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==", "header": { "bitrate": 64000, "channel_mode": "none", @@ -808,8 +804,6 @@ mp3> .headers[0] |= empty "sample_rate": 44100, "sync": 2047 }, - "other_data": "<9>qqqqqqqqqqqq", - "padding_byte": "<1>qg==", "side_info": { "granules": [ [ @@ -849,9 +843,9 @@ mp3> .headers[0] |= empty } ] ], - "main_data_end": 9, - "private_bits": 0, - "share0": 15 + "main_data_begin": 9, + "scfsi0": 15, + "share": 0 } } ], diff --git a/pkg/interp/testdata/value_object.fqtest b/pkg/interp/testdata/value_object.fqtest index 8abdd9e9..f36b818d 100644 --- a/pkg/interp/testdata/value_object.fqtest +++ b/pkg/interp/testdata/value_object.fqtest @@ -109,6 +109,7 @@ mp3> .headers[0].flags.a = 1 "footers": [], "frames": [ { + "audio_data": "<5>AAAAAAA=", "crc_calculated": "827a", "header": { "bitrate": 56000, @@ -126,7 +127,6 @@ mp3> .headers[0].flags.a = 1 "sample_rate": 44100, "sync": 2047 }, - "padding": "<5>AAAAAAA=", "side_info": { "granules": [ [ @@ -164,9 +164,9 @@ mp3> .headers[0].flags.a = 1 } ] ], - "main_data_end": 0, - "private_bits": 0, - "share0": 0 + "main_data_begin": 0, + "scfsi0": 0, + "share": 0 }, "xing": { "bytes": 599, @@ -305,8 +305,8 @@ mp3> .headers[0].flags.a = 1 } }, { + "audio_data": "<187>B6rDjjOF02TxocEIHFgfXh8YHEYEHonlsy5aD6g7E2vw+GBQFAQDAoJEDE5o0aNsH3iAEAQxOD/BB050+c5fznL+7p93Lg+D4Ph8EAxKAMH9IAH///555554T7EPKQdc5TdRYNYihmqWGn6jVTNuL+Em0eAKJCYbPQRwVHtKrRk2Hogmi3/vFJwLDWJ//++4IUY5R/oJnyoaCgV9HgUESINnfuTyoCETQkEv/+OQSYPWtQkEQMCZSqCIEQ==", "crc_calculated": "e5b0", - "data": "<187>B6rDjjOF02TxocEIHFgfXh8YHEYEHonlsy5aD6g7E2vw+GBQFAQDAoJEDE5o0aNsH3iAEAQxOD/BB050+c5fznL+7p93Lg+D4Ph8EAxKAMH9IAH///555554T7EPKQdc5TdRYNYihmqWGn6jVTNuL+Em0eAKJCYbPQRwVHtKrRk2Hogmi3/vFJwLDWJ//++4IUY5R/oJnyoaCgV9HgUESINnfuTyoCETQkEv/+OQSYPWtQkEQMCZSqCIEQ==", "header": { "bitrate": 64000, "channel_mode": "none", @@ -323,7 +323,6 @@ mp3> .headers[0].flags.a = 1 "sample_rate": 44100, "sync": 2047 }, - "other_data": "<0>", "side_info": { "granules": [ [ @@ -365,14 +364,14 @@ mp3> .headers[0].flags.a = 1 } ] ], - "main_data_end": 0, - "private_bits": 0, - "share0": 0 + "main_data_begin": 0, + "scfsi0": 0, + "share": 0 } }, { + "audio_data": "<188>EUs2SgiDWMkg1ClSmMjI+ROAQCS8kSNCUFYNGBEDQd6wVWCsRHiwdgr6P4lOlXKBqDUqdWdiL/BXlj3Ev//xEkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo=", "crc_calculated": "61fd", - "data": "<178>EUs2SgiDWMkg1ClSmMjI+ROAQCS8kSNCUFYNGBEDQd6wVWCsRHiwdgr6P4lOlXKBqDUqdWdiL/BXlj3Ev//xEkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==", "header": { "bitrate": 64000, "channel_mode": "none", @@ -389,8 +388,6 @@ mp3> .headers[0].flags.a = 1 "sample_rate": 44100, "sync": 2047 }, - "other_data": "<9>qqqqqqqqqqqq", - "padding_byte": "<1>qg==", "side_info": { "granules": [ [ @@ -430,9 +427,9 @@ mp3> .headers[0].flags.a = 1 } ] ], - "main_data_end": 9, - "private_bits": 0, - "share0": 15 + "main_data_begin": 9, + "scfsi0": 15, + "share": 0 } } ], @@ -481,6 +478,7 @@ mp3> .headers[0].flags.a |= empty "footers": [], "frames": [ { + "audio_data": "<5>AAAAAAA=", "crc_calculated": "827a", "header": { "bitrate": 56000, @@ -498,7 +496,6 @@ mp3> .headers[0].flags.a |= empty "sample_rate": 44100, "sync": 2047 }, - "padding": "<5>AAAAAAA=", "side_info": { "granules": [ [ @@ -536,9 +533,9 @@ mp3> .headers[0].flags.a |= empty } ] ], - "main_data_end": 0, - "private_bits": 0, - "share0": 0 + "main_data_begin": 0, + "scfsi0": 0, + "share": 0 }, "xing": { "bytes": 599, @@ -677,8 +674,8 @@ mp3> .headers[0].flags.a |= empty } }, { + "audio_data": "<187>B6rDjjOF02TxocEIHFgfXh8YHEYEHonlsy5aD6g7E2vw+GBQFAQDAoJEDE5o0aNsH3iAEAQxOD/BB050+c5fznL+7p93Lg+D4Ph8EAxKAMH9IAH///555554T7EPKQdc5TdRYNYihmqWGn6jVTNuL+Em0eAKJCYbPQRwVHtKrRk2Hogmi3/vFJwLDWJ//++4IUY5R/oJnyoaCgV9HgUESINnfuTyoCETQkEv/+OQSYPWtQkEQMCZSqCIEQ==", "crc_calculated": "e5b0", - "data": "<187>B6rDjjOF02TxocEIHFgfXh8YHEYEHonlsy5aD6g7E2vw+GBQFAQDAoJEDE5o0aNsH3iAEAQxOD/BB050+c5fznL+7p93Lg+D4Ph8EAxKAMH9IAH///555554T7EPKQdc5TdRYNYihmqWGn6jVTNuL+Em0eAKJCYbPQRwVHtKrRk2Hogmi3/vFJwLDWJ//++4IUY5R/oJnyoaCgV9HgUESINnfuTyoCETQkEv/+OQSYPWtQkEQMCZSqCIEQ==", "header": { "bitrate": 64000, "channel_mode": "none", @@ -695,7 +692,6 @@ mp3> .headers[0].flags.a |= empty "sample_rate": 44100, "sync": 2047 }, - "other_data": "<0>", "side_info": { "granules": [ [ @@ -737,14 +733,14 @@ mp3> .headers[0].flags.a |= empty } ] ], - "main_data_end": 0, - "private_bits": 0, - "share0": 0 + "main_data_begin": 0, + "scfsi0": 0, + "share": 0 } }, { + "audio_data": "<188>EUs2SgiDWMkg1ClSmMjI+ROAQCS8kSNCUFYNGBEDQd6wVWCsRHiwdgr6P4lOlXKBqDUqdWdiL/BXlj3Ev//xEkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo=", "crc_calculated": "61fd", - "data": "<178>EUs2SgiDWMkg1ClSmMjI+ROAQCS8kSNCUFYNGBEDQd6wVWCsRHiwdgr6P4lOlXKBqDUqdWdiL/BXlj3Ev//xEkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==", "header": { "bitrate": 64000, "channel_mode": "none", @@ -761,8 +757,6 @@ mp3> .headers[0].flags.a |= empty "sample_rate": 44100, "sync": 2047 }, - "other_data": "<9>qqqqqqqqqqqq", - "padding_byte": "<1>qg==", "side_info": { "granules": [ [ @@ -802,9 +796,9 @@ mp3> .headers[0].flags.a |= empty } ] ], - "main_data_end": 9, - "private_bits": 0, - "share0": 15 + "main_data_begin": 9, + "scfsi0": 15, + "share": 0 } } ],