I2S: fix mkv muxing for files#24666
Merged
Merged
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description:
File recording — seekable, cluster finalization works, but Position(int64) uses file_->seek() which returns a bool from the Arduino File API, not 0 on success. The libwebm code expects 0 on success, non-zero on failure — but File::seek() returns true on success. This means every seekback was treated as a failure due to incompatible return values.
Besides something must have changed in between regarding task callback timings in the IDF, where I encountered packet losses on audio read due to delay drift or something like that. Thus it is the simplest solution to allow i2s_read to block up to the time for one frame read to (pretty much) guarantee a full frame, which will now silently happen from time to time. This removed noise in OPUS recordings in my tests.
Some small refactoring for better error report in debug and calling xTaskDelayUntil directly and not through a macro.
Checklist:
NOTE: The code change must pass CI tests. Your PR cannot be merged unless tests pass