Repository navigation
feat(voice): carry channel runtime and codec support #52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
102 commits
Select commit
Hold shift + click to select a range
ad69327
chore(vendor): bump tinyagents submodule
senamakel d9e5b89
feat(codec): add audio probe, transcode, and waveform APIs
senamakel 153b461
fix(codec): repair M4A muxer output and trim AAC padding
senamakel 37914ef
feat(codec): add independent Opus decoding and harden M4A repair
senamakel 3290080
feat(codec): add voice-note codec probe, transcode, and waveform APIs
senamakel ad1b5cd
feat(codec): add MP3 source decoding and declared input codec
senamakel 0628e2c
test(codecs): cover multiframe opus and aac round trips
senamakel 3af2db1
chore(vendor): align tinyagents with epic base
senamakel d525450
test(codecs): tidy rms helper and propagate errors in rejection test
senamakel 5d2d6dd
chore(deps): update tinyvoice-module lockfile for storage and provide…
senamakel b3a3071
test(codec): cover rejection of empty, oversized, and malformed inputs
senamakel 68bc5a6
test(codec): update opus head fields in empty stream test
senamakel 8c0be05
test(codec): cover empty input rejection for opus and aac
senamakel 48e218f
feat(tinyvoice): add long opus verification example
senamakel cdd228a
chore(tinyvoice): remove verify_long_opus example
senamakel 277b2a6
test(codec): cover waveform bucket math at 32-bit sample limits
senamakel f8ea0f8
fix(codec): compute waveform bucket ranges with wide math
senamakel 8b6c1c4
fix(service): bound concurrent codec work with a semaphore
senamakel af70b63
test(service): cover codec worker offload and capacity rejection
senamakel 6c24d6d
test(codec): cover waveform bucket range at clip boundaries
senamakel 23cb97f
chore: files changed crates/tinyvoice-module/src/service/mod_tests.rs
senamakel d4651e8
chore: files changed crates/tinyvoice/src/codec/codec_tests.rs
senamakel a51e178
test(codec): rewrite invalid wav header cases without hound writer
senamakel c61a701
test(codec): drop short aac assertion from symphonia test
senamakel 9ee17a2
test(codec): assert symphonia rejects m4a aac
senamakel 2e31d71
chore: add live module coverage report
senamakel 1b2b67a
chore: ignore live module coverage output
senamakel 036a1b7
chore: drop generated coverage report
senamakel de2b696
chore: files changed crates/tinyvoice-module/src/service/mod.rs,crate…
senamakel 94e04b1
chore: files changed crates/tinyvoice-module/src/service/mod.rs
senamakel 4df68c1
test(codec): cover SLConfig descriptor in repaired m4a
senamakel 2a7c104
fix(codec): write SLConfig predefined value in place
senamakel 03dd09d
test(codecs): cover five-minute aac round trip and length limit
senamakel 7832cf7
fix(codec): allow bounded AAC frame padding in duration checks
senamakel 478367d
test(codec): cover m4a sl config and five minute padding
senamakel 720d7ca
test(codec): reformat sl config descriptor assertion
senamakel 97f74f1
chore: files changed crates/tinyvoice/tests/codecs.rs
senamakel 86e9e01
chore: files changed crates/tinyvoice/src/codec/mod.rs
senamakel 51a7634
refactor(codec): rename duration limit constant and reformat track lo…
senamakel 1f15788
chore: files changed crates/tinyvoice/src/codec/mod.rs
senamakel 0ce2e73
test(codec): log parsed mp4 timing metadata in aac fixture test
senamakel 5b658d5
refactor(codec): simplify m4a duration limit check
senamakel 82c74c1
refactor(codec): extract m4a playable sample calculation
senamakel 91a3622
fix(codec): sum all m4a edit list entries for duration
senamakel 505d9df
chore(tinyvoice): remove trailing blank line from CC0 fixture
senamakel c2889da
fix(codec): use the selected symphonia track id for m4a duration
senamakel edb6fed
test(codec): assert m4a duration against media header timescale
senamakel 7dffa12
test(codec): add context to m4a duration test failures
senamakel 28d00da
test(codec): repair sl config descriptors in aac fixture
senamakel 0758929
test(codec): assert selected m4a track differs from the other track
senamakel 843686b
test(codec): use checked conversion for aac frame duration
senamakel 7a8e3ac
Merge pull request #48 from senamakel/epic-7964-47-voice-codecs
senamakel ea9a2b0
chore(vendor): bump tinyagents submodule
senamakel a57723b
feat(tinyvoice-bus): add codec contract tests
senamakel c7eb85d
chore(codec): move codec contract test into unit test module
senamakel b5cd215
test(codec): move codec tests to integration suite
senamakel ee6201a
feat(bus): add AmrNb audio codec variant
senamakel fbdf5bf
feat(codec): add AMR-NB codec variant and detection
senamakel be356d1
fix(codec): reject AMR-NB in symphonia decoder
senamakel e1825eb
feat(codec): add AMR-NB encode and decode support
senamakel 27069de
feat(service): support AMR-NB codec on the voice bus
senamakel 93f17de
test(amr): add AMR-NB mode 0 fixture and reference PCM
senamakel fe3c127
docs(tinyvoice): document AMR-NB fixture provenance
senamakel ea98d86
test(amr): add AMR-NB encoder fixtures for mode 7
senamakel 556bde3
test(codec): add AMR-NB 3GPP reference conformance tests
senamakel 6f7921b
ci: add AMR minimum Rust toolchain job
senamakel 52df5a4
refactor(codec): simplify AMR-NB frame limit and test sample generation
senamakel 7eca2ea
test(service): cover amr-nb probe and decode over module contract
senamakel 09a3473
chore: bump crate versions and wire contract to 1.12
senamakel cf89494
docs(specs): document AMR-NB codec support
senamakel 6c157a0
docs: document optional amr-nb feature and its Rust 1.91 requirement
senamakel f048b48
test(codec): cover amr-nb transcode resampling and downmix
senamakel 96d5f7a
style(codec): apply rustfmt formatting
senamakel 05a9b52
chore(codec): remove unused AMR audio codec import
senamakel 331ee32
chore(tinyvoice): rename AMR codec dependency and document sample rates
senamakel bd3ff64
test(codec): update AMR-NB fixture duration to 500 ms
senamakel 06b28f7
chore(vendor): update tinyagents submodule
senamakel 521e3da
chore(deps): add rvoip-codec-core and bump tinyvoice crates
senamakel ac601ff
chore(codec): import AmrStorageReader for amr-nb feature
senamakel 2df1a1f
test(service): cover amr-nb probe, transcode and waveform over module…
senamakel 7642e8a
feat(module): verify AMR codec over the module contract
senamakel 8166294
docs(codec): wrap DingTalk in backticks in AmrNb doc comment
senamakel feb80ef
test(module): assert exact AMR-NB durations in codec tests
senamakel e5fc5db
refactor(codec): rename AMR codec locals for clarity
senamakel a593786
test(codec): compare AMR-NB PCM samples by bit pattern
senamakel c2d8a40
chore(deps): bump tinyvoice crates to 0.4.0 and add rvoip-codec-core
senamakel 9da6996
test: update expected WAV fixture duration to 2,370 ms
senamakel ddd32f1
refactor: use Duration::from_mins for 60-second TTLs
senamakel 3059c47
test: use Duration::from_mins for one-minute advances
senamakel 18eac96
test(live): use from_mins for the one-minute advance
senamakel 0490693
docs: bump module contract references to 1.12
senamakel c709e9d
test(codec): return Result from AMR-NB round-trip test
senamakel f07316b
test(codec): use as_chunks for PCM byte parsing
senamakel bfa9df4
test(codec): use assert_eq for remainder checks
senamakel 4ce3f69
test(codec): annotate empty slice comparisons with explicit type
senamakel 163894e
test(codec): cover AMR-NB storage decode with bad quality and no-data…
senamakel 0d218c3
test(amr): add AMR-NB DTX mode 0 fixtures
senamakel 6682c72
test(codec): cover AMR-NB DTX and comfort-noise decoding
senamakel 321014b
Merge pull request #8 from senamakel/epic-7964-22-long-tail
senamakel f7f2617
Merge channel migration voice codec support
senamakel 01465e7
chore(deps): align migrated module dependencies
senamakel 04c51f6
chore(release): defer library version bump to release workflow
senamakel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -26,3 +26,4 @@ worktrees/* | |
| .idea/ | ||
| .vscode/ | ||
| *.swp | ||
| /live-module-coverage.json | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win
Add
--lockedto the minimum-Rust cargo commands.Both commands can resolve dependencies that differ from
Cargo.lock. The job exists to verify the declared 1.91 MSRV. An unlocked resolution can pick a newer transitive crate with a higher MSRV, or crates that differ from the ones the author tested. That makes the job non-reproducible. The PR description says the author validated with--locked, so CI should use the same flag.🔧 Proposed fix
Each manifest needs its own
Cargo.lock. Confirm thatcrates/tinyvoice/Cargo.lockandcrates/tinyvoice-module/Cargo.lock(or a workspace lock) are committed before you apply this.📝 Committable suggestion
🤖 Prompt for AI Agents
Source: Learnings