codec2: add parameter C2PortSurfaceAllocatorTuning

Use C2PortSurfaceAllocatorTuning parameter to suggest BufferQueue-backed
allocator ID if outputting to a surface.

Bug: 79239042
Bug: 80124477
Test: run CtsMediaTestCases of Codec2.0 with plugin available.
Test: android.media.cts.MediaPlayerTest#testLocalVideo_MP4_H264_480x360_1000kbps_25fps_AAC_Stereo_128kbps_44110Hz (use buffer queue)
Test: android.media.cts.EncodeDecodeTest#testEncodeDecodeVideoFromBufferToBuffer720p (no buffer queue)
Change-Id: I171e966c2ea708c7db840ea67fd23762d42365f0
diff --git a/C2VDAComponent.cpp b/C2VDAComponent.cpp
index 65656e3..1f30f7d 100644
--- a/C2VDAComponent.cpp
+++ b/C2VDAComponent.cpp
@@ -147,10 +147,11 @@
     bool secureMode = name.find(".secure") != std::string::npos;
     C2Allocator::id_t inputAllocators[] = {secureMode ? C2VDAAllocatorStore::SECURE_LINEAR
                                                       : C2PlatformAllocatorStore::ION};
-    C2Allocator::id_t outputAllocators[] = {secureMode ? C2VDAAllocatorStore::SECURE_GRAPHIC
-                                                       : C2VDAAllocatorStore::V4L2_BUFFERQUEUE};
-    // TODO: change as below after ag/4660016 is landed.
-    // C2Allocator::id_t outputAllocators[] = {C2VDAAllocatorStore::V4L2_BUFFERPOOL};
+
+    C2Allocator::id_t outputAllocators[] = {C2VDAAllocatorStore::V4L2_BUFFERPOOL};
+
+    C2Allocator::id_t surfaceAllocator = secureMode ? C2VDAAllocatorStore::SECURE_GRAPHIC
+                                                    : C2VDAAllocatorStore::V4L2_BUFFERQUEUE;
 
     addParameter(
             DefineParam(mInputAllocatorIds, C2_PARAMKEY_INPUT_ALLOCATORS)
@@ -162,6 +163,10 @@
                     .withConstValue(C2PortAllocatorsTuning::output::AllocShared(outputAllocators))
                     .build());
 
+    addParameter(DefineParam(mOutputSurfaceAllocatorId, C2_PARAMKEY_OUTPUT_SURFACE_ALLOCATOR)
+                         .withConstValue(new C2PortSurfaceAllocatorTuning::output(surfaceAllocator))
+                         .build());
+
     C2BlockPool::local_id_t outputBlockPools[] = {kDefaultOutputBlockPool};
 
     addParameter(