77469d5ee86f7f67edcd068ed9cf8ec62c30f7d1
Fix three critical bugs in pcm_to_audio_segment():
1. **Incorrect sign extension for I24**
- Before: i32::from_le_bytes([b0, b1, b2, 0]) >> 8
Always produces positive values for negative samples
- After: Proper sign extension using bit 7 of MSB
buf[3] = 0xFF if (b2 & 0x80) != 0
2. **Silent clamping instead of error handling**
- Before: I24::new_clamped() - silently clamps invalid values
- After: I24::new().ok_or_else() - returns error for invalid values
Consistent with FileSource/HttpSource behavior
3. **Missing validation before chunks_exact()**
- Before: chunks_exact() panics if size not multiple of frame_bytes
- After: Explicit validation with descriptive error message
Implementation now matches the reference pattern from pmoaudio's
FileSource and HttpSource (file_source.rs:326-357, http_source.rs:440-470).
Verified: cargo check passes successfully.
Développement de l'application PMOMusic en RUST
Création de la structure
mkdir pizzicato
cd pizzicato
jj git init
touch Readme.md
Maintenant on peu créer l'application PMOMusic
cargo new PMOMusic
On ajoute un fichier Cargo.toml décrivant le workspace pizzicato qui ne contient que notre nouvelle application
[workspace]
members = ["PMOMusic"]
On crée le package pmoupnp
cargo new pmoupnp --lib
Cela modifie automatiquement le fichier Cargo.toml créé juste avant.
Dans ce package un sous module statevariable
cd pmoupnp/src
mkdir statevariable
Petite expériences jujutsu
- Je veux voir l'historique
jj log
@ lkmlpmnk eric@coissac.eu 2025-09-12 09:48:38 a27b6a9a
│ On commence les states variables
○ mzvokmpk eric@coissac.eu 2025-09-12 09:32:27 926827f3
│ Retire le répertoir target du suivi
○ skknrvut eric@coissac.eu 2025-09-12 09:05:27 cbad5c34
│ Initialisation des l'arborescence de répertoires
◆ zzzzzzzz root() 00000000
- Je veux me mettre dans un commit:
jj edit mzvokmpk
je veux créer un nouveau commit à la suite d'un autre et m'y placer
jj new mzvokmpk
mzvokmpk peut être @ pour dans le commit courant ou @- pour dans le parent
- je veux arreter de suivre
- un fichier
jj file untrack <filename>
- un répertoire
find dirname -type f -exec jj file untrack {} \;
Dans tous les cas ne pas oublier d'inscrire le fichier ou le repertoire dans le .gitignore
- je veux déplacer un commit comme un sous commit d'un aute
jj rebase -d destination -r source
eventuellement faire un
jj resolve --all
jj rebase --continue
pour résoudre les conflits
Installer rust sur mac
brew install rustup-init
rustup-init
rustup default stable
Description
Languages
Rust
73%
HTML
11.6%
Vue
9.5%
TypeScript
2.6%
Python
1.3%
Other
1.9%