trunk/src/emu/sound/mpeg_audio.c
| r26463 | r26464 | |
| 92 | 92 | abort(); |
| 93 | 93 | case 4: |
| 94 | 94 | try { |
| 95 | | read_header_amm(variant == 2); |
| 95 | if (!read_header_amm(variant == 2)) |
| 96 | return false; |
| 96 | 97 | read_data_mpeg2(); |
| 97 | 98 | decode_mpeg2(output, output_samples); |
| 98 | 99 | } catch(limit_hit) { |
| r26463 | r26464 | |
| 110 | 111 | return true; |
| 111 | 112 | } |
| 112 | 113 | |
| 113 | | void mpeg_audio::read_header_amm(bool layer25) |
| 114 | bool mpeg_audio::read_header_amm(bool layer25) |
| 114 | 115 | { |
| 115 | 116 | gb(1); // unused |
| 116 | 117 | int full_packets_count = gb(4); // max 12 |
| r26463 | r26464 | |
| 122 | 123 | int stereo_mode_ext = gb(2); |
| 123 | 124 | param_index = gb(3); |
| 124 | 125 | gb(1); // must be zero |
| 126 | |
| 127 | if (last_frame_number == 0) |
| 128 | return false; |
| 125 | 129 | |
| 126 | 130 | channel_count = stereo_mode != 3 ? 2 : 1; |
| 127 | 131 | |
| r26463 | r26464 | |
| 131 | 135 | joint_bands = joint_band_counts[stereo_mode_ext]; |
| 132 | 136 | if(joint_bands > total_bands ) |
| 133 | 137 | joint_bands = total_bands; |
| 138 | |
| 139 | return true; |
| 134 | 140 | } |
| 135 | 141 | |
| 136 | 142 | void mpeg_audio::read_header_mpeg2(bool layer25) |