开始USB摄像头的功能集成,还无法获取usb连接广播需要调试

Signed-off-by: donghongyu <donghongyu@zhidaoauto.com>
This commit is contained in:
donghongyu
2022-02-10 18:47:07 +08:00
parent 3f64bb093a
commit b10306fc45
68 changed files with 10519 additions and 598 deletions

View File

@@ -0,0 +1,183 @@
package com.serenegiant.glutils;
/*
* libcommon
* utility/helper classes for myself
*
* Copyright (c) 2014-2018 saki t_saki@serenegiant.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import android.os.Build;
/**
* EGLレンダリングコンテキストを生成使用するためのヘルパークラス
*/
public abstract class EGLBase {
public static final Object EGL_LOCK = new Object();
public static final int EGL_RECORDABLE_ANDROID = 0x3142;
public static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
public static final int EGL_OPENGL_ES2_BIT = 4;
public static final int EGL_OPENGL_ES3_BIT_KHR = 0x0040;
// public static final int EGL_SWAP_BEHAVIOR_PRESERVED_BIT = 0x0400;
/**
* EGL生成のヘルパーメソッド, 環境に応じてEGLBase10またはEGLBase14を生成する
* maxClientVersion=3, ステンシルバッファなし
* @param sharedContext
* @param withDepthBuffer
* @param isRecordable
* @return
*/
public static EGLBase createFrom(final IContext sharedContext,
final boolean withDepthBuffer, final boolean isRecordable) {
return createFrom(3, sharedContext, withDepthBuffer, 0, isRecordable);
}
/**
* EGL生成のヘルパーメソッド, 環境に応じてEGLBase10またはEGLBase14を生成する
* maxClientVersion=3
* @param sharedContext
* @param withDepthBuffer
* @param stencilBits
* @param isRecordable
* @return
*/
public static EGLBase createFrom(final IContext sharedContext,
final boolean withDepthBuffer, final int stencilBits, final boolean isRecordable) {
return createFrom(3, sharedContext,
withDepthBuffer, stencilBits, isRecordable);
}
/**
* EGL生成のヘルパーメソッド, 環境に応じてEGLBase10またはEGLBase14を生成する
* @param maxClientVersion
* @param sharedContext
* @param withDepthBuffer trueなら16ビットのデプスバッファ有り, falseならデプスバッファなし
* @param stencilBits 0以下ならステンシルバッファなし
* @param isRecordable
* @return
*/
public static EGLBase createFrom(final int maxClientVersion,
final IContext sharedContext, final boolean withDepthBuffer,
final int stencilBits, final boolean isRecordable) {
if (isEGL14Supported() && ((sharedContext == null)
|| (sharedContext instanceof EGLBase14.Context))) {
return new EGLBase14(maxClientVersion,
(EGLBase14.Context)sharedContext,
withDepthBuffer, stencilBits, isRecordable);
} else {
return new EGLBase10(maxClientVersion,
(EGLBase10.Context)sharedContext,
withDepthBuffer, stencilBits, isRecordable);
}
}
/**
* EGLレンダリングコンテキストのホルダークラス
*/
public static abstract class IContext {
public abstract long getNativeHandle();
public abstract Object getEGLContext();
}
/**
* EGLコンフィグのホルダークラス
*/
public static abstract class IConfig {
}
/**
* EGLレンダリングコンテキストに紐付ける描画オブジェクト
*/
public interface IEglSurface {
public void makeCurrent();
public void swap();
public IContext getContext();
/**
* swap with presentation time[ns]
* only works well now when using EGLBase14
* @param presentationTimeNs
*/
public void swap(final long presentationTimeNs);
public void release();
public boolean isValid();
}
public static boolean isEGL14Supported() {
return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2);
}
/**
* 関連するリソースを破棄する
*/
public abstract void release();
/**
* GLESに文字列を問い合わせる
* @param what
* @return
*/
public abstract String queryString(final int what);
/**
* GLESバージョンを取得する
* @return 1, 2または3
*/
public abstract int getGlVersion();
/**
* EGLレンダリングコンテキストを取得する
* このEGLBaseインスタンスを使って生成したEglSurfaceをmakeCurrentした状態で
* eglGetCurrentContextを呼び出すのと一緒
* @return
*/
public abstract IContext getContext();
/**
* EGLコンフィグを取得する
* @return
*/
public abstract IConfig getConfig();
/**
* 指定したSurfaceからEglSurfaceを生成する
* 生成したEglSurfaceをmakeCurrentした状態で戻る
* @param nativeWindow Surface/SurfaceTexture/SurfaceHolder
* @return
*/
public abstract IEglSurface createFromSurface(final Object nativeWindow);
/**
* 指定した大きさのオフスクリーンEglSurfaceを生成する
* 生成したEglSurfaceをmakeCurrentした状態で戻る
* @param width PBufferオフスクリーンのサイズ(0以下はだめ)
* @param height
* @return
*/
public abstract IEglSurface createOffscreen(final int width, final int height);
/**
* EGLレンダリングコンテキストとスレッドの紐付けを解除する
*/
public abstract void makeDefault();
/**
* eglWaitGLとeglWaitNativeを呼ぶ
*
* eglWaitGL: コマンドキュー内のコマンドをすべて転送する, GLES20.glFinish()と同様の効果
* eglWaitNative: GPU側の描画処理が終了するまで実行をブロックする
*/
public abstract void sync();
}