NIMSDK-AOS  9.16.0
AVChatParameters.java
浏览该文件的文档.
1 /*
2  * Copyright (c) 2014-2018 NetEase, Inc.
3  * All right reserved.
4  */
5 
6 package com.netease.nimlib.sdk.avchat.model;
7 
8 import android.view.Surface;
9 
25 import com.netease.yunxin.base.annotation.IntDef;
26 import com.netease.yunxin.base.annotation.Runtime;
27 import com.netease.yunxin.base.annotation.StringDef;
28 import com.netease.yunxin.base.annotation.Writable;
29 import com.netease.nrtc.engine.rawapi.RtcKey;
30 import com.netease.nrtc.engine.rawapi.RtcParameters;
31 import com.netease.nrtc.sdk.common.VideoFilterParameter;
32 import com.netease.nrtc.sdk.video.VideoFrame;
33 
34 import java.io.Serializable;
35 import java.util.HashSet;
36 import java.util.List;
37 import java.util.Map;
38 import java.util.Set;
39 
56 
57 
71 public class AVChatParameters {
72 
73 
77  public static class Key<T> implements Serializable {
78 
79  private final RtcKey<T> mKey;
80  private final boolean mWritable;
81  private final boolean mRuntime;
82 
83 // /**
84 // * @param name 参数名
85 // */
86 // public Key(final String name) {
87 // ParameterizedType thisType = (ParameterizedType) getClass().getGenericSuperclass();
88 // Type type = thisType.getActualTypeArguments()[0];
89 // mKey = new RtcKey<>(name, (Class<T>) type);
90 // mWritable = RtcParameters.writeSupported(name);
91 // mRuntime = RtcParameters.runtimeSupported(name);
92 // }
93 
94  Key(final String name, Class<T> clazz) {
95  mKey = new RtcKey<>(name, clazz);
96  mWritable = RtcParameters.writeSupported(name);
97  mRuntime = RtcParameters.runtimeSupported(name);
98  }
99 
100 
101  private static class SpecializedKey<T> extends Key<T> {
102  SpecializedKey(String name, Class<T> clazz) {
103  super(name, clazz);
104  }
105  }
106 
107 
114  public static Key<?> createSpecializedKey(final String name) {
115  Class<?> clazz = RtcParameters.getKeyType(name);
116  if (clazz == null) {
117  throw new IllegalArgumentException(
118  "Key " + name + " unsupported!");
119  }
120  return new SpecializedKey<>(name, clazz);
121  }
122 
128  public String name() {
129  return mKey.getName();
130  }
131 
137  public boolean runtime() {
138  return mRuntime;
139  }
140 
146  public boolean writable() {
147  return mWritable;
148  }
149 
150 
156  public final Class<T> type() {
157  return mKey.getType();
158  }
159 
163  @Override
164  public final int hashCode() {
165  return mKey.hashCode();
166  }
167 
171  @SuppressWarnings("unchecked")
172  @Override
173  public final boolean equals(Object o) {
174  return o instanceof Key && ((Key<T>) o).mKey.equals(mKey);
175  }
176 
180  @Override
181  public String toString() {
182  return String.format("Key(Name:%s, Type:%s, Writable:%s, Runtime:%s)", name(), type(), writable(), runtime());
183  }
184 
185  }
186 
187 
209  @Writable
210  @IntDef({Surface.ROTATION_0,
211  Surface.ROTATION_90,
212  Surface.ROTATION_180,
213  Surface.ROTATION_270})
214  public static final Key<Integer> KEY_DEVICE_DEFAULT_ROTATION = new Key<>(RtcParameters.KEY_DEVICE_DEFAULT_ROTATION, Integer.class);
215 
216 
238  @Writable
239  @IntDef({Surface.ROTATION_0,
240  Surface.ROTATION_90,
241  Surface.ROTATION_180,
242  Surface.ROTATION_270})
243  public static final Key<Integer> KEY_DEVICE_ROTATION_FIXED_OFFSET = new Key<>(RtcParameters.KEY_DEVICE_ROTATION_FIXED_OFFSET, Integer.class);
244 
245 
266  @Runtime
267  @Writable
268  @StringDef({MEDIA_CODEC_AUTO,
269  MEDIA_CODEC_HARDWARE,
270  MEDIA_CODEC_SOFTWARE})
271  public static final Key<String> KEY_VIDEO_ENCODER_MODE = new Key<>(RtcParameters.KEY_VIDEO_ENCODER_MODE, String.class);
272 
273 
294  @Runtime
295  @Writable
296  @StringDef({MEDIA_CODEC_AUTO,
297  MEDIA_CODEC_HARDWARE,
298  MEDIA_CODEC_SOFTWARE})
299  public static final Key<String> KEY_VIDEO_DECODER_MODE = new Key<>(RtcParameters.KEY_VIDEO_DECODER_MODE, String.class);
300 
301 
311  @Runtime
312  public static final Key<Boolean> KEY_VIDEO_SUPPORTED_HW_ENCODER = new Key<>(RtcParameters.KEY_VIDEO_SUPPORTED_HW_ENCODER, Boolean.class);
313 
314 
324  @Runtime
325  public static final Key<Boolean> KEY_VIDEO_SUPPORTED_HW_DECODER = new Key<>(RtcParameters.KEY_VIDEO_SUPPORTED_HW_DECODER, Boolean.class);
326 
327 
350  @Writable
351  @StringDef({DISABLE,
352  PLATFORM_BUILTIN,
353  SDK_BUILTIN})
354  public static final Key<String> KEY_AUDIO_EFFECT_NOISE_SUPPRESSOR = new Key<>(RtcParameters.KEY_AUDIO_EFFECT_NOISE_SUPPRESSOR, String.class);
355 
356 
374  @Writable
375  @StringDef({DISABLE,
376  PLATFORM_BUILTIN,
377  SDK_BUILTIN})
378  public static final Key<String> KEY_AUDIO_EFFECT_AUTOMATIC_GAIN_CONTROL = new Key<>(RtcParameters.KEY_AUDIO_EFFECT_AUTOMATIC_GAIN_CONTROL, String.class);
379 
380 
403  @Writable
404  @StringDef({DISABLE,
405  PLATFORM_BUILTIN,
406  SDK_BUILTIN})
407  public static final Key<String> KEY_AUDIO_EFFECT_ACOUSTIC_ECHO_CANCELER = new Key<>(RtcParameters.KEY_AUDIO_EFFECT_ACOUSTIC_ECHO_CANCELER, String.class);
408 
409 
418  @Writable
419  public static final Key<Boolean> KEY_AUDIO_CALL_PROXIMITY = new Key<>(RtcParameters.KEY_AUDIO_CALL_PROXIMITY, Boolean.class);
420 
421 
444  @Writable
445  @Runtime
453  public static final Key<Integer> KEY_VIDEO_QUALITY = new Key<>(RtcParameters.KEY_VIDEO_QUALITY, Integer.class);
454 
455 
480  @Writable
481  @Runtime
489  public static final Key<Integer> KEY_VIDEO_PREVIEW_QUALITY = new Key<>(RtcParameters.KEY_VIDEO_PREVIEW_QUALITY, Integer.class);
490 
491 
500  @Writable
501  @Runtime
502  public static final Key<Boolean> KEY_VIDEO_ROTATE_IN_RENDING = new Key<>(RtcParameters.KEY_VIDEO_ROTATE_IN_RENDING, Boolean.class);
503 
504 
523  @Runtime
524  @Writable
526  public static final Key<Integer> KEY_SESSION_MULTI_MODE_USER_ROLE = new Key<>(RtcParameters.KEY_SESSION_MULTI_MODE_USER_ROLE, Integer.class);
527 
528 
541  @Runtime
542  @Writable
543  public static final Key<Boolean> KEY_VIDEO_FPS_REPORTED = new Key<>(RtcParameters.KEY_VIDEO_FPS_REPORTED, Boolean.class);
544 
545 
556  @Runtime
557  @Writable
558  public static final Key<Integer> KEY_VIDEO_MAX_BITRATE = new Key<>(RtcParameters.KEY_VIDEO_MAX_BITRATE, Integer.class);
559 
583  @Writable
584  @Runtime
585  @IntDef({FRAME_RATE_5,
586  FRAME_RATE_10,
587  FRAME_RATE_15,
588  FRAME_RATE_20,
589  FRAME_RATE_25})
590  public static final Key<Integer> KEY_VIDEO_FRAME_RATE = new Key<>(RtcParameters.KEY_VIDEO_FRAME_RATE, Integer.class);
591 
592 
606  @Writable
607  @Runtime
608  public static final Key<Boolean> KEY_VIDEO_FRAME_FILTER = new Key<>(RtcParameters.KEY_VIDEO_FRAME_FILTER, Boolean.class);
609 
610 
624  @Writable
625  @Runtime
626  public static final Key<Boolean> KEY_VIDEO_FRAME_FILTER_NEW = new Key<>(RtcParameters.KEY_VIDEO_FRAME_FILTER_NEW, Boolean.class);
627 
628 
647  @Writable
648  @Runtime
649  @IntDef({NV21,
650  I420})
651  public static final Key<Integer> KEY_VIDEO_FRAME_FILTER_FORMAT = new Key<>(RtcParameters.KEY_VIDEO_FRAME_FILTER_FORMAT, Integer.class);
652 
653 
666  @Writable
667  @Runtime
668  public static final Key<Boolean> KEY_AUDIO_FRAME_FILTER = new Key<>(RtcParameters.KEY_AUDIO_FRAME_FILTER, Boolean.class);
669 
670 
682  @Deprecated
683  @Runtime
684  @Writable
685  public static final Key<String> KEY_SESSION_LIVE_URL = new Key<>(RtcParameters.KEY_SESSION_LIVE_URL, String.class);
686 
687 
699  @Writable
700  @Runtime
701  public static final Key<Boolean> KEY_AUDIO_REPORT_SPEAKER = new Key<>(RtcParameters.KEY_AUDIO_REPORT_SPEAKER, Boolean.class);
702 
703 
714  @Writable
715  public static final Key<Boolean> KEY_AUDIO_HIGH_QUALITY = new Key<>(RtcParameters.KEY_AUDIO_HIGH_QUALITY, Boolean.class);
716 
717 
739  @Writable
740  @Runtime
745  public static final Key<Integer> KEY_VIDEO_CAPTURE_ORIENTATION = new Key<>(RtcParameters.KEY_VIDEO_CAPTURE_ORIENTATION, Integer.class);
746 
747 
769  @Writable
770  @Runtime
775  public static final Key<Integer> KEY_VIDEO_FIXED_CROP_RATIO = new Key<>(RtcParameters.KEY_VIDEO_FIXED_CROP_RATIO, Integer.class);
776 
777 
786  @Writable
787  @Runtime
788  public static final Key<Boolean> KEY_VIDEO_LOCAL_PREVIEW_MIRROR = new Key<>(RtcParameters.KEY_VIDEO_LOCAL_PREVIEW_MIRROR, Boolean.class);
789 
790 
799  @Runtime
800  @Writable
801  public static final Key<Boolean> KEY_VIDEO_TRANSPORT_MIRROR = new Key<>(RtcParameters.KEY_VIDEO_TRANSPORT_MIRROR, Boolean.class);
802 
803 
812  @Writable
813  public static final Key<Boolean> KEY_SERVER_AUDIO_RECORD = new Key<>(RtcParameters.KEY_SERVER_AUDIO_RECORD, Boolean.class);
814 
815 
824  @Writable
825  public static final Key<Boolean> KEY_SERVER_VIDEO_RECORD = new Key<>(RtcParameters.KEY_SERVER_VIDEO_RECORD, Boolean.class);
826 
827 
846  @Writable
847  @Runtime
848  @IntDef({MIX_AND_SINGLE,
849  MIX,
850  SINGLE})
851  public static final Key<Integer> KEY_SERVER_RECORD_MODE = new Key<>(RtcParameters.KEY_SERVER_RECORD_MODE, Integer.class);
852 
853 
862  @Writable
863  public static final Key<Boolean> KEY_SERVER_RECORD_SPEAKER = new Key<>(RtcParameters.KEY_SERVER_RECORD_SPEAKER, Boolean.class);
864 
865 
876  @Deprecated
877  @Writable
878  public static final Key<Boolean> KEY_SERVER_LIVE_RECORD = new Key<>(RtcParameters.KEY_SERVER_LIVE_RECORD, Boolean.class);
879 
880 
893  @Deprecated
894  @Writable
895  public static final Key<AVChatLiveCompositingLayout> KEY_SESSION_LIVE_COMPOSITING_LAYOUT =
896  new Key<>(RtcParameters.KEY_SESSION_LIVE_COMPOSITING_LAYOUT, AVChatLiveCompositingLayout.class);
897 
898 
911  @Writable
912  public static final Key<Boolean> KEY_SESSION_LIVE_MODE = new Key<>(RtcParameters.KEY_SESSION_LIVE_MODE, Boolean.class);
913 
925  @Writable
926  public static final Key<String> KEY_COMPATIBILITY_CONFIG_SERVER =
927  new Key<>(RtcParameters.KEY_COMPATIBILITY_CONFIG_SERVER, String.class);
928 
938  @Writable
939  public static final Key<String> KEY_COMPATIBILITY_CONFIG_LOCAL =
940  new Key<>(RtcParameters.KEY_COMPATIBILITY_CONFIG_LOCAL, String.class);
941 
942 
954  @Writable
955  @Deprecated
956  public static final Key<Boolean> KEY_AUDIO_EXTERNAL_CAPTURE =
957  new Key<>(RtcParameters.KEY_AUDIO_EXTERNAL_CAPTURE, Boolean.class);
958 
962  @Writable
963  public static final Key<Integer> KEY_AUDIO_PROCESS_DUMP_FLAG_DEBUG =
964  new Key<>(RtcParameters.KEY_AUDIO_PROCESS_DUMP_FLAG_DEBUG, Integer.class);
965 
966 
970  @Writable
971  @Runtime
972  public static final Key<Boolean> KEY_PROFILE_TRACE_FLAG_DEBUG =
973  new Key<>(RtcParameters.KEY_PROFILE_TRACE_FLAG_DEBUG, Boolean.class);
974 
975 
979  @Writable
984  public static final Key<Integer> KEY_AUDIO_PLAYBACK_DEFAULT_SAMPLE_RATE =
985  new Key<>(RtcParameters.KEY_AUDIO_PLAYBACK_DEFAULT_SAMPLE_RATE, Integer.class);
986 
987 
988  private RtcParameters mRawParams;
989 
990  public AVChatParameters() {
991  mRawParams = new RtcParameters();
992  }
993 
994  public void clear() {
995  mRawParams.clear();
996  }
997 
998  public RtcParameters getRawParameters() {
999  return mRawParams;
1000  }
1001 
1002  public void setRawParameters(RtcParameters parameters) {
1003  mRawParams = new RtcParameters();
1004 
1005  Set<String> keys = parameters.keys();
1006 
1007  if (keys != null) {
1008  for (String key : keys) {
1009  mRawParams.setObject(key, parameters.getObject(key));
1010  }
1011  }
1012  }
1013 
1014  public final AVChatParameters setRequestKeys(Set<Key> keys) {
1015  checkNotNull(keys);
1016 
1017  Set<String> keyName = new HashSet<>(keys.size());
1018  for (Key key : keys) {
1019  keyName.add(key.name());
1020  }
1021  mRawParams.setRequestKeys(keyName);
1022  return this;
1023  }
1024 
1025 
1026  public final AVChatParameters setRequestKey(Key key) {
1027  checkNotNull(key);
1028  mRawParams.setRequestKey(key.name());
1029  return this;
1030  }
1031 
1032 
1033  public final boolean getBoolean(Key<Boolean> key) {
1034  return get(key);
1035  }
1036 
1037  public final int getInteger(Key<Integer> key) {
1038  return get(key);
1039  }
1040 
1041  public final String getString(Key<String> key) {
1042  return get(key);
1043  }
1044 
1045  public final void setInteger(Key<Integer> key, int value) {
1046  set(key, value);
1047  }
1048 
1049  public final void setBoolean(Key<Boolean> key, boolean value) {
1050  set(key, value);
1051  }
1052 
1053  public final void setString(Key<String> key, String value) {
1054  set(key, value);
1055  }
1056 
1057  public final boolean containsKey(Key key) {
1058  checkNotNull(key);
1059  return mRawParams.containsKey(key.name());
1060  }
1061 
1062  public final <T> void set(Key<T> key, T value) {
1063  checkNotNull(key);
1064  mRawParams.setObject(key.name(), value);
1065  }
1066 
1067  public final <T> T get(Key<T> key) {
1068  checkNotNull(key);
1069  T value = (T) mRawParams.getObject(key.name());
1070  return value;
1071  }
1072 
1073  public final void setFloat(Key<Float> key, float value) {
1074  set(key, value);
1075  }
1076 
1077  public final float getFloat(Key<Float> key) {
1078  return get(key);
1079  }
1080 
1081  public final void removeParameters(Key key) {
1082  checkNotNull(key);
1083  mRawParams.removeParameters(key.name());
1084  }
1085 
1086 
1087  private static <T> T checkNotNull(T reference) {
1088  if (reference == null) {
1089  throw new NullPointerException();
1090  }
1091  return reference;
1092  }
1093 
1094 
1095 }
int I420
I420数据格式,4.8.0开始为默认值
static final Key< String > KEY_AUDIO_EFFECT_AUTOMATIC_GAIN_CONTROL
int NORMAL
普通用户,允许收发数据
String PLATFORM_BUILTIN
如果平台内置了语音处理, 优先使用平台内置语音处理
int ORIENTATION_LANDSCAPE_LEFT
Indicates that video should be oriented horizontally, home button on the left.
final void setBoolean(Key< Boolean > key, boolean value)
final void setFloat(Key< Float > key, float value)
int AUDIENCE
观众用户,仅允许接收数据
int ORIENTATION_PORTRAIT_UPSIDEDOWN
Indicates that video should be oriented vertically, home button on the top.
static final Key< Integer > KEY_AUDIO_PROCESS_DUMP_FLAG_DEBUG
语音播放采样率设置
final AVChatParameters setRequestKeys(Set< Key > keys)
int NV21
NV21数据各式,弃用,建议使用I420
final void setString(Key< String > key, String value)
int ORIENTATION_PORTRAIT
Indicates that video should be oriented vertically, home button on the bottom.
static final Key< AVChatLiveCompositingLayout > KEY_SESSION_LIVE_COMPOSITING_LAYOUT
static final Key< Boolean > KEY_PROFILE_TRACE_FLAG_DEBUG
设置是否打印 kTraceProfile 日志
static final Key< Integer > KEY_AUDIO_PLAYBACK_DEFAULT_SAMPLE_RATE
语音播放采样率设置
编解码模式,主要用来区分软件编解码和硬件编解码
final void setInteger(Key< Integer > key, int value)
static final Key< String > KEY_AUDIO_EFFECT_ACOUSTIC_ECHO_CANCELER
int ORIENTATION_LANDSCAPE_RIGHT
Indicates that video should be oriented horizontally, home button on the right.