support flutter gstreamer player for android
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package org.freedesktop.gstreamer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.AssetManager;
|
||||
|
||||
public class GStreamer {
|
||||
private static native void nativeInit(Context context) throws Exception;
|
||||
|
||||
public static void init(Context context) throws Exception {
|
||||
copyCaCertificates(context);
|
||||
copyFonts(context);
|
||||
nativeInit(context);
|
||||
}
|
||||
|
||||
private static void copyFonts(Context context) {
|
||||
AssetManager assetManager = context.getAssets();
|
||||
File filesDir = context.getFilesDir();
|
||||
File fontsFCDir = new File (filesDir, "fontconfig");
|
||||
File fontsDir = new File (fontsFCDir, "fonts");
|
||||
File fontsCfg = new File (fontsFCDir, "fonts.conf");
|
||||
|
||||
fontsDir.mkdirs();
|
||||
|
||||
try {
|
||||
/* Copy the config file */
|
||||
copyFile (assetManager, "fontconfig/fonts.conf", fontsCfg);
|
||||
/* Copy the fonts */
|
||||
for(String filename : assetManager.list("fontconfig/fonts/truetype")) {
|
||||
File font = new File(fontsDir, filename);
|
||||
copyFile (assetManager, "fontconfig/fonts/truetype/" + filename, font);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static void copyCaCertificates(Context context) {
|
||||
AssetManager assetManager = context.getAssets();
|
||||
File filesDir = context.getFilesDir();
|
||||
File sslDir = new File (filesDir, "ssl");
|
||||
File certsDir = new File (sslDir, "certs");
|
||||
File certs = new File (certsDir, "ca-certificates.crt");
|
||||
|
||||
certsDir.mkdirs();
|
||||
|
||||
try {
|
||||
/* Copy the certificates file */
|
||||
copyFile (assetManager, "ssl/certs/ca-certificates.crt", certs);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static void copyFile(AssetManager assetManager, String assetPath, File outFile) throws IOException {
|
||||
InputStream in = null;
|
||||
OutputStream out = null;
|
||||
IOException exception = null;
|
||||
|
||||
if (outFile.exists())
|
||||
outFile.delete();
|
||||
|
||||
try {
|
||||
in = assetManager.open(assetPath);
|
||||
out = new FileOutputStream(outFile);
|
||||
|
||||
byte[] buffer = new byte[1024];
|
||||
int read;
|
||||
while ((read = in.read(buffer)) != -1) {
|
||||
out.write(buffer, 0, read);
|
||||
}
|
||||
out.flush();
|
||||
} catch (IOException e) {
|
||||
exception = e;
|
||||
} finally {
|
||||
if (in != null)
|
||||
try {
|
||||
in.close();
|
||||
} catch (IOException e) {
|
||||
if (exception == null)
|
||||
exception = e;
|
||||
}
|
||||
if (out != null)
|
||||
try {
|
||||
out.close();
|
||||
} catch (IOException e) {
|
||||
if (exception == null)
|
||||
exception = e;
|
||||
}
|
||||
if (exception != null)
|
||||
throw exception;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (C) 2012, Collabora Ltd.
|
||||
* Author: Youness Alaoui
|
||||
*
|
||||
* Copyright (C) 2015, Collabora Ltd.
|
||||
* Author: Justin Kim <[email protected]>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation
|
||||
* version 2.1 of the License.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
package org.freedesktop.gstreamer.androidmedia;
|
||||
|
||||
import android.hardware.Camera;
|
||||
|
||||
public class GstAhcCallback implements Camera.PreviewCallback,
|
||||
Camera.ErrorCallback,
|
||||
Camera.AutoFocusCallback {
|
||||
public long mUserData;
|
||||
public long mCallback;
|
||||
|
||||
public static native void gst_ah_camera_on_preview_frame(byte[] data, Camera camera,
|
||||
long callback, long user_data);
|
||||
public static native void gst_ah_camera_on_error(int error, Camera camera,
|
||||
long callback, long user_data);
|
||||
public static native void gst_ah_camera_on_auto_focus(boolean success, Camera camera,
|
||||
long callback, long user_data);
|
||||
|
||||
public GstAhcCallback(long callback, long user_data) {
|
||||
mCallback = callback;
|
||||
mUserData = user_data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPreviewFrame(byte[] data, Camera camera) {
|
||||
gst_ah_camera_on_preview_frame(data, camera, mCallback, mUserData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int error, Camera camera) {
|
||||
gst_ah_camera_on_error(error, camera, mCallback, mUserData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutoFocus(boolean success, Camera camera) {
|
||||
gst_ah_camera_on_auto_focus(success, camera, mCallback, mUserData);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (C) 2016 SurroundIO
|
||||
* Author: Martin Kelly <[email protected]>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
package org.freedesktop.gstreamer.androidmedia;
|
||||
|
||||
import android.hardware.Sensor;
|
||||
import android.hardware.SensorEvent;
|
||||
import android.hardware.SensorEventListener;
|
||||
|
||||
public class GstAhsCallback implements SensorEventListener {
|
||||
public long mUserData;
|
||||
public long mSensorCallback;
|
||||
public long mAccuracyCallback;
|
||||
|
||||
public static native void gst_ah_sensor_on_sensor_changed(SensorEvent event,
|
||||
long callback, long user_data);
|
||||
public static native void gst_ah_sensor_on_accuracy_changed(Sensor sensor, int accuracy,
|
||||
long callback, long user_data);
|
||||
|
||||
public GstAhsCallback(long sensor_callback,
|
||||
long accuracy_callback, long user_data) {
|
||||
mSensorCallback = sensor_callback;
|
||||
mAccuracyCallback = accuracy_callback;
|
||||
mUserData = user_data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSensorChanged(SensorEvent event) {
|
||||
gst_ah_sensor_on_sensor_changed(event, mSensorCallback, mUserData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAccuracyChanged(Sensor sensor, int accuracy) {
|
||||
gst_ah_sensor_on_accuracy_changed(sensor, accuracy,
|
||||
mAccuracyCallback, mUserData);
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (C) 2015, Collabora Ltd.
|
||||
* Author: Matthieu Bouron <[email protected]>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation
|
||||
* version 2.1 of the License.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
package org.freedesktop.gstreamer.androidmedia;
|
||||
|
||||
import android.graphics.SurfaceTexture;
|
||||
import android.graphics.SurfaceTexture.OnFrameAvailableListener;
|
||||
|
||||
public class GstAmcOnFrameAvailableListener implements OnFrameAvailableListener
|
||||
{
|
||||
private long context = 0;
|
||||
|
||||
public synchronized void onFrameAvailable (SurfaceTexture surfaceTexture) {
|
||||
native_onFrameAvailable(context, surfaceTexture);
|
||||
}
|
||||
|
||||
public synchronized long getContext () {
|
||||
return context;
|
||||
}
|
||||
|
||||
public synchronized void setContext (long c) {
|
||||
context = c;
|
||||
}
|
||||
|
||||
private native void native_onFrameAvailable (long context, SurfaceTexture surfaceTexture);
|
||||
}
|
||||
Reference in New Issue
Block a user