line |
true |
false |
branch |
46
|
6 |
83 |
if ( _has_ape(infile, file_size, info) ) { |
58
|
7 |
168 |
if ( bptr[0] == 'A' && bptr[1] == 'P' && bptr[2] == 'E' |
|
6 |
1 |
if ( bptr[0] == 'A' && bptr[1] == 'P' && bptr[2] == 'E' |
|
6 |
0 |
if ( bptr[0] == 'A' && bptr[1] == 'P' && bptr[2] == 'E' |
59
|
6 |
0 |
&& bptr[3] == 'T' && bptr[4] == 'A' && bptr[5] == 'G' |
|
6 |
0 |
&& bptr[3] == 'T' && bptr[4] == 'A' && bptr[5] == 'G' |
|
6 |
0 |
&& bptr[3] == 'T' && bptr[4] == 'A' && bptr[5] == 'G' |
60
|
6 |
0 |
&& bptr[6] == 'E' && bptr[7] == 'X' |
|
6 |
0 |
&& bptr[6] == 'E' && bptr[7] == 'X' |
75
|
0 |
89 |
if ( (PerlIO_seek(infile, file_size - 160, SEEK_SET)) == -1 ) { |
84
|
0 |
89 |
if ( !_check_buf(infile, &buf, 136, 136) ) { |
90
|
3 |
86 |
if ( _is_ape_header(bptr) ) { |
97
|
1 |
85 |
if ( bptr[0] == 'L' && bptr[1] == 'Y' && bptr[2] == 'R' |
|
1 |
0 |
if ( bptr[0] == 'L' && bptr[1] == 'Y' && bptr[2] == 'R' |
|
1 |
0 |
if ( bptr[0] == 'L' && bptr[1] == 'Y' && bptr[2] == 'R' |
98
|
1 |
0 |
&& bptr[3] == 'I' && bptr[4] == 'C' && bptr[5] == 'S' |
|
1 |
0 |
&& bptr[3] == 'I' && bptr[4] == 'C' && bptr[5] == 'S' |
|
1 |
0 |
&& bptr[3] == 'I' && bptr[4] == 'C' && bptr[5] == 'S' |
99
|
1 |
0 |
&& bptr[6] == '2' && bptr[7] == '0' && bptr[8] == '0' |
|
1 |
0 |
&& bptr[6] == '2' && bptr[7] == '0' && bptr[8] == '0' |
|
1 |
0 |
&& bptr[6] == '2' && bptr[7] == '0' && bptr[8] == '0' |
111
|
0 |
1 |
if ( (PerlIO_seek(infile, file_size - (160 + lyrics_size + 15), SEEK_SET)) == -1 ) { |
118
|
0 |
1 |
if ( !_check_buf(infile, &buf, 136, 136) ) { |
122
|
1 |
0 |
if ( _is_ape_header( buffer_ptr(&buf) ) ) { |
129
|
0 |
0 |
if (my_hv_exists(info, "audio_size")) { |
130
|
0 |
0 |
int audio_size = SvIV(*(my_hv_fetch(info, "audio_size"))); |
141
|
2 |
83 |
if ( _is_ape_header(bptr) ) { |
175
|
1620 |
32 |
&& (frame->layerID != ILLEGAL_LAYER_ID) |
176
|
1617 |
3 |
&& (frame->bitrate_index != 0) |
177
|
1587 |
30 |
&& (frame->bitrate_index != 15) |
178
|
1652 |
4 |
&& (frame->samplingrate_index != ILLEGAL_SR); |
|
1582 |
5 |
&& (frame->samplingrate_index != ILLEGAL_SR); |
180
|
74 |
1582 |
if (!frame->valid) { |
186
|
114 |
1468 |
if (frame->mpegID == MPEG2_ID) |
189
|
35 |
1547 |
if (frame->mpegID == MPEG25_ID) |
192
|
115 |
1467 |
frame->channels = (frame->mode == MODE_MONO) ? 1 : 2; |
196
|
5 |
1577 |
if (frame->layerID == LAYER1_ID) { |
204
|
148 |
1429 |
frame->samples_per_frame = ((frame->mpegID == MPEG1_ID) || (frame->layerID == LAYER2_ID)) ? 1152 : 576; |
|
35 |
113 |
frame->samples_per_frame = ((frame->mpegID == MPEG1_ID) || (frame->layerID == LAYER2_ID)) ? 1152 : 576; |
210
|
5 |
1577 |
if (frame->bytes_per_slot > 1) |
213
|
176 |
1406 |
if (frame->padding) |
246
|
86 |
27 |
while ( done < audio_size - 4 ) { |
248
|
0 |
86 |
if ( !_check_buf(mp3->infile, mp3->buf, 4, MP3_BLOCK_SIZE * 3) ) { |
255
|
32 |
54 |
if (wrap_skip) { |
262
|
1288 |
59 |
while ( buffer_len(mp3->buf) >= 4 ) { |
264
|
125 |
1287 |
while ( *bptr != 0xFF ) { |
267
|
1 |
124 |
if ( buffer_len(mp3->buf) < 4 ) { |
275
|
1287 |
0 |
if ( !_decode_mp3_frame( buffer_ptr(mp3->buf), &frame ) ) { |
280
|
699 |
588 |
if ( !vbr ) { |
284
|
645 |
54 |
if (prev_bitrate > 0 && prev_bitrate != frame.bitrate_kbps) { |
|
13 |
632 |
if (prev_bitrate > 0 && prev_bitrate != frame.bitrate_kbps) { |
289
|
26 |
660 |
if (frame_count > 20) { |
300
|
44 |
1217 |
if (frame.frame_size > buffer_len(mp3->buf)) { |
317
|
0 |
54 |
if (err) return err; |
319
|
0 |
54 |
if (!frame_count) return -1; |
333
|
70 |
15 |
if (mp3->first_frame->mpegID == MPEG1_ID) { |
334
|
68 |
2 |
xing_offset += mp3->first_frame->channels == 2 ? 32 : 17; |
337
|
7 |
8 |
xing_offset += mp3->first_frame->channels == 2 ? 17 : 9; |
340
|
0 |
85 |
if ( !_check_buf(mp3->infile, mp3->buf, 4 + xing_offset, MP3_BLOCK_SIZE) ) { |
348
|
63 |
22 |
if ( bptr[0] == 'X' || bptr[0] == 'I' ) { |
|
7 |
56 |
if ( bptr[0] == 'X' || bptr[0] == 'I' ) { |
349
|
22 |
7 |
if ( |
350
|
22 |
0 |
( bptr[1] == 'i' && bptr[2] == 'n' && bptr[3] == 'g' ) |
|
0 |
22 |
( bptr[1] == 'i' && bptr[2] == 'n' && bptr[3] == 'g' ) |
351
|
7 |
0 |
|| |
352
|
7 |
0 |
( bptr[1] == 'n' && bptr[2] == 'f' && bptr[3] == 'o' ) |
|
7 |
0 |
( bptr[1] == 'n' && bptr[2] == 'f' && bptr[3] == 'o' ) |
360
|
0 |
29 |
if ( !_check_buf(mp3->infile, mp3->buf, 160, MP3_BLOCK_SIZE) ) { |
365
|
22 |
7 |
mp3->vbr = bptr[1] == 'i' ? VBR : CBR; |
371
|
29 |
0 |
if (mp3->xing_frame->flags & XING_FRAMES) { |
375
|
29 |
0 |
if ( mp3->xing_frame->flags & XING_BYTES) { |
379
|
29 |
0 |
if (mp3->xing_frame->flags & XING_TOC) { |
382
|
2900 |
29 |
for (i = 0; i < 100; i++) { |
391
|
28 |
1 |
if (mp3->xing_frame->flags & XING_QUALITY) { |
397
|
19 |
10 |
if ( bptr[0] == 'L' && bptr[1] == 'A' && bptr[2] == 'M' && bptr[3] == 'E' ) { |
|
19 |
0 |
if ( bptr[0] == 'L' && bptr[1] == 'A' && bptr[2] == 'M' && bptr[3] == 'E' ) { |
|
19 |
0 |
if ( bptr[0] == 'L' && bptr[1] == 'A' && bptr[2] == 'M' && bptr[3] == 'E' ) { |
|
19 |
0 |
if ( bptr[0] == 'L' && bptr[1] == 'A' && bptr[2] == 'M' && bptr[3] == 'E' ) { |
431
|
38 |
19 |
for (i=0; i<2; i++) { |
438
|
15 |
23 |
if (origin != 0) { |
441
|
15 |
0 |
if (gt == 1) |
443
|
0 |
0 |
else if (gt == 2) |
449
|
15 |
0 |
= (( (bptr[0] & 0x4) >> 2 ) ? -0.1 : 0.1) |
467
|
19 |
0 |
if (mp3->xing_frame->lame_encoder_delay < 0 || mp3->xing_frame->lame_encoder_delay > 3000) { |
|
0 |
19 |
if (mp3->xing_frame->lame_encoder_delay < 0 || mp3->xing_frame->lame_encoder_delay > 3000) { |
470
|
19 |
0 |
if (mp3->xing_frame->lame_encoder_padding < 0 || mp3->xing_frame->lame_encoder_padding > 3000) { |
|
0 |
19 |
if (mp3->xing_frame->lame_encoder_padding < 0 || mp3->xing_frame->lame_encoder_padding > 3000) { |
510
|
2 |
54 |
else if ( bptr[0] == 'V' && bptr[1] == 'B' && bptr[2] == 'R' && bptr[3] == 'I' ) { |
|
2 |
0 |
else if ( bptr[0] == 'V' && bptr[1] == 'B' && bptr[2] == 'R' && bptr[3] == 'I' ) { |
|
2 |
0 |
else if ( bptr[0] == 'V' && bptr[1] == 'B' && bptr[2] == 'R' && bptr[3] == 'I' ) { |
|
2 |
0 |
else if ( bptr[0] == 'V' && bptr[1] == 'B' && bptr[2] == 'R' && bptr[3] == 'I' ) { |
516
|
0 |
2 |
if ( !_check_buf(mp3->infile, mp3->buf, 14, MP3_BLOCK_SIZE) ) { |
535
|
2 |
83 |
if (mp3->first_frame->layerID != LAYER3_ID) |
538
|
14 |
69 |
if (mp3->first_frame->mpegID != MPEG1_ID && mp3->first_frame->mpegID != MPEG2_ID) |
|
6 |
8 |
if (mp3->first_frame->mpegID != MPEG1_ID && mp3->first_frame->mpegID != MPEG2_ID) |
541
|
75 |
2 |
if (mp3->first_frame->samplerate != 16000 |
542
|
71 |
4 |
&& mp3->first_frame->samplerate != 22050 |
543
|
69 |
2 |
&& mp3->first_frame->samplerate != 24000) |
546
|
8 |
0 |
if (mp3->bitrate >= 8 && mp3->bitrate <= 320) |
|
8 |
0 |
if (mp3->bitrate >= 8 && mp3->bitrate <= 320) |
555
|
2 |
75 |
if (mp3->first_frame->layerID != LAYER3_ID) |
558
|
6 |
69 |
if (mp3->first_frame->mpegID != MPEG1_ID) |
561
|
37 |
32 |
if (mp3->first_frame->samplerate != 32000 |
562
|
1 |
36 |
&& mp3->first_frame->samplerate != 44100 |
563
|
0 |
1 |
&& mp3->first_frame->samplerate != 48000) |
566
|
69 |
0 |
if (mp3->bitrate >= 32 && mp3->bitrate <= 320) |
|
69 |
0 |
if (mp3->bitrate >= 32 && mp3->bitrate <= 320) |
604
|
0 |
86 |
if ( !_check_buf(mp3->infile, mp3->buf, 10, MP3_BLOCK_SIZE) ) { |
610
|
65 |
21 |
if ( |
611
|
65 |
0 |
(bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && |
|
65 |
0 |
(bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && |
|
65 |
0 |
(bptr[0] == 'I' && bptr[1] == 'D' && bptr[2] == '3') && |
612
|
65 |
0 |
bptr[3] < 0xff && bptr[4] < 0xff && |
|
65 |
0 |
bptr[3] < 0xff && bptr[4] < 0xff && |
613
|
65 |
0 |
bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 |
|
65 |
0 |
bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 |
|
65 |
0 |
bptr[6] < 0x80 && bptr[7] < 0x80 && bptr[8] < 0x80 && bptr[9] < 0x80 |
618
|
0 |
65 |
if (bptr[5] & 0x10) { |
628
|
0 |
65 |
if ( !_check_buf(mp3->infile, mp3->buf, 4, MP3_BLOCK_SIZE) ) { |
636
|
164 |
85 |
while ( !found_first_frame && buffer_len(mp3->buf) ) { |
|
164 |
0 |
while ( !found_first_frame && buffer_len(mp3->buf) ) { |
639
|
16007 |
163 |
while ( *bptr != 0xFF ) { |
644
|
3 |
16004 |
if ( !buffer_len(mp3->buf) ) { |
645
|
1 |
2 |
if (mp3->audio_offset >= mp3->file_size - 4) { |
651
|
0 |
2 |
if ( !_check_buf(mp3->infile, mp3->buf, 4, MP3_BLOCK_SIZE) ) { |
663
|
0 |
163 |
if ( !_check_buf(mp3->infile, mp3->buf, 4, MP3_BLOCK_SIZE) ) { |
667
|
109 |
54 |
if ( !_decode_mp3_frame( (unsigned char *)buffer_ptr(mp3->buf), &frame ) ) { |
671
|
109 |
0 |
if ( _check_buf(mp3->infile, mp3->buf, frame.frame_size, MP3_BLOCK_SIZE) |
675
|
109 |
0 |
&& ( |
677
|
97 |
12 |
|| ( |
679
|
85 |
12 |
&& frame.samplerate == frame2.samplerate |
680
|
85 |
0 |
&& frame.channels == frame2.channels |
686
|
85 |
0 |
&& ( |
688
|
85 |
0 |
|| ( |
690
|
85 |
0 |
&& frame.samplerate == frame3.samplerate |
691
|
85 |
0 |
&& frame.channels == frame3.channels |
705
|
78 |
85 |
if (!found_first_frame) { |
714
|
0 |
85 |
if ( !found_first_frame ) { |
724
|
0 |
85 |
if ( !_parse_xing(mp3) ) { |
729
|
78 |
7 |
if ( (mp3->vbr == CBR || mp3->vbr == ABR) && mp3->xing_frame->lame_abr_rate ) { |
|
3 |
75 |
if ( (mp3->vbr == CBR || mp3->vbr == ABR) && mp3->xing_frame->lame_abr_rate ) { |
|
10 |
0 |
if ( (mp3->vbr == CBR || mp3->vbr == ABR) && mp3->xing_frame->lame_abr_rate ) { |
730
|
2 |
8 |
if (mp3->xing_frame->lame_abr_rate >= 255) { |
732
|
2 |
0 |
if (mp3->xing_frame->lame_preset <= 320) { |
744
|
75 |
10 |
if (!mp3->bitrate && (mp3->xing_frame->xing_frames && mp3->xing_frame->xing_bytes)) { |
|
19 |
56 |
if (!mp3->bitrate && (mp3->xing_frame->xing_frames && mp3->xing_frame->xing_bytes)) { |
|
19 |
0 |
if (!mp3->bitrate && (mp3->xing_frame->xing_frames && mp3->xing_frame->xing_bytes)) { |
745
|
16 |
3 |
float mfs = (float)frame.samplerate / ( frame.mpegID == MPEG2_ID || frame.mpegID == MPEG25_ID ? 72000. : 144000. ); |
|
5 |
11 |
float mfs = (float)frame.samplerate / ( frame.mpegID == MPEG2_ID || frame.mpegID == MPEG25_ID ? 72000. : 144000. ); |
751
|
2 |
64 |
else if (mp3->xing_frame->vbri_frames && mp3->xing_frame->vbri_bytes) { |
|
2 |
0 |
else if (mp3->xing_frame->vbri_frames && mp3->xing_frame->vbri_bytes) { |
752
|
2 |
0 |
float mfs = (float)frame.samplerate / ( frame.mpegID == MPEG2_ID || frame.mpegID == MPEG25_ID ? 72000. : 144000. ); |
|
0 |
2 |
float mfs = (float)frame.samplerate / ( frame.mpegID == MPEG2_ID || frame.mpegID == MPEG25_ID ? 72000. : 144000. ); |
759
|
85 |
0 |
if (PerlIO_read(infile, id3v1taghdr, 4) == 4) { |
760
|
13 |
72 |
if (id3v1taghdr[0]=='T' && id3v1taghdr[1]=='A' && id3v1taghdr[2]=='G') { |
|
13 |
0 |
if (id3v1taghdr[0]=='T' && id3v1taghdr[1]=='A' && id3v1taghdr[2]=='G') { |
|
13 |
0 |
if (id3v1taghdr[0]=='T' && id3v1taghdr[1]=='A' && id3v1taghdr[2]=='G') { |
767
|
54 |
31 |
if ( !mp3->bitrate ) { |
771
|
0 |
54 |
if (mp3->bitrate <= 0) { |
779
|
29 |
56 |
if (mp3->xing_frame->xing_frames) { |
782
|
19 |
10 |
if (mp3->xing_frame->lame_tag) { |
789
|
2 |
54 |
else if (mp3->xing_frame->vbri_frames) { |
811
|
63 |
22 |
if (mp3->xing_frame->xing_tag || mp3->xing_frame->info_tag) { |
|
7 |
56 |
if (mp3->xing_frame->xing_tag || mp3->xing_frame->info_tag) { |
812
|
29 |
0 |
if (mp3->xing_frame->xing_frames) { |
816
|
29 |
0 |
if (mp3->xing_frame->xing_bytes) { |
820
|
29 |
0 |
if (mp3->xing_frame->has_toc) { |
824
|
2900 |
29 |
for (i = 0; i < 100; i++) { |
831
|
22 |
7 |
if (mp3->xing_frame->xing_quality) { |
836
|
2 |
83 |
if (mp3->xing_frame->vbri_tag) { |
843
|
19 |
66 |
if (mp3->xing_frame->lame_tag) { |
849
|
15 |
4 |
if (mp3->xing_frame->lame_replay_gain[0]) { |
853
|
0 |
19 |
if (mp3->xing_frame->lame_replay_gain[1]) { |
870
|
1 |
18 |
if (mp3->xing_frame->lame_preset < 8) { |
873
|
10 |
8 |
else if (mp3->xing_frame->lame_preset <= 320) { |
876
|
8 |
0 |
else if (mp3->xing_frame->lame_preset <= 500) { |
879
|
8 |
0 |
if ( presets_v[mp3->xing_frame->lame_preset] ) { |
883
|
0 |
0 |
else if (mp3->xing_frame->lame_preset >= 1000 && mp3->xing_frame->lame_preset <= 1007) { |
|
0 |
0 |
else if (mp3->xing_frame->lame_preset >= 1000 && mp3->xing_frame->lame_preset <= 1007) { |
885
|
0 |
0 |
if ( presets_old[mp3->xing_frame->lame_preset] ) { |
891
|
82 |
3 |
if (mp3->vbr == ABR || mp3->vbr == VBR) { |
|
21 |
61 |
if (mp3->vbr == ABR || mp3->vbr == VBR) { |
896
|
8 |
77 |
if (_is_mp3x_profile(mp3)) |
898
|
69 |
8 |
else if (_is_mp3_profile(mp3)) |
920
|
0 |
4 |
if (!mp3->song_length_ms) |
925
|
1 |
3 |
if (offset < 0) { |
927
|
0 |
1 |
if (frame_offset < mp3->audio_offset) { |
934
|
0 |
3 |
if (offset >= mp3->song_length_ms) { |
939
|
1 |
2 |
if ( mp3->xing_frame->has_toc ) { |
949
|
0 |
1 |
if (ipercent > 99) |
954
|
1 |
0 |
if (ipercent < 99) { |
968
|
0 |
1 |
if (frame_offset == mp3->audio_offset) { |
992
|
1 |
3 |
if ((mp3->file_size - frame_offset) < 1000) { |
994
|
0 |
1 |
if (frame_offset < 0) |
1001
|
0 |
4 |
if ( !_check_buf(infile, &mp3_buf, 4, MP3_BLOCK_SIZE) ) { |
1011
|
1508 |
0 |
if ( |
1013
|
12 |
1496 |
|| |
1014
|
8 |
4 |
( bptr[0] == 0xFF && !_decode_mp3_frame( bptr, &frame ) ) |
1023
|
4 |
0 |
if (buf_size >= 4) { |
1049
|
42 |
23 |
if ( buffer_len(mp3->buf) >= size ) { |