diff --git a/dConnectDevicePlugin/dConnectDeviceHost/app/build.gradle b/dConnectDevicePlugin/dConnectDeviceHost/app/build.gradle index fd4fd164fd..2b957403bc 100644 --- a/dConnectDevicePlugin/dConnectDeviceHost/app/build.gradle +++ b/dConnectDevicePlugin/dConnectDeviceHost/app/build.gradle @@ -105,8 +105,8 @@ dependencies { implementation 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:1.9.7' implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.6' implementation 'org.deviceconnect:dconnect-demo-lib:1.0.1' - implementation 'org.deviceconnect:libmedia:1.3.0' - implementation 'org.deviceconnect:libsrt:1.3.0' + implementation 'org.deviceconnect:libmedia:1.4.0' + implementation 'org.deviceconnect:libsrt:1.4.0' // implementation project(':libmedia') // implementation project(':libsrt') } diff --git a/dConnectSDK/dConnectLibStreaming/gradle/wrapper/gradle-wrapper.properties b/dConnectSDK/dConnectLibStreaming/gradle/wrapper/gradle-wrapper.properties index 44eca53b8c..2c953b1409 100644 --- a/dConnectSDK/dConnectLibStreaming/gradle/wrapper/gradle-wrapper.properties +++ b/dConnectSDK/dConnectLibStreaming/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/dConnectSDK/dConnectLibStreaming/libmedia/build.gradle b/dConnectSDK/dConnectLibStreaming/libmedia/build.gradle index cba55430a6..072ab3cc48 100644 --- a/dConnectSDK/dConnectLibStreaming/libmedia/build.gradle +++ b/dConnectSDK/dConnectLibStreaming/libmedia/build.gradle @@ -8,7 +8,7 @@ if (githubPropertiesFile.exists()) { } def getVersionName = { -> - return "1.3.0" + return "1.4.0" } def getArtificatId = { -> diff --git a/dConnectSDK/dConnectLibStreaming/libmedia/src/main/java/org/deviceconnect/android/libmedia/streaming/gles/SurfaceTextureRenderer.java b/dConnectSDK/dConnectLibStreaming/libmedia/src/main/java/org/deviceconnect/android/libmedia/streaming/gles/SurfaceTextureRenderer.java index 84eaaeb9cc..9537ab7e3d 100644 --- a/dConnectSDK/dConnectLibStreaming/libmedia/src/main/java/org/deviceconnect/android/libmedia/streaming/gles/SurfaceTextureRenderer.java +++ b/dConnectSDK/dConnectLibStreaming/libmedia/src/main/java/org/deviceconnect/android/libmedia/streaming/gles/SurfaceTextureRenderer.java @@ -25,19 +25,12 @@ public class SurfaceTextureRenderer { private static final float[] TRIANGLE_VERTICES_DATA = { // X, Y, Z, U, V -1.0f, -1.0f, 0.f, 0.f, 0.f, - 1.0f, -1.0f, 0.f, 1.f, 0.f, + 1.0f, -1.0f, 0.f, 1.f, 0.f, -1.0f, 1.0f, 0.f, 0.f, 1.f, - 1.0f, 1.0f, 0.f, 1.f, 1.f, - }; - - private static final float[] TRIANGLE_VERTICES_DATA_2 = { - // X, Y, Z, U, V - -1.0f, -1.0f, 0.f, 0.f, 1.f, - 1.0f, -1.0f, 0.f, 1.f, 1.f, - -1.0f, 1.0f, 0.f, 0.f, 0.f, - 1.0f, 1.0f, 0.f, 1.f, 0.f, + 1.0f, 1.0f, 0.f, 1.f, 1.f, }; + private final FloatBuffer mDefaultTriangleVertices; private final FloatBuffer mTriangleVertices; private final boolean mInverse; @@ -78,20 +71,54 @@ public class SurfaceTextureRenderer { * @param inverse テクスチャの反転フラグ */ public SurfaceTextureRenderer(boolean inverse) { + this(inverse, TRIANGLE_VERTICES_DATA); + } + + /** + * コンストラクタ. + * @param inverse テクスチャの反転フラグ + * @param vertices テクスチャの頂点バッファ(初期値) + */ + public SurfaceTextureRenderer(boolean inverse, float[] vertices) { mInverse = inverse; + if (inverse) { + vertices = inverseVertices(vertices); + } + + mDefaultTriangleVertices = ByteBuffer.allocateDirect( + TRIANGLE_VERTICES_DATA.length * FLOAT_SIZE_BYTES) + .order(ByteOrder.nativeOrder()).asFloatBuffer(); + mDefaultTriangleVertices.put(vertices).position(0); + mTriangleVertices = ByteBuffer.allocateDirect( TRIANGLE_VERTICES_DATA.length * FLOAT_SIZE_BYTES) .order(ByteOrder.nativeOrder()).asFloatBuffer(); - if (inverse) { - mTriangleVertices.put(TRIANGLE_VERTICES_DATA_2).position(0); - } else { - mTriangleVertices.put(TRIANGLE_VERTICES_DATA).position(0); - } + mTriangleVertices.put(vertices).position(0); Matrix.setIdentityM(mSTMatrix, 0); Matrix.setIdentityM(mMVPMatrix, 0); } + private static float[] inverseVertices(final float[] vertices) { + int len = vertices.length; + float[] inverse = new float[len]; + System.arraycopy(vertices, 0, inverse, 0, len); + inverse[3] = vertices[13]; + inverse[4] = vertices[14]; + inverse[13] = vertices[3]; + inverse[14] = vertices[4]; + inverse[8] = vertices[18]; + inverse[9] = vertices[19]; + inverse[18] = vertices[8]; + inverse[19] = vertices[9]; + return inverse; + } + + public void setTextureVertices(final float[] vertices) { + mTriangleVertices.clear(); + mTriangleVertices.put(vertices).position(0); + } + /** * テクスチャの ID を取得します. * @@ -227,11 +254,8 @@ public void drawFrame(SurfaceTexture st, int displayRotation) { */ public void clearCropRect() { mTriangleVertices.clear(); - if (mInverse) { - mTriangleVertices.put(TRIANGLE_VERTICES_DATA_2).position(0); - } else { - mTriangleVertices.put(TRIANGLE_VERTICES_DATA).position(0); - } + mDefaultTriangleVertices.position(0); + mTriangleVertices.put(mDefaultTriangleVertices).position(0); } /** @@ -293,8 +317,7 @@ private void setCropRect(float l, float t, float r, float b) { ex, ey, 0.f, r, (1 - b), }; - mTriangleVertices.clear(); - mTriangleVertices.put(triangleVerticesData).position(0); + setTextureVertices(triangleVerticesData); } private int loadShader(int shaderType, String source) { @@ -366,4 +389,4 @@ private static void checkLocation(int location, String label) { throw new RuntimeException("Unable to locate '" + label + "' in program"); } } -} +} \ No newline at end of file diff --git a/dConnectSDK/dConnectLibStreaming/libsrt/build.gradle b/dConnectSDK/dConnectLibStreaming/libsrt/build.gradle index f531265a6a..521bb686d1 100644 --- a/dConnectSDK/dConnectLibStreaming/libsrt/build.gradle +++ b/dConnectSDK/dConnectLibStreaming/libsrt/build.gradle @@ -6,7 +6,7 @@ if (githubPropertiesFile.exists()) { githubProperties.load(new FileInputStream(githubPropertiesFile)) } def getVersionName = { -> - return "1.3.0" // Replace with version Name + return "1.4.0" // Replace with version Name } def getArtificatId = { -> @@ -35,6 +35,23 @@ android { ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } + packagingOptions { + pickFirst 'lib/armeabi-v7a/libsrt.so' + pickFirst 'lib/x86_64/libsrt.so' + pickFirst 'lib/x86/libsrt.so' + pickFirst 'lib/arm64-v8a/libsrt.so' + pickFirst 'lib/armeabi-v7a/libc++_shared.so' + pickFirst 'lib/x86_64/libsrt-native-interface.so' + pickFirst 'lib/arm64-v8a/libc++_shared.so' + pickFirst 'lib/x86_64/libc++_shared.so' + pickFirst 'lib/armeabi-v7a/libsrt-native-interface.so' + pickFirst 'lib/x86/libc++_shared.so' + pickFirst 'lib/arm64-v8a/libsrt-native-interface.so' + pickFirst 'lib/x86/libsrt-native-interface.so' + pickFirst 'lib/armeabi-v7a/libnative-lib.so' + pickFirst 'lib/arm64-v8a/libnative-lib.so' + pickFirst 'lib/x86/libnative-lib.so' + } } buildTypes { @@ -93,7 +110,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'org.deviceconnect:libmedia:1.3.0' + implementation 'org.deviceconnect:libmedia:1.4.0' // implementation project(':libmedia') testImplementation 'junit:junit:4.13.2'