From 90344d14b0237b4c85972fe9fff103d06fb70490 Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Wed, 1 Feb 2023 09:13:01 +0800 Subject: [PATCH] =?UTF-8?q?VideoView=E5=8A=A0=E4=B8=8A=E9=A0=90=E8=A8=AD?= =?UTF-8?q?=E7=8B=80=E6=85=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/mainScreen/VideoView.kt | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt index fdf68d8..733ca42 100644 --- a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt @@ -51,7 +51,7 @@ class VideoView : ConstraintLayout, SurfaceHolder.Callback, GstCallback { private var retryRunnable = object : Runnable { override fun run() { play() - Log.e("${TAG}_$tag", "Retry count: $retryCount") + //Log.e("${TAG}_$tag", "Retry count: $retryCount") } } @@ -73,12 +73,17 @@ class VideoView : ConstraintLayout, SurfaceHolder.Callback, GstCallback { videoView.holder.addCallback(this) gstLibrary = GstLibrary(context) gstLibrary.setOnStatusChangeListener(this) + + view.textDeviceName.isVisible = false + isPlaying = false + isLoading = false } fun setData(device: Device?) { if (device == null) { view.textDeviceName.isVisible = false isPlaying = false + isLoading = false return } this.data = device @@ -111,6 +116,9 @@ class VideoView : ConstraintLayout, SurfaceHolder.Callback, GstCallback { override fun surfaceCreated(holder: SurfaceHolder) { Log.d("${TAG}_$tag", "Surface created: " + holder.surface) + if (this::gstLibrary.isInitialized) { + gstLibrary.setSurfaceHolder(holder) + } } override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) { @@ -123,9 +131,9 @@ class VideoView : ConstraintLayout, SurfaceHolder.Callback, GstCallback { override fun surfaceDestroyed(p0: SurfaceHolder) { Log.d("${TAG}_$tag", "Surface destroyed") // TODO: 如果呼叫 releaseSurface(),會閃退 - /*if (this::gstLibrary.isInitialized) { + if (this::gstLibrary.isInitialized) { gstLibrary.releaseSurface() - }*/ + } } override fun onStatus(gstStatus: GstStatus?) { // onStatus 不是在主執行緒,因此透過 Handler 發訊息到主執行緒去執行 @@ -137,11 +145,11 @@ class VideoView : ConstraintLayout, SurfaceHolder.Callback, GstCallback { GstStatus.ERROR_WHEN_OPENING -> mHandler.sendMessage(Message().apply { what = MSG_ERROR }) else -> {} } - Log.e("${TAG}_$tag", "onStatus: $gstStatus") + //Log.e("${TAG}_$tag", "onStatus: $gstStatus") } override fun onMessage(message: String?) { - Log.e("${TAG}_$tag", "onMessage: $message") + //Log.e("${TAG}_$tag", "onMessage: $message") } inner class MyHandler(looper: Looper): Handler(looper) { @@ -166,7 +174,7 @@ class VideoView : ConstraintLayout, SurfaceHolder.Callback, GstCallback { retryCount++ } else { retryCount = RETRY_OFF - Log.e("${TAG}_$tag", "Retry count = 5, stopped retry...") + //Log.e("${TAG}_$tag", "Retry count = 5, stopped retry...") } } }