/**
* Copyright (C) 2010-2012 Regis Montoya (aka r3gis - www.r3gis.fr)
* This file is part of CSipSimple.
*
* CSipSimple is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* If you own a pjsip commercial license you can also redistribute it
* and/or modify it under the terms of the GNU Lesser General Public License
* as an android library.
*
* CSipSimple 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with CSipSimple. If not, see <http://www.gnu.org/licenses/>.
*/
package com.csipsimple.utils.video;
import android.content.Context;
import org.webrtc.videoengine.CaptureCapabilityAndroid;
import org.webrtc.videoengine.VideoCaptureDeviceInfoAndroid;
import java.util.ArrayList;
import java.util.List;
public class VideoUtils5 extends VideoUtilsWrapper {
@Override
public List<VideoCaptureDeviceInfo> getVideoCaptureDevices(Context ctxt) {
VideoCaptureDeviceInfoAndroid deviceInfoAndroid = VideoCaptureDeviceInfoAndroid.CreateVideoCaptureDeviceInfoAndroid(0, ctxt);
List<VideoCaptureDeviceInfo> arr = new ArrayList<VideoCaptureDeviceInfo>();
if(deviceInfoAndroid == null) {
return arr;
}
int i;
for(i = 0; i < deviceInfoAndroid.NumberOfDevices(); i++) {
String deviceName = deviceInfoAndroid.GetDeviceUniqueName(i);
CaptureCapabilityAndroid[] caps = deviceInfoAndroid.GetCapabilityArray(deviceName);
VideoCaptureDeviceInfo vcdi = new VideoCaptureDeviceInfo();
int orientation = deviceInfoAndroid.GetOrientation(deviceName);
boolean invertWidthHeight = false;
if(orientation == 90 || orientation == 270) {
invertWidthHeight = true;
}
for(CaptureCapabilityAndroid cap : caps) {
VideoCaptureCapability vcc = new VideoCaptureCapability();
vcc.height = invertWidthHeight ? cap.width : cap.height;
vcc.width = invertWidthHeight ? cap.height : cap.width;
vcc.fps = cap.maxFPS;
vcdi.capabilities.add(vcc);
}
CaptureCapabilityAndroid bcap = deviceInfoAndroid.GetBestCapability(deviceName);
if(bcap != null) {
vcdi.bestCapability = new VideoCaptureCapability();
vcdi.bestCapability.width = invertWidthHeight ? bcap.width : bcap.width;
vcdi.bestCapability.height = invertWidthHeight ? bcap.height : bcap.height;
vcdi.bestCapability.fps = bcap.maxFPS;
}
arr.add(vcdi);
}
return arr;
}
}