# TODO: various gojq fq fork regression tests, should probably be move to fork code instead /test.mp3: $ fq -n '{a:1, b: 2} | tostream' [ [ "a" ], 1 ] [ [ "b" ], 2 ] [ [ "b" ] ] $ fq -d mp3 '{(.headers[0].magic): 123}' /test.mp3 { "ID3": 123 } $ fq -d mp3 '{(.headers[0].magic): 123}' /test.mp3 { "ID3": 123 } /test.mp3: $ fq -d mp3 '.frames | group_by(.side_info | {b: .main_data_end}) | map(length)' /test.mp3 [ 2, 1 ] /test.mp3: $ fq -d mp3 '.frames | map(.header) | group_by(.bitrate)' /test.mp3 [ [ { "bitrate": 56000, "channel_mode": 0, "channels": 3, "copyright": 0, "emphasis": 0, "layer": 3, "mpeg_version": 1, "original": 0, "padding": 0, "private": 0, "protection": true, "sample_rate": 44100, "samples_per_frame": 1152, "sync": 2047 } ], [ { "bitrate": 64000, "channel_mode": 0, "channels": 3, "copyright": 0, "emphasis": 0, "layer": 3, "mpeg_version": 1, "original": 1, "padding": 0, "private": 0, "protection": true, "sample_rate": 44100, "samples_per_frame": 1152, "sync": 2047 }, { "bitrate": 64000, "channel_mode": 0, "channels": 3, "copyright": 0, "emphasis": 0, "layer": 3, "mpeg_version": 1, "original": 1, "padding": 1, "private": 0, "protection": true, "sample_rate": 44100, "samples_per_frame": 1152, "sync": 2047 } ] ] $ fq -d mp3 '.frames | map(.header) | sort_by(.bitrate)' /test.mp3 [ { "bitrate": 56000, "channel_mode": 0, "channels": 3, "copyright": 0, "emphasis": 0, "layer": 3, "mpeg_version": 1, "original": 0, "padding": 0, "private": 0, "protection": true, "sample_rate": 44100, "samples_per_frame": 1152, "sync": 2047 }, { "bitrate": 64000, "channel_mode": 0, "channels": 3, "copyright": 0, "emphasis": 0, "layer": 3, "mpeg_version": 1, "original": 1, "padding": 0, "private": 0, "protection": true, "sample_rate": 44100, "samples_per_frame": 1152, "sync": 2047 }, { "bitrate": 64000, "channel_mode": 0, "channels": 3, "copyright": 0, "emphasis": 0, "layer": 3, "mpeg_version": 1, "original": 1, "padding": 1, "private": 0, "protection": true, "sample_rate": 44100, "samples_per_frame": 1152, "sync": 2047 } ] $ fq -d mp3 '.frames | map(.header) | sort_by(.bitrate)[0]' /test.mp3 |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f| |.frames[0].header: {} 0x20| ff fb | .. | sync: Correct (0x7ff) 0x20| fb | . | mpeg_version: MPEG Version 1 (1) 0x20| fb | . | layer: Layer 3 (3) | | | samples_per_frame: 1152 0x20| fb | . | protection: Not protected (true) 0x20| 40| @| bitrate: 56000 0x20| 40| @| sample_rate: 44100 0x20| 40| @| padding: Not padded (0b0) 0x20| 40| @| private: 0 0x30|c0 |. | channels: Mono (0b11) 0x30|c0 |. | channel_mode: None (0b0) 0x30|c0 |. | copyright: 0 0x30|c0 |. | original: 0 0x30|c0 |. | emphasis: None (0b0) $ fq -d mp3 '.frames | map(.header) | min_by(.bitrate)' /test.mp3 |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f| |.frames[0].header: {} 0x20| ff fb | .. | sync: Correct (0x7ff) 0x20| fb | . | mpeg_version: MPEG Version 1 (1) 0x20| fb | . | layer: Layer 3 (3) | | | samples_per_frame: 1152 0x20| fb | . | protection: Not protected (true) 0x20| 40| @| bitrate: 56000 0x20| 40| @| sample_rate: 44100 0x20| 40| @| padding: Not padded (0b0) 0x20| 40| @| private: 0 0x30|c0 |. | channels: Mono (0b11) 0x30|c0 |. | channel_mode: None (0b0) 0x30|c0 |. | copyright: 0 0x30|c0 |. | original: 0 0x30|c0 |. | emphasis: None (0b0) $ fq -d mp3 '.frames | map(.header) | max_by(.bitrate)' /test.mp3 |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f| |.frames[2].header: {} 0x1b0| ff fb | .. | sync: Correct (0x7ff) 0x1b0| fb | . | mpeg_version: MPEG Version 1 (1) 0x1b0| fb | . | layer: Layer 3 (3) | | | samples_per_frame: 1152 0x1b0| fb | . | protection: Not protected (true) 0x1b0| 52 | R | bitrate: 64000 0x1b0| 52 | R | sample_rate: 44100 0x1b0| 52 | R | padding: Padded (0b1) 0x1b0| 52 | R | private: 0 0x1b0| c4 | . | channels: Mono (0b11) 0x1b0| c4 | . | channel_mode: None (0b0) 0x1b0| c4 | . | copyright: 0 0x1b0| c4 | . | original: 1 0x1b0| c4 | . | emphasis: None (0b0) $ fq -d mp3 '.frames[0] | . + .header | keys, .bitrate' /test.mp3 [ "bitrate", "channel_mode", "channels", "copyright", "crc_calculated", "emphasis", "header", "layer", "mpeg_version", "original", "padding", "private", "protection", "sample_rate", "samples_per_frame", "side_info", "sync", "xing" ] |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f| | 0x20| 40| @|.frames[0].header.bitrate: 56000 $ fq -d mp3 '[.frames[0] | ., .header] | add | keys, .bitrate' /test.mp3 [ "bitrate", "channel_mode", "channels", "copyright", "crc_calculated", "emphasis", "header", "layer", "mpeg_version", "original", "padding", "private", "protection", "sample_rate", "samples_per_frame", "side_info", "sync", "xing" ] |00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f| | 0x20| 40| @|.frames[0].header.bitrate: 56000