Skip to content

Commit

Permalink
Merge pull request #269 from ksvc/v5.0.0-28654
Browse files Browse the repository at this point in the history
update to v5.0.0-28654
  • Loading branch information
chriszeng87 committed Jan 24, 2018
2 parents e4a7282 + 2bab58f commit bee0f57
Show file tree
Hide file tree
Showing 218 changed files with 41,411 additions and 5,134 deletions.
Binary file added demo/assets/KSYResource/16_lightning.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added demo/assets/KSYResource/17_ktv.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified demo/libs/arm64-v8a/libksyapm.so
Binary file not shown.
Binary file modified demo/libs/arm64-v8a/libksylive.so
Binary file not shown.
Binary file modified demo/libs/armeabi-v7a/libksyapm.so
Binary file not shown.
Binary file modified demo/libs/armeabi-v7a/libksylive.so
Binary file not shown.
Binary file modified demo/libs/armeabi/libksyapm.so
Binary file not shown.
Binary file modified demo/libs/armeabi/libksylive.so
Binary file not shown.
Binary file modified demo/libs/ksylive.jar
Binary file not shown.
Binary file modified demo/libs/x86/libksyapm.so
Binary file not shown.
Binary file modified demo/libs/x86/libksylive.so
Binary file not shown.
2 changes: 1 addition & 1 deletion demo/res/layout/demo_activity.xml
Expand Up @@ -50,7 +50,7 @@
android:id="@+id/rtmpUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="rtmp://test.uplive.ks-cdn.com/live/androidtest" />
android:text="rtmp://mobile.kscvbu.cn/live/androidtest" />

<Button
android:id="@+id/connectBT"
Expand Down
73 changes: 73 additions & 0 deletions demo/src/com/ksyun/media/streamer/demo/ImgTexGPUImageFilter.java
@@ -0,0 +1,73 @@
package com.ksyun.media.streamer.demo;

import android.util.Log;

import com.ksyun.media.streamer.filter.imgtex.ImgTexFilterBase;
import com.ksyun.media.streamer.framework.ImgTexFormat;
import com.ksyun.media.streamer.framework.ImgTexFrame;
import com.ksyun.media.streamer.util.gles.GLRender;
import com.ksyun.media.streamer.util.gles.GlUtil;
import com.ksyun.media.streamer.util.gles.TexTransformUtil;

import java.nio.FloatBuffer;

import jp.co.cyberagent.android.gpuimage.GPUImageFilter;

/**
* Wrapper to compat with android-gpuimage filters.
*/

public class ImgTexGPUImageFilter extends ImgTexFilterBase {
private static final String TAG = "ImgTexGPUImageFilter";

private GPUImageFilter mGPUImageFilter;
private ImgTexFormat mOutFormat;

public ImgTexGPUImageFilter(GLRender glRender, GPUImageFilter gpuImageFilter) {
super(glRender);
mGPUImageFilter = gpuImageFilter;
}

public GPUImageFilter getGPUImageFilter() {
return mGPUImageFilter;
}

@Override
public int getSinkPinNum() {
return 1;
}

@Override
protected ImgTexFormat getSrcPinFormat() {
return mOutFormat;
}

@Override
protected void onFormatChanged(int inIdx, ImgTexFormat format) {
mOutFormat = new ImgTexFormat(ImgTexFormat.COLOR_RGBA, format.width, format.height);
Log.d(TAG, "init GPUImage filter " + format.width + "x" + format.height);
mGPUImageFilter.init();
mGPUImageFilter.onOutputSizeChanged(format.width, format.height);
}

@Override
protected void onDraw(ImgTexFrame[] frames) {
int textureId = frames[mMainSinkPinIndex].textureId;
mGPUImageFilter.onDraw(textureId, getVertexCoords(), getTexCoords());
GlUtil.checkGlError("GPUImageFilter onDraw");
}

@Override
protected void onRelease() {
mGPUImageFilter.destroy();
super.onRelease();
}

protected FloatBuffer getTexCoords() {
return TexTransformUtil.getTexCoordsBuf();
}

protected FloatBuffer getVertexCoords() {
return TexTransformUtil.getVertexCoordsBuf();
}
}
Expand Up @@ -91,7 +91,7 @@ public class StdCameraActivity extends BaseCameraActivity {
protected AudioFuncFragment mAudioFuncFragment;
protected VideoFilterFragment mVideoFilterFragment;

protected boolean mRecording;
protected volatile boolean mRecording;
protected int mLastRotation;
protected OrientationEventListener mOrientationEventListener;
protected BluetoothHeadsetUtils mBluetoothHelper;
Expand Down
77 changes: 75 additions & 2 deletions demo/src/com/ksyun/media/streamer/demo/VideoFilterFragment.java
Expand Up @@ -4,6 +4,7 @@
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
Expand All @@ -14,6 +15,7 @@
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.ksyun.media.streamer.filter.imgtex.ImgBeautyDenoiseFilter;
import com.ksyun.media.streamer.filter.imgtex.ImgBeautyIllusionFilter;
Expand All @@ -25,10 +27,25 @@
import com.ksyun.media.streamer.filter.imgtex.ImgBeautyStylizeFilter;
import com.ksyun.media.streamer.filter.imgtex.ImgBeautyToneCurveFilter;
import com.ksyun.media.streamer.filter.imgtex.ImgFilterBase;
import com.ksyun.media.streamer.filter.imgtex.ImgTexFilterBase;
import com.ksyun.media.streamer.kit.KSYStreamer;

import java.security.InvalidParameterException;

import butterknife.BindView;
import butterknife.ButterKnife;
import jp.co.cyberagent.android.gpuimage.GPUImageEmbossFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageGaussianBlurFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageGlassSphereFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageSepiaFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageSmoothToonFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageThresholdEdgeDetection;
import jp.co.cyberagent.android.gpuimage.GPUImageToneCurveFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageToonFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageVignetteFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageWeakPixelInclusionFilter;
import jp.co.cyberagent.android.gpuimage.GPUImageWhiteBalanceFilter;

/**
* Video filter choose fragment.
Expand Down Expand Up @@ -66,7 +83,8 @@ public class VideoFilterFragment extends Fragment {
"小清新", "青春靓丽", "甜美可人", "怀旧", "蓝调", "老照片", "樱花", "樱花(暗光)",
"红润(暗光)", "阳光(暗光)", "红润", "阳光", "自然", "恋人", "高雅",
"1977", "Amaro", "Brannan", "EarlyBird", "Hefe", "Hudson", "ink", "Lomo", "LordKelvin",
"Nash", "Rise", "Sierra", "Sutro", "Toaster", "Valencia", "Walden", "XproII"
"Nash", "Rise", "Sierra", "Sutro", "Toaster", "Valencia", "Walden", "XproII",
"鱼眼", "浮雕", "高斯模糊", "水彩画", "素描",
};
protected int mFilterPos = 0;
protected ImgFilterBase[] mFilterArray = new ImgFilterBase[mFilterIdxs.length];
Expand All @@ -86,6 +104,30 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
}

protected void initBeautyUI() {
// 重新配置视频滤镜的错误处理函数
mStreamer.getImgTexFilterMgt().setOnErrorListener(new ImgTexFilterBase.OnErrorListener() {
@Override
public void onError(ImgTexFilterBase filter, int errno) {
Toast.makeText(mActivity, "当前机型不支持该滤镜", Toast.LENGTH_SHORT).show();
mStreamer.getImgTexFilterMgt().replaceFilter(filter, null);

// 找到对应的报错filter, 并根据需要更新UI
int i = 0;
for (; i < mFilterArray.length; i++) {
if (mFilterArray[i] == filter) {
break;
}
}
if (i < mFilterArray.length) {
mFilterArray[i] = null;
mFilterIdxArray[i] = 0;
if (i == mFilterPos) {
mFilterSpinner.setSelection(0);
}
}
}
});

mUIFirstInit = true;
mFilterIdxArray[0] = 8;
ArrayAdapter<String> filterIdxAdapter = new ArrayAdapter<>(mActivity,
Expand Down Expand Up @@ -133,7 +175,18 @@ public void onItemSelected(AdapterView<?> parent, View view, int position, long
if (mUIFirstInit || mFilterIdxArray[mFilterPos] != position) {
mUIFirstInit = false;
mFilterIdxArray[mFilterPos] = position;
setFilter();
try {
setFilter();
} catch (InvalidParameterException e) {
Log.e(TAG, "fatal error, clear all filters");
for (int i = 0; i < mFilterIdxArray.length; i++) {
mFilterIdxArray[i] = 0;
}
for (int i = 0; i < mFilterArray.length; i++) {
mFilterArray[i] = null;
}
mFilterSpinner.setSelection(0);
}
}

final ImgFilterBase curFilter = mFilterArray[mFilterPos];
Expand Down Expand Up @@ -321,6 +374,26 @@ protected ImgFilterBase chooseFilter(int idx) {
filter = new ImgBeautyStylizeFilter(mStreamer.getGLRender(),
mActivity, idx - 31);
break;
case 48:
GPUImageGlassSphereFilter glassSphereFilter = new GPUImageGlassSphereFilter();
filter = new ImgTexGPUImageFilter(mStreamer.getGLRender(), glassSphereFilter);
break;
case 49:
GPUImageEmbossFilter embossFilter = new GPUImageEmbossFilter();
filter = new ImgTexGPUImageFilter(mStreamer.getGLRender(), embossFilter);
break;
case 50:
GPUImageGaussianBlurFilter gaussianBlurFilter = new GPUImageGaussianBlurFilter();
filter = new ImgTexGPUImageFilter(mStreamer.getGLRender(), gaussianBlurFilter);
break;
case 51:
GPUImageSmoothToonFilter smoothToonFilter = new GPUImageSmoothToonFilter();
filter = new ImgTexGPUImageFilter(mStreamer.getGLRender(), smoothToonFilter);
break;
case 52:
GPUImageThresholdEdgeDetection edgeDetection = new GPUImageThresholdEdgeDetection();
filter = new ImgTexGPUImageFilter(mStreamer.getGLRender(), edgeDetection);
break;
default:
filter = null;
}
Expand Down

0 comments on commit bee0f57

Please sign in to comment.