MediaCodec: Use IProducerListener and MediaCodec's generation number
Use MediaCodec's generation number. And use IProducerListener when
connect to the surface if Codec implementation provides the listener.
Bug: 254050314
Test: atest android.media.decoder.cts.AdaptivePlaybackTest
Change-Id: If04c1b7be1cc7db39099c57a8905a702113833c5
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.h b/media/codec2/sfplugin/CCodecBufferChannel.h
index 2cdf59d..f23cb83 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.h
+++ b/media/codec2/sfplugin/CCodecBufferChannel.h
@@ -91,6 +91,7 @@
status_t renderOutputBuffer(
const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override;
void pollForRenderedBuffers() override;
+ void onBufferReleasedFromOutputSurface(uint32_t generation) override;
status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override;
void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override;
void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override;
@@ -105,7 +106,7 @@
/**
* Set output graphic surface for rendering.
*/
- status_t setSurface(const sp<Surface> &surface, bool pushBlankBuffer);
+ status_t setSurface(const sp<Surface> &surface, uint32_t generation, bool pushBlankBuffer);
/**
* Set GraphicBufferSource object from which the component extracts input