Skip to content

Commit 07051d6

Browse files
Merge branch 'feature_host_camera' into feature_uvc_plugin_update
2 parents 42e7d0e + ad2d3d4 commit 07051d6

2 files changed

Lines changed: 36 additions & 6 deletions

File tree

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/recorder/camera/CameraSurfaceDrawingThread.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.deviceconnect.android.deviceplugin.host.camera.CameraWrapper;
1010
import org.deviceconnect.android.deviceplugin.host.recorder.HostMediaRecorder;
1111
import org.deviceconnect.android.libmedia.streaming.gles.EGLSurfaceDrawingThread;
12+
import org.deviceconnect.android.libmedia.streaming.gles.SurfaceTextureManager;
1213

1314
public class CameraSurfaceDrawingThread extends EGLSurfaceDrawingThread {
1415
/**
@@ -77,6 +78,20 @@ public void start() {
7778
}
7879
}
7980

81+
@Override
82+
protected SurfaceTextureManager createStManager() {
83+
SurfaceTextureManager manager = new SurfaceTextureManager();
84+
SurfaceTexture st = manager.getSurfaceTexture();
85+
st.setDefaultBufferSize(getWidth(), getHeight());
86+
if (getDrawingRange() != null) {
87+
// カメラは描画時に端末の向きによって回転するので、ここでは描画範囲の計算も回転してから行う
88+
int w = isSwappedDimensions() ? getHeight() : getWidth();
89+
int h = isSwappedDimensions() ? getWidth() : getHeight();
90+
manager.setDrawingRange(getDrawingRange(), w, h);
91+
}
92+
return manager;
93+
}
94+
8095
private void startCamera(SurfaceTexture surfaceTexture) {
8196
try {
8297
HostMediaRecorder.Settings settings = mRecorder.getSettings();

dConnectSDK/dConnectLibStreaming/libmedia/src/main/java/org/deviceconnect/android/libmedia/streaming/gles/EGLSurfaceDrawingThread.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@ public void setTimeout(int timeout) {
9494
mTimeout = timeout;
9595
}
9696

97+
/**
98+
* レンダリングのタイムアウトを取得します.
99+
*
100+
* @return タイムアウト
101+
*/
102+
public int getTimeout() {
103+
return mTimeout;
104+
}
105+
97106
/**
98107
* 描画範囲を設定します.
99108
*
@@ -103,6 +112,15 @@ public void setDrawingRange(Rect rect) {
103112
mDrawingRange = rect;
104113
}
105114

115+
/**
116+
* 描画範囲設定を取得します.
117+
*
118+
* @return 描画範囲
119+
*/
120+
public Rect getDrawingRange() {
121+
return mDrawingRange;
122+
}
123+
106124
/**
107125
* 描画を行う Surface のサイズを設定します.
108126
*
@@ -349,16 +367,12 @@ public synchronized void stop(boolean force) {
349367
*
350368
* @return SurfaceTextureManager のインスタンス
351369
*/
352-
private SurfaceTextureManager createStManager() {
370+
protected SurfaceTextureManager createStManager() {
353371
SurfaceTextureManager manager = new SurfaceTextureManager();
354-
manager.setTimeout(mTimeout);
355-
// SurfaceTexture に解像度を設定
356372
SurfaceTexture st = manager.getSurfaceTexture();
357373
st.setDefaultBufferSize(mWidth, mHeight);
358374
if (mDrawingRange != null) {
359-
int w = isSwappedDimensions() ? mHeight : mWidth;
360-
int h = isSwappedDimensions() ? mWidth : mHeight;
361-
manager.setDrawingRange(mDrawingRange, w, h);
375+
manager.setDrawingRange(mDrawingRange, mWidth, mHeight);
362376
}
363377
return manager;
364378
}
@@ -509,6 +523,7 @@ public void run() {
509523
mEGLCore.makeCurrent();
510524

511525
mStManager = createStManager();
526+
mStManager.setTimeout(mTimeout);
512527

513528
synchronized (mEGLSurfaceBases) {
514529
for (EGLSurfaceBase surfaceBase : mEGLSurfaceBases) {

0 commit comments

Comments
 (0)