| line | true | false | branch | 
 
| 88 | 0 | 23 | if ( !_check_buf(infile, asf->buf, 30, ASF_BLOCK_SIZE) ) { | 
 
| 94 | 0 | 23 | if ( !IsEqualGUID(&hdr.ID, &ASF_Header_Object) ) { | 
 
| 109 | 0 | 23 | if ( hdr.reserved2 != 0x02 ) { | 
 
| 116 | 166 | 23 | while ( hdr.num_objects-- ) { | 
 
| 117 | 0 | 166 | if ( !_check_buf(infile, asf->buf, 24, ASF_BLOCK_SIZE) ) { | 
 
| 124 | 0 | 166 | if ( !_check_buf(infile, asf->buf, tmp.size - 24, ASF_BLOCK_SIZE) ) { | 
 
| 132 | 22 | 144 | if ( IsEqualGUID(&tmp.ID, &ASF_Content_Description) ) { | 
 
| 136 | 23 | 121 | else if ( IsEqualGUID(&tmp.ID, &ASF_File_Properties) ) { | 
 
| 140 | 26 | 95 | else if ( IsEqualGUID(&tmp.ID, &ASF_Stream_Properties) ) { | 
 
| 144 | 22 | 73 | else if ( IsEqualGUID(&tmp.ID, &ASF_Extended_Content_Description) ) { | 
 
| 148 | 23 | 50 | else if ( IsEqualGUID(&tmp.ID, &ASF_Codec_List) ) { | 
 
| 152 | 22 | 28 | else if ( IsEqualGUID(&tmp.ID, &ASF_Stream_Bitrate_Properties) ) { | 
 
| 156 | 1 | 27 | else if ( IsEqualGUID(&tmp.ID, &ASF_Content_Encryption) ) { | 
 
| 160 | 1 | 26 | else if ( IsEqualGUID(&tmp.ID, &ASF_Extended_Content_Encryption) ) { | 
 
| 164 | 2 | 24 | else if ( IsEqualGUID(&tmp.ID, &ASF_Script_Command) ) { | 
 
| 168 | 1 | 23 | else if ( IsEqualGUID(&tmp.ID, &ASF_Digital_Signature) ) { | 
 
| 172 | 23 | 0 | else if ( IsEqualGUID(&tmp.ID, &ASF_Header_Extension) ) { | 
 
| 174 | 0 | 23 | if ( !_parse_header_extension(asf, tmp.size) ) { | 
 
| 179 | 0 | 0 | else if ( IsEqualGUID(&tmp.ID, &ASF_Error_Correction) ) { | 
 
| 197 | 0 | 23 | if ( !_check_buf(infile, asf->buf, 24, ASF_BLOCK_SIZE) ) { | 
 
| 203 | 0 | 23 | if ( !IsEqualGUID(&data.ID, &ASF_Data) ) { | 
 
| 218 | 9 | 14 | if (asf->audio_size > asf->file_size - asf->audio_offset) { | 
 
| 224 | 8 | 15 | if (seeking) { | 
 
| 225 | 7 | 1 | if ( hdr.size + data.size < asf->file_size ) { | 
 
| 228 | 0 | 7 | if ( PerlIO_seek(infile, hdr.size + data.size, SEEK_SET) != 0 ) { | 
 
| 235 | 0 | 7 | if ( !_parse_index_objects(asf, asf->file_size - hdr.size - data.size) ) { | 
 
| 246 | 23 | 0 | if (asf->scratch->alloc) | 
 
| 266 | 110 | 22 | for (i = 0; i < 5; i++) { | 
 
| 272 | 110 | 22 | for (i = 0; i < 5; i++) { | 
 
| 275 | 101 | 9 | if ( len[i] ) { | 
 
| 296 | 152 | 22 | while ( count-- ) { | 
 
| 315 | 107 | 45 | if (data_type == TYPE_UNICODE) { | 
 
| 321 | 19 | 26 | else if (data_type == TYPE_BYTE) { | 
 
| 323 | 7 | 12 | if ( !strcmp( SvPVX(key), "WM/Picture" ) ) { | 
 
| 331 | 22 | 4 | else if (data_type == TYPE_BOOL) { | 
 
| 334 | 3 | 1 | else if (data_type == TYPE_DWORD) { | 
 
| 337 | 1 | 0 | else if (data_type == TYPE_QWORD) { | 
 
| 340 | 0 | 0 | else if (data_type == TYPE_WORD) { | 
 
| 350 | 152 | 0 | if (value != NULL) { | 
 
| 408 | 22 | 1 | if ( !broadcast ) { | 
 
| 467 | 26 | 4 | if ( IsEqualGUID(&stream_type, &ASF_Audio_Media) ) { | 
 
| 506 | 0 | 26 | if (channels > 2) { | 
 
| 510 | 0 | 0 | if (codec_id == 0x0163) { | 
 
| 516 | 0 | 26 | if (samplerate > 48000) { | 
 
| 520 | 0 | 0 | if (samplerate > 96000) { | 
 
| 527 | 3 | 23 | if (asf->max_bitrate > 192999) { | 
 
| 530 | 2 | 1 | if (asf->max_bitrate > 384999) { | 
 
| 533 | 0 | 2 | if (asf->max_bitrate > 1499999) { | 
 
| 541 | 20 | 6 | if (asf->valid_profiles & IS_VALID_WMA_BASE) | 
 
| 543 | 1 | 5 | else if (asf->valid_profiles & IS_VALID_WMA_FULL) | 
 
| 545 | 1 | 4 | else if (asf->valid_profiles & IS_VALID_WMA_PRO) | 
 
| 547 | 2 | 2 | else if (asf->valid_profiles & IS_VALID_WMA_LSL) | 
 
| 549 | 0 | 2 | else if (asf->valid_profiles & IS_VALID_WMA_LSL_MULT5) | 
 
| 557 | 25 | 1 | if (is_wma) { | 
 
| 564 | 2 | 2 | else if ( IsEqualGUID(&stream_type, &ASF_Video_Media) ) { | 
 
| 582 | 1 | 1 | else if ( IsEqualGUID(&stream_type, &ASF_Command_Media) ) { | 
 
| 585 | 1 | 0 | else if ( IsEqualGUID(&stream_type, &ASF_JFIF_Media) ) { | 
 
| 592 | 0 | 0 | else if ( IsEqualGUID(&stream_type, &ASF_Degradable_JPEG_Media) ) { | 
 
| 597 | 0 | 0 | else if ( IsEqualGUID(&stream_type, &ASF_File_Transfer_Media) ) { | 
 
| 602 | 0 | 0 | else if ( IsEqualGUID(&stream_type, &ASF_Binary_Media) ) { | 
 
| 608 | 4 | 26 | if ( IsEqualGUID(&ec_type, &ASF_No_Error_Correction) ) { | 
 
| 611 | 25 | 1 | else if ( IsEqualGUID(&ec_type, &ASF_Audio_Spread) ) { | 
 
| 636 | 22 | 1 | if (ext_size > 0) { | 
 
| 637 | 0 | 22 | if (ext_size < 24) { | 
 
| 640 | 0 | 22 | if (ext_size != len - 46) { | 
 
| 650 | 136 | 23 | while (ext_size > 0) { | 
 
| 659 | 22 | 114 | if ( IsEqualGUID(&hdr, &ASF_Metadata) ) { | 
 
| 663 | 28 | 86 | else if ( IsEqualGUID(&hdr, &ASF_Extended_Stream_Properties) ) { | 
 
| 667 | 13 | 73 | else if ( IsEqualGUID(&hdr, &ASF_Language_List) ) { | 
 
| 671 | 4 | 69 | else if ( IsEqualGUID(&hdr, &ASF_Advanced_Mutual_Exclusion) ) { | 
 
| 675 | 4 | 65 | else if ( IsEqualGUID(&hdr, &ASF_Metadata_Library) ) { | 
 
| 679 | 13 | 52 | else if ( IsEqualGUID(&hdr, &ASF_Index_Parameters) ) { | 
 
| 683 | 22 | 30 | else if ( IsEqualGUID(&hdr, &ASF_Compatibility) ) { | 
 
| 688 | 22 | 8 | else if ( IsEqualGUID(&hdr, &ASF_Padding) ) { | 
 
| 693 | 8 | 0 | else if ( IsEqualGUID(&hdr, &ASF_Index_Placeholder) ) { | 
 
| 723 | 66 | 22 | while ( count-- ) { | 
 
| 744 | 27 | 39 | if (data_type == TYPE_UNICODE) { | 
 
| 750 | 0 | 39 | else if (data_type == TYPE_BYTE) { | 
 
| 754 | 12 | 27 | else if (data_type == TYPE_BOOL || data_type == TYPE_WORD) { | 
 
|  | 0 | 12 | else if (data_type == TYPE_BOOL || data_type == TYPE_WORD) { | 
 
| 757 | 12 | 0 | else if (data_type == TYPE_DWORD) { | 
 
| 760 | 0 | 0 | else if (data_type == TYPE_QWORD) { | 
 
| 768 | 66 | 0 | if (value != NULL) { | 
 
| 782 | 66 | 0 | if (stream_number > 0) { | 
 
| 814 | 0 | 28 | if (start_time > 0) { | 
 
| 818 | 0 | 28 | if (end_time > 0) { | 
 
| 831 | 0 | 28 | if ( flags & 0x01 ) | 
 
| 834 | 26 | 2 | if ( flags & 0x02 ) | 
 
| 837 | 0 | 28 | if ( flags & 0x04 ) | 
 
| 840 | 0 | 28 | if ( flags & 0x08 ) | 
 
| 850 | 0 | 28 | while ( stream_name_count-- ) { | 
 
| 865 | 1 | 28 | while ( payload_ext_count-- ) { | 
 
| 876 | 4 | 24 | if (len) { | 
 
| 892 | 15 | 13 | while ( count-- ) { | 
 
| 920 | 0 | 4 | if ( IsEqualGUID(&mutex_type, &ASF_Mutex_Language) ) { | 
 
| 923 | 4 | 0 | else if ( IsEqualGUID(&mutex_type, &ASF_Mutex_Bitrate) ) { | 
 
| 930 | 8 | 4 | while ( count-- ) { | 
 
| 937 | 4 | 0 | if ( !my_hv_exists( asf->info, "mutex_list" ) ) { | 
 
| 944 | 0 | 0 | if (entry != NULL) { | 
 
| 968 | 24 | 23 | while ( count-- ) { | 
 
| 998 | 2 | 22 | if ( strstr( buffer_ptr(asf->scratch), "Lossless" ) ) { | 
 
| 1023 | 28 | 22 | while ( count-- ) { | 
 
| 1038 | 19 | 4 | while ( count-- ) { | 
 
| 1062 | 12 | 7 | if (data_type == TYPE_UNICODE) { | 
 
| 1068 | 2 | 5 | else if (data_type == TYPE_BYTE) { | 
 
| 1070 | 2 | 0 | if ( !strcmp( SvPVX(key), "WM/Picture" ) ) { | 
 
| 1078 | 5 | 0 | else if (data_type == TYPE_BOOL || data_type == TYPE_WORD) { | 
 
|  | 0 | 5 | else if (data_type == TYPE_BOOL || data_type == TYPE_WORD) { | 
 
| 1081 | 0 | 5 | else if (data_type == TYPE_DWORD) { | 
 
| 1084 | 0 | 5 | else if (data_type == TYPE_QWORD) { | 
 
| 1087 | 5 | 0 | else if (data_type == TYPE_GUID) { | 
 
| 1104 | 19 | 0 | if (value != NULL) { | 
 
| 1119 | 0 | 19 | if (stream_number > 0) { | 
 
| 1138 | 17 | 13 | while ( count-- ) { | 
 
| 1166 | 23 | 726 | if ( !my_hv_exists( info, "streams" ) ) { | 
 
| 1173 | 726 | 0 | if (entry != NULL) { | 
 
| 1181 | 749 | 0 | if (streams != NULL) { | 
 
| 1183 | 878 | 23 | for (i = 0; av_len(streams) >= 0 && i <= av_len(streams); i++) { | 
 
|  | 871 | 7 | for (i = 0; av_len(streams) >= 0 && i <= av_len(streams); i++) { | 
 
| 1185 | 871 | 0 | if (stream != NULL) { | 
 
| 1190 | 871 | 0 | if (sn != NULL) { | 
 
| 1191 | 871 | 0 | if ( SvIV(*sn) == stream_number ) { | 
 
|  | 719 | 152 | if ( SvIV(*sn) == stream_number ) { | 
 
| 1203 | 30 | 719 | if ( !found ) { | 
 
| 1220 | 10 | 262 | if ( my_hv_exists_ent( tags, key ) ) { | 
 
| 1222 | 10 | 0 | if (entry != NULL) { | 
 
| 1223 | 2 | 8 | if ( SvROK(*entry) && SvTYPE(SvRV(*entry)) == SVt_PVAV ) { | 
 
|  | 1 | 1 | if ( SvROK(*entry) && SvTYPE(SvRV(*entry)) == SVt_PVAV ) { | 
 
| 1248 | 14 | 7 | while (index_size > 0) { | 
 
| 1250 | 0 | 14 | if ( !_check_buf(asf->infile, asf->buf, 24, ASF_BLOCK_SIZE) ) { | 
 
| 1257 | 0 | 14 | if ( !_check_buf(asf->infile, asf->buf, size - 24, ASF_BLOCK_SIZE) ) { | 
 
| 1261 | 7 | 7 | if ( IsEqualGUID(&tmp, &ASF_Index) ) { | 
 
| 1265 | 7 | 0 | else if ( IsEqualGUID(&tmp, &ASF_Simple_Index) ) { | 
 
| 1299 | 0 | 7 | if (block_count > 1) { | 
 
| 1308 | 0 | 7 | New(0, asf->specs, spec_count * sizeof(*asf->specs), struct asf_index_specs); | 
 
| 1311 | 10 | 7 | for (i = 0; i < spec_count; i++) { | 
 
| 1322 | 10 | 7 | for (i = 0; i < spec_count; i++) { | 
 
| 1328 | 0 | 10 | New(0, asf->specs[i].offsets, entry_count * sizeof(uint32_t), uint32_t); | 
 
| 1331 | 39 | 7 | for (ec = 0; ec < entry_count; ec++) { | 
 
| 1332 | 54 | 39 | for (i = 0; i < spec_count; i++) { | 
 
| 1372 | 1 | 0 | if ( tmp_ptr[0] == 0xFF && tmp_ptr[1] == 0xFE ) { | 
 
|  | 1 | 0 | if ( tmp_ptr[0] == 0xFF && tmp_ptr[1] == 0xFE ) { | 
 
| 1402 | 3 | 2 | while ( type_count-- ) { | 
 
| 1414 | 3 | 2 | while ( command_count-- ) { | 
 
| 1422 | 2 | 1 | if (name_len) { | 
 
| 1459 | 90 | 9 | while ( tmp_ptr[0] != '\0' || tmp_ptr[1] != '\0' ) { | 
 
|  | 0 | 9 | while ( tmp_ptr[0] != '\0' || tmp_ptr[1] != '\0' ) { | 
 
| 1471 | 24 | 9 | while ( tmp_ptr[0] != '\0' || tmp_ptr[1] != '\0' ) { | 
 
|  | 0 | 9 | while ( tmp_ptr[0] != '\0' || tmp_ptr[1] != '\0' ) { | 
 
| 1482 | 2 | 7 | if ( _env_true("AUDIO_SCAN_NO_ARTWORK") ) { | 
 
| 1516 | 0 | 8 | if ( !my_hv_exists(info, "streams") ) { | 
 
| 1521 | 8 | 0 | min_packet_size = SvIV( *(my_hv_fetch(info, "min_packet_size")) ); | 
 
| 1522 | 8 | 0 | max_packet_size = SvIV( *(my_hv_fetch(info, "max_packet_size")) ); | 
 
| 1526 | 0 | 8 | if (min_packet_size != max_packet_size) { | 
 
| 1531 | 8 | 0 | song_length_ms = SvIV( *(my_hv_fetch( info, "song_length_ms" )) ); | 
 
| 1533 | 2 | 6 | if (time_offset > song_length_ms) | 
 
| 1537 | 7 | 1 | if ( asf->spec_count ) { | 
 
| 1541 | 0 | 7 | if (offset_index >= asf->specs[0].entry_count) | 
 
| 1545 | 7 | 7 | while (frame_offset == -1 && offset_index >= 0) { | 
 
|  | 7 | 0 | while (frame_offset == -1 && offset_index >= 0) { | 
 
| 1561 | 1 | 0 | else if (asf->max_bitrate) { | 
 
| 1577 | 14 | 8 | while ( !found && frame_offset >= 0 ) { | 
 
|  | 14 | 0 | while ( !found && frame_offset >= 0 ) { | 
 
| 1582 | 0 | 14 | if ( frame_offset > asf->file_size - 64 ) { | 
 
| 1591 | 0 | 14 | if (time < 0) { | 
 
| 1596 | 9 | 5 | if ( time + duration >= time_offset && time <= time_offset ) { | 
 
|  | 8 | 1 | if ( time + duration >= time_offset && time <= time_offset ) { | 
 
| 1605 | 1 | 5 | if ( | 
 
| 1606 | 1 | 0 | (delta < 0 && (frame_offset - max_packet_size) < asf->audio_offset) | 
 
| 1607 | 5 | 1 | || | 
 
| 1608 | 5 | 0 | (delta > 0 && (frame_offset + max_packet_size) > (asf->audio_offset + asf->audio_size - 64)) | 
 
| 1617 | 5 | 1 | if (delta > 0) { | 
 
| 1631 | 7 | 1 | if (asf->spec_count) { | 
 
| 1633 | 10 | 7 | for (i = 0; i < asf->spec_count; i++) { | 
 
| 1642 | 8 | 0 | if (asf->scratch->alloc) | 
 
| 1658 | 0 | 14 | if ((PerlIO_seek(asf->infile, offset, SEEK_SET)) != 0) { | 
 
| 1664 | 0 | 14 | if ( !_check_buf(asf->infile, asf->scratch, 64, 64) ) { | 
 
| 1671 | 14 | 0 | if (tmp & 0x80) { | 
 
| 1684 | 14 | 0 | 1 + GETLEN2b((tmp >> 1) & 0x03) + | 
 
| 1685 | 14 | 0 | GETLEN2b((tmp >> 3) & 0x03) + | 
 
| 1686 | 14 | 0 | GETLEN2b((tmp >> 5) & 0x03) |