# Guia de Codificacion y Conversion

## Resumen

El modulo `Codificador` permite convertir archivos de audio entre formatos
usando los sub-encoders de BASSenc:
- bassenc_mp3.dll (LAME)
- bassenc_flac.dll
- bassenc_ogg.dll (Vorbis)
- bassenc_opus.dll

## Uso con API de Alto Nivel

```python
from basskit.alto_nivel import inicializar, liberar
from basskit.alto_nivel.codificador import Codificador

inicializar()
cod = Codificador()

# Convertir WAV a MP3
cod.convertir("cancion.wav", "cancion.mp3")

# Convertir a FLAC
cod.convertir("cancion.wav", "cancion.flac")

# Convertir a OGG Vorbis
cod.convertir("cancion.wav", "cancion.ogg")

# Convertir a Opus
cod.convertir("cancion.wav", "cancion.opus")

liberar()
```

## Opciones de Encoder

Se pueden pasar opciones especificas a cada encoder:

```python
# MP3 con calidad especifica (opciones LAME)
cod.convertir("input.wav", "output.mp3", opciones="--preset standard")
cod.convertir("input.wav", "output.mp3", opciones="-b 320")

# FLAC con nivel de compresion
cod.convertir("input.wav", "output.flac", opciones="-5")

# OGG con calidad
cod.convertir("input.wav", "output.ogg", opciones="-q 8")

# Opus con bitrate
cod.convertir("input.wav", "output.opus", opciones="--bitrate 128")
```

## Grabacion a MP3 (Bajo Nivel)

```python
from basskit.dlls.bass import bass
from basskit.dlls.addons import bassenc_mp3
from basskit.dlls.bassenc import bassenc
from basskit.constantes.bass import BASS_SAMPLE_FLOAT, BASS_RECORD_PAUSE

bass.BASS_Init(0, 44100, 0, 0, None)
bass.BASS_RecordInit(-1)

# Crear canal de grabacion
rec = bass.BASS_RecordStart(44100, 2, BASS_SAMPLE_FLOAT | BASS_RECORD_PAUSE, None, None)

# Iniciar encoder MP3 sobre el canal
encoder = bassenc_mp3.BASS_Encode_MP3_StartFile(rec, b"--preset standard", 0, b"grabacion.mp3")

# Despausar para iniciar
bass.BASS_ChannelPlay(rec, 0)

# ... grabar ...

# Detener
bassenc.BASS_Encode_Stop(encoder)
bass.BASS_ChannelStop(rec)
bass.BASS_StreamFree(rec)
bass.BASS_RecordFree()
bass.BASS_Free()
```

## Formatos Soportados

| Formato | DLL | Extension | Notas |
|---------|-----|-----------|-------|
| MP3 | bassenc_mp3.dll | .mp3 | LAME encoder |
| FLAC | bassenc_flac.dll | .flac | Sin perdida |
| OGG | bassenc_ogg.dll | .ogg | Vorbis |
| Opus | bassenc_opus.dll | .opus | Baja latencia |
| WAV | bassenc.dll | .wav | PCM directo |
