Skip to content

Commit b34828f

Browse files
Merge pull request #585 from TakayukiHoshi1984/modify_libmedia_rendering
libmedia 更新
2 parents a7b3780 + bb590b6 commit b34828f

5 files changed

Lines changed: 69 additions & 29 deletions

File tree

dConnectDevicePlugin/dConnectDeviceHost/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ dependencies {
105105
implementation 'com.github.pedroSG94.rtmp-rtsp-stream-client-java:rtplibrary:1.9.7'
106106
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.6'
107107
implementation 'org.deviceconnect:dconnect-demo-lib:1.0.1'
108-
implementation 'org.deviceconnect:libmedia:1.3.0'
109-
implementation 'org.deviceconnect:libsrt:1.3.0'
108+
implementation 'org.deviceconnect:libmedia:1.4.0'
109+
implementation 'org.deviceconnect:libsrt:1.4.0'
110110
// implementation project(':libmedia')
111111
// implementation project(':libsrt')
112112
}

dConnectSDK/dConnectLibStreaming/gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip

dConnectSDK/dConnectLibStreaming/libmedia/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ if (githubPropertiesFile.exists()) {
88
}
99

1010
def getVersionName = { ->
11-
return "1.3.0"
11+
return "1.4.0"
1212
}
1313

1414
def getArtificatId = { ->

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

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,12 @@ public class SurfaceTextureRenderer {
2525
private static final float[] TRIANGLE_VERTICES_DATA = {
2626
// X, Y, Z, U, V
2727
-1.0f, -1.0f, 0.f, 0.f, 0.f,
28-
1.0f, -1.0f, 0.f, 1.f, 0.f,
28+
1.0f, -1.0f, 0.f, 1.f, 0.f,
2929
-1.0f, 1.0f, 0.f, 0.f, 1.f,
30-
1.0f, 1.0f, 0.f, 1.f, 1.f,
31-
};
32-
33-
private static final float[] TRIANGLE_VERTICES_DATA_2 = {
34-
// X, Y, Z, U, V
35-
-1.0f, -1.0f, 0.f, 0.f, 1.f,
36-
1.0f, -1.0f, 0.f, 1.f, 1.f,
37-
-1.0f, 1.0f, 0.f, 0.f, 0.f,
38-
1.0f, 1.0f, 0.f, 1.f, 0.f,
30+
1.0f, 1.0f, 0.f, 1.f, 1.f,
3931
};
4032

33+
private final FloatBuffer mDefaultTriangleVertices;
4134
private final FloatBuffer mTriangleVertices;
4235
private final boolean mInverse;
4336

@@ -78,20 +71,54 @@ public class SurfaceTextureRenderer {
7871
* @param inverse テクスチャの反転フラグ
7972
*/
8073
public SurfaceTextureRenderer(boolean inverse) {
74+
this(inverse, TRIANGLE_VERTICES_DATA);
75+
}
76+
77+
/**
78+
* コンストラクタ.
79+
* @param inverse テクスチャの反転フラグ
80+
* @param vertices テクスチャの頂点バッファ(初期値)
81+
*/
82+
public SurfaceTextureRenderer(boolean inverse, float[] vertices) {
8183
mInverse = inverse;
84+
if (inverse) {
85+
vertices = inverseVertices(vertices);
86+
}
87+
88+
mDefaultTriangleVertices = ByteBuffer.allocateDirect(
89+
TRIANGLE_VERTICES_DATA.length * FLOAT_SIZE_BYTES)
90+
.order(ByteOrder.nativeOrder()).asFloatBuffer();
91+
mDefaultTriangleVertices.put(vertices).position(0);
92+
8293
mTriangleVertices = ByteBuffer.allocateDirect(
8394
TRIANGLE_VERTICES_DATA.length * FLOAT_SIZE_BYTES)
8495
.order(ByteOrder.nativeOrder()).asFloatBuffer();
85-
if (inverse) {
86-
mTriangleVertices.put(TRIANGLE_VERTICES_DATA_2).position(0);
87-
} else {
88-
mTriangleVertices.put(TRIANGLE_VERTICES_DATA).position(0);
89-
}
96+
mTriangleVertices.put(vertices).position(0);
9097

9198
Matrix.setIdentityM(mSTMatrix, 0);
9299
Matrix.setIdentityM(mMVPMatrix, 0);
93100
}
94101

102+
private static float[] inverseVertices(final float[] vertices) {
103+
int len = vertices.length;
104+
float[] inverse = new float[len];
105+
System.arraycopy(vertices, 0, inverse, 0, len);
106+
inverse[3] = vertices[13];
107+
inverse[4] = vertices[14];
108+
inverse[13] = vertices[3];
109+
inverse[14] = vertices[4];
110+
inverse[8] = vertices[18];
111+
inverse[9] = vertices[19];
112+
inverse[18] = vertices[8];
113+
inverse[19] = vertices[9];
114+
return inverse;
115+
}
116+
117+
public void setTextureVertices(final float[] vertices) {
118+
mTriangleVertices.clear();
119+
mTriangleVertices.put(vertices).position(0);
120+
}
121+
95122
/**
96123
* テクスチャの ID を取得します.
97124
*
@@ -227,11 +254,8 @@ public void drawFrame(SurfaceTexture st, int displayRotation) {
227254
*/
228255
public void clearCropRect() {
229256
mTriangleVertices.clear();
230-
if (mInverse) {
231-
mTriangleVertices.put(TRIANGLE_VERTICES_DATA_2).position(0);
232-
} else {
233-
mTriangleVertices.put(TRIANGLE_VERTICES_DATA).position(0);
234-
}
257+
mDefaultTriangleVertices.position(0);
258+
mTriangleVertices.put(mDefaultTriangleVertices).position(0);
235259
}
236260

237261
/**
@@ -293,8 +317,7 @@ private void setCropRect(float l, float t, float r, float b) {
293317
ex, ey, 0.f, r, (1 - b),
294318
};
295319

296-
mTriangleVertices.clear();
297-
mTriangleVertices.put(triangleVerticesData).position(0);
320+
setTextureVertices(triangleVerticesData);
298321
}
299322

300323
private int loadShader(int shaderType, String source) {
@@ -366,4 +389,4 @@ private static void checkLocation(int location, String label) {
366389
throw new RuntimeException("Unable to locate '" + label + "' in program");
367390
}
368391
}
369-
}
392+
}

dConnectSDK/dConnectLibStreaming/libsrt/build.gradle

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ if (githubPropertiesFile.exists()) {
66
githubProperties.load(new FileInputStream(githubPropertiesFile))
77
}
88
def getVersionName = { ->
9-
return "1.3.0" // Replace with version Name
9+
return "1.4.0" // Replace with version Name
1010
}
1111

1212
def getArtificatId = { ->
@@ -35,6 +35,23 @@ android {
3535
ndk {
3636
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
3737
}
38+
packagingOptions {
39+
pickFirst 'lib/armeabi-v7a/libsrt.so'
40+
pickFirst 'lib/x86_64/libsrt.so'
41+
pickFirst 'lib/x86/libsrt.so'
42+
pickFirst 'lib/arm64-v8a/libsrt.so'
43+
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
44+
pickFirst 'lib/x86_64/libsrt-native-interface.so'
45+
pickFirst 'lib/arm64-v8a/libc++_shared.so'
46+
pickFirst 'lib/x86_64/libc++_shared.so'
47+
pickFirst 'lib/armeabi-v7a/libsrt-native-interface.so'
48+
pickFirst 'lib/x86/libc++_shared.so'
49+
pickFirst 'lib/arm64-v8a/libsrt-native-interface.so'
50+
pickFirst 'lib/x86/libsrt-native-interface.so'
51+
pickFirst 'lib/armeabi-v7a/libnative-lib.so'
52+
pickFirst 'lib/arm64-v8a/libnative-lib.so'
53+
pickFirst 'lib/x86/libnative-lib.so'
54+
}
3855
}
3956

4057
buildTypes {
@@ -93,7 +110,7 @@ android {
93110

94111
dependencies {
95112
implementation fileTree(dir: 'libs', include: ['*.jar'])
96-
implementation 'org.deviceconnect:libmedia:1.3.0'
113+
implementation 'org.deviceconnect:libmedia:1.4.0'
97114
// implementation project(':libmedia')
98115

99116
testImplementation 'junit:junit:4.13.2'

0 commit comments

Comments
 (0)