@@ -39,6 +39,8 @@ import com.pedro.encoder.utils.gl.AspectRatioMode
3939import com.pedro.encoder.utils.gl.GlUtil
4040import com.pedro.library.util.Filter
4141import com.pedro.library.util.SensorRotationManager
42+ import com.pedro.library.view.preview.MultiPreviewConfig
43+ import com.pedro.library.view.preview.PreviewSurfaceInfo
4244import java.util.concurrent.BlockingQueue
4345import java.util.concurrent.ConcurrentHashMap
4446import java.util.concurrent.ExecutorService
@@ -63,32 +65,6 @@ class GlStreamInterface(private val context: Context): OnFrameAvailableListener,
6365 private val multiPreviewSurfaceManagers = ConcurrentHashMap <Surface , PreviewSurfaceInfo >()
6466 private val mainRender = MainRender ()
6567
66- /* *
67- * User-facing configuration for a multi-preview surface.
68- * All configuration fields are mutable to support dynamic updates.
69- *
70- * @param width the width of the preview. 0 to use preview or encoder resolution
71- * @param height the height of the preview. 0 to use preview or encoder resolution
72- * @param horizontalFlip true to flip horizontally
73- * @param verticalFlip true to flip vertically
74- * @param aspectRatioMode aspect ratio mode for this surface
75- * @param isPortrait true for portrait orientation, false for landscape
76- * @param viewPort viewport for this surface. null for full screen
77- */
78- data class MultiPreviewConfig (
79- var width : Int = 0 ,
80- var height : Int = 0 ,
81- var horizontalFlip : Boolean = false ,
82- var verticalFlip : Boolean = false ,
83- var aspectRatioMode : AspectRatioMode = AspectRatioMode .Adjust ,
84- var isPortrait : Boolean = false ,
85- var viewPort : ViewPort ? = null
86- )
87-
88- data class PreviewSurfaceInfo (
89- val surfaceManager : SurfaceManager ,
90- val config : MultiPreviewConfig
91- )
9268 private var encoderWidth = 0
9369 private var encoderHeight = 0
9470 private var encoderRecordWidth = 0
@@ -419,10 +395,18 @@ class GlStreamInterface(private val context: Context): OnFrameAvailableListener,
419395 val w = if (config.width > 0 ) config.width else if (previewWidth == 0 ) encoderWidth else previewWidth
420396 val h = if (config.height > 0 ) config.height else if (previewHeight == 0 ) encoderHeight else previewHeight
421397
422- val surfaceMgr = SurfaceManager ()
423- surfaceMgr.eglSetup(surface, surfaceManager)
424- val finalConfig = MultiPreviewConfig (w, h, config.horizontalFlip, config.verticalFlip, config.aspectRatioMode, config.isPortrait, config.viewPort)
425- multiPreviewSurfaceManagers[surface] = PreviewSurfaceInfo (surfaceMgr, finalConfig)
398+ val surfaceManager = SurfaceManager ()
399+ surfaceManager.eglSetup(surface, this @GlStreamInterface.surfaceManager)
400+ val finalConfig = MultiPreviewConfig (
401+ w,
402+ h,
403+ config.horizontalFlip,
404+ config.verticalFlip,
405+ config.aspectRatioMode,
406+ config.isPortrait,
407+ config.viewPort
408+ )
409+ multiPreviewSurfaceManagers[surface] = PreviewSurfaceInfo (surfaceManager, finalConfig)
426410 }
427411 }
428412
0 commit comments