CCodec: handle delay config update
Bug: 130223947
Test: atest CtsMediaTestCases -- --module-arg CtsMediaTestCases:size:small
Test: manual test with software codecs changing delay randomly
Change-Id: Ia574522a44df22f9638bc4049d7418843a76b57b
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.h b/media/codec2/sfplugin/CCodecBufferChannel.h
index 9aec82d..ae57678 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.h
+++ b/media/codec2/sfplugin/CCodecBufferChannel.h
@@ -209,7 +209,7 @@
void feedInputBufferIfAvailable();
void feedInputBufferIfAvailableInternal();
- status_t queueInputBufferInternal(const sp<MediaCodecBuffer> &buffer);
+ status_t queueInputBufferInternal(sp<MediaCodecBuffer> buffer);
bool handleWork(
std::unique_ptr<C2Work> work, const sp<AMessage> &outputFormat,
const C2StreamInitDataInfo::output *initData);
@@ -228,13 +228,26 @@
QueueSync mQueueSync;
std::vector<std::unique_ptr<C2Param>> mParamsToBeSet;
- size_t mNumInputSlots;
- size_t mNumOutputSlots;
size_t mDelay;
- Mutexed<std::unique_ptr<InputBuffers>> mInputBuffers;
+ struct Input {
+ Input();
+
+ std::unique_ptr<InputBuffers> buffers;
+ size_t numSlots;
+ FlexBuffersImpl extraBuffers;
+ size_t numExtraSlots;
+ uint32_t inputDelay;
+ uint32_t pipelineDelay;
+ };
+ Mutexed<Input> mInput;
+ struct Output {
+ std::unique_ptr<OutputBuffers> buffers;
+ size_t numSlots;
+ uint32_t outputDelay;
+ };
+ Mutexed<Output> mOutput;
Mutexed<std::list<sp<ABuffer>>> mFlushedConfigs;
- Mutexed<std::unique_ptr<OutputBuffers>> mOutputBuffers;
std::atomic_uint64_t mFrameIndex;
std::atomic_uint64_t mFirstValidFrameIndex;