From: <sv...@op...> - 2025-06-09 16:58:06
|
Author: manx Date: Mon Jun 9 18:57:54 2025 New Revision: 23447 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=23447 Log: Merged revision(s) 23444 from branches/OpenMPT-1.30: Merged revision(s) 23436 from trunk/OpenMPT: [Fix] openmpt123: We need to also consider file extensions of subformats. This is necessary because MP3 is a subformat and the major format lists only .m1a as file extension. ........ ........ Modified: branches/OpenMPT-1.29/ (props changed) branches/OpenMPT-1.29/openmpt123/openmpt123_sndfile.hpp Modified: branches/OpenMPT-1.29/openmpt123/openmpt123_sndfile.hpp ============================================================================== --- branches/OpenMPT-1.29/openmpt123/openmpt123_sndfile.hpp Mon Jun 9 18:57:32 2025 (r23446) +++ branches/OpenMPT-1.29/openmpt123/openmpt123_sndfile.hpp Mon Jun 9 18:57:54 2025 (r23447) @@ -104,7 +104,7 @@ switch ( match_mode ) { case match_print: log << "sndfile: " - << ( format_info.name ? format_info.name : "" ) << " (" << ( format_info.extension ? format_info.extension : "" ) << ")" + << ( format_info.name ? format_info.name : "" ) << " (" << ( subformat_info.extension ? subformat_info.extension : format_info.extension ? format_info.extension : "" ) << ")" << " / " << ( subformat_info.name ? subformat_info.name : "" ) << " [" @@ -117,6 +117,13 @@ case match_recurse: break; case match_exact: + if ( subformat_info.extension && ( extension == subformat_info.extension ) ) { + if ( flags.use_float && ( subformat_info.format == SF_FORMAT_FLOAT ) ) { + return matched_result( format_info, subformat_info, match_mode ); + } else if ( !flags.use_float && ( subformat_info.format == SF_FORMAT_PCM_16 ) ) { + return matched_result( format_info, subformat_info, match_mode ); + } + } if ( format_info.extension && ( extension == format_info.extension ) ) { if ( flags.use_float && ( subformat_info.format == SF_FORMAT_FLOAT ) ) { return matched_result( format_info, subformat_info, match_mode ); @@ -126,6 +133,13 @@ } break; case match_better: + if ( subformat_info.extension && ( extension == subformat_info.extension ) ) { + if ( flags.use_float && ( subformat_info.format == SF_FORMAT_FLOAT || subformat_info.format == SF_FORMAT_DOUBLE ) ) { + return matched_result( format_info, subformat_info, match_mode ); + } else if ( !flags.use_float && ( subformat_info.format & ( subformat_info.format == SF_FORMAT_PCM_16 || subformat_info.format == SF_FORMAT_PCM_24 || subformat_info.format == SF_FORMAT_PCM_32 ) ) ) { + return matched_result( format_info, subformat_info, match_mode ); + } + } if ( format_info.extension && ( extension == format_info.extension ) ) { if ( flags.use_float && ( subformat_info.format == SF_FORMAT_FLOAT || subformat_info.format == SF_FORMAT_DOUBLE ) ) { return matched_result( format_info, subformat_info, match_mode ); @@ -135,6 +149,9 @@ } break; case match_any: + if ( subformat_info.extension && ( extension == subformat_info.extension ) ) { + return matched_result( format_info, subformat_info, match_mode ); + } if ( format_info.extension && ( extension == format_info.extension ) ) { return matched_result( format_info, subformat_info, match_mode ); } |