Download Latest Version bw_tabuleiro_3.2.6 build 00040.zip (32.5 MB) Google Add to Preferred Sources
Home / OldFiles
Name Modified Size InfoDownloads / Week
Parent folder
tabuleiro.zip 2008-03-27 975.9 kB
Totals: 1 Item   975.9 kB 0
# 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