Download Latest Version bw_tabuleiro_3.3.0 build 00044.7z (81.7 kB)
Email in envelope

Get an email when there's a new version of fleck

Home
Name Modified Size InfoDownloads / Week
FlecK mp3 decoder 2008-03-31
readme.txt 2026-05-23 2.0 kB
bw_tabuleiro_3.3.0 build 00044.7z 2026-05-23 81.7 kB
bw_tabuleiro_3.2.9 build 00043.7z 2024-12-24 18.9 MB
bw_tabuleiro_3.2.7 build 00041.7z 2024-09-30 9.1 MB
bw_tabuleiro_3.2.6 build 00040.zip 2021-10-29 32.5 MB
bw_tabuleiro_3.2.5 build 00039.zip 2021-10-29 32.0 MB
bw_tabuleiro_3.2.2 build 00035.zip 2021-10-28 32.0 MB
bw_tabuleiro_3.2.1 build 00034.zip 2021-10-28 32.0 MB
bw_tabuleiro_3.2.0 build 00033.zip 2021-10-28 31.5 MB
bw_tabuleiro_3.1.8 build 00029.zip 2021-10-03 12.4 MB
bw_tabuleiro_3.1.7 build 00028.zip 2021-10-03 5.2 MB
bw_fleck_3.1.6 build 00027.zip 2021-04-04 11.6 MB
bw_tabuleiro_(fleck)_3.1.5_build_00025.zip 2020-12-11 6.3 MB
rsp_106.rar 2014-04-16 3.0 MB
rsp_105.rar 2014-04-16 1.6 MB
fleck 104.rar 2014-04-14 820.1 kB
rsp_fleck_103_src.zip 2011-03-10 1.6 MB
rsp_fleck_1.0.2_build0005.zip 2010-04-21 271.3 kB
Totals: 19 Items   230.8 MB 1
# mp32wav — Decodificador MP3 Paralelo Multi-Thread (NUMA-Aware)

Conversor de MP3 para WAV utilizando **libmad** com decodificação paralela multi-thread, herdando a arquitetura de hiperescala do **Gzip3** (compartimentos, SMT-aware, NUMA-aware, thermal capping).

## Arquitetura

### Pipeline
1. **Escaneamento de frames**: Varre o arquivo MP3, localiza todos os sync words (`0xFFF`) e calcula tamanho/posição de cada frame via tabela de bitrate
2. **Divisão em ranges contíguos**: Cada thread recebe um bloco sequencial de frames (respeita o *bit reservoir* do Layer 3)
3. **Decodificação paralela**: Cada thread cria seu próprio `mad_stream` + `mad_frame` + `mad_synth` — zero compartilhamento de estado
4. **Reordenação implícita**: Threads escrevem direto no slot global `pcm_output[frame_id]` — sem locks, sem reordenação extra
5. **Escrita WAV**: Cabeçalho PCM 16-bit + dados contíguos

### Herança do Gzip3
- **NUMA-aware**: Alocação de memória nos nós corretos
- **SMT-aware**: Núcleos físicos primeiro, virtuais depois
- **Thermal capping**: Threads ociosas finalizam cedo (previsto)
- **Controladores de barramento**: Semáforos de vazão de RAM (64 controladores)

## Compilação

```bash
cd mp32wav
make
```

Pré-requisitos: `libmad0-dev`, `libnuma-dev`

```bash
sudo apt install libmad0-dev libnuma-dev
```

## Uso

```bash
./mp32wav <entrada.mp3> <saida.wav> <threads>
```

Exemplo:
```bash
./mp32wav musica.mp3 musica.wav 8
```

## Performance

A aceleração depende do número de frames MP3 e da quantidade de threads. Para arquivos longos (muitos frames), a escalabilidade é linear até o limite de núcleos físicos disponíveis.

## Estrutura dos Arquivos

| Arquivo | Descrição |
|---------|-----------|
| `mp32wav.c` | Main, scan de frames, distribuição de tarefas, escrita WAV |
| `decode.c` | Worker thread com mad_frame_decode + mad_synth |
| `mp32wav.h` | Structs, defines, declarações |

## Licença

GPLv3 (mesma do Gzip3).
Source: readme.txt, updated 2026-05-23