| /* |
| * Copyright 2013 The Android Open Source Project |
| * |
| * 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. |
| */ |
| |
| package androidx.media.filterfw.samples.simplecamera; |
| |
| import android.util.Log; |
| |
| import java.io.BufferedWriter; |
| import java.io.FileWriter; |
| import java.io.IOException; |
| |
| import androidx.media.filterfw.Filter; |
| import androidx.media.filterfw.FrameBuffer2D; |
| import androidx.media.filterfw.FrameImage2D; |
| import androidx.media.filterfw.FrameType; |
| import androidx.media.filterfw.FrameValue; |
| import androidx.media.filterfw.MffContext; |
| import androidx.media.filterfw.OutputPort; |
| import androidx.media.filterfw.Signature; |
| |
| |
| public class CSVWriterFilter extends Filter { |
| |
| private static final String TAG = "CSVWriterFilter"; |
| private static boolean mLogVerbose = Log.isLoggable(TAG, Log.VERBOSE); |
| private boolean mFirstTime = true; |
| private final static int NUM_FRAMES = 3; |
| private final String mFileName = "/CSVFile.csv"; |
| |
| public CSVWriterFilter(MffContext context, String name) { |
| |
| super(context, name); |
| } |
| |
| @Override |
| public Signature getSignature() { |
| FrameType floatT = FrameType.single(float.class); |
| FrameType stringT = FrameType.single(String.class); |
| FrameType floatArrayT = FrameType.array(float.class); |
| |
| return new Signature() |
| .addInputPort("sharpness", Signature.PORT_REQUIRED, floatT) |
| .addInputPort("overExposure", Signature.PORT_REQUIRED, floatT) |
| .addInputPort("underExposure", Signature.PORT_REQUIRED, floatT) |
| .addInputPort("colorfulness", Signature.PORT_REQUIRED, floatT) |
| .addInputPort("contrastRating", Signature.PORT_REQUIRED, floatT) |
| .addInputPort("brightness", Signature.PORT_REQUIRED, floatT) |
| .addInputPort("motionValues", Signature.PORT_REQUIRED, floatArrayT) |
| .addInputPort("imageFileName", Signature.PORT_REQUIRED, stringT) |
| .addInputPort("csvFilePath", Signature.PORT_REQUIRED, stringT) |
| .disallowOtherPorts(); |
| } |
| |
| @Override |
| protected void onProcess() { |
| |
| |
| |
| Log.v(TAG,"in csv writer on process"); |
| FrameValue sharpnessValue = |
| getConnectedInputPort("sharpness").pullFrame().asFrameValue(); |
| float sharpness = ((Float)sharpnessValue.getValue()).floatValue(); |
| |
| FrameValue overExposureValue = |
| getConnectedInputPort("overExposure").pullFrame().asFrameValue(); |
| float overExposure = ((Float)overExposureValue.getValue()).floatValue(); |
| |
| FrameValue underExposureValue = |
| getConnectedInputPort("underExposure").pullFrame().asFrameValue(); |
| float underExposure = ((Float)underExposureValue.getValue()).floatValue(); |
| |
| FrameValue colorfulnessValue = |
| getConnectedInputPort("colorfulness").pullFrame().asFrameValue(); |
| float colorfulness = ((Float)colorfulnessValue.getValue()).floatValue(); |
| |
| FrameValue contrastValue = |
| getConnectedInputPort("contrastRating").pullFrame().asFrameValue(); |
| float contrast = ((Float)contrastValue.getValue()).floatValue(); |
| |
| FrameValue brightnessValue = |
| getConnectedInputPort("brightness").pullFrame().asFrameValue(); |
| float brightness = ((Float)brightnessValue.getValue()).floatValue(); |
| |
| FrameValue motionValuesFrameValue = |
| getConnectedInputPort("motionValues").pullFrame().asFrameValue(); |
| float[] motionValues = (float[]) motionValuesFrameValue.getValue(); |
| float vectorAccel = (float) Math.sqrt(Math.pow(motionValues[0], 2) + |
| Math.pow(motionValues[1], 2) + Math.pow(motionValues[2], 2)); |
| |
| FrameValue imageFileNameFrameValue = |
| getConnectedInputPort("imageFileName").pullFrame().asFrameValue(); |
| String imageFileName = ((String)imageFileNameFrameValue.getValue()); |
| |
| FrameValue csvFilePathFrameValue = |
| getConnectedInputPort("csvFilePath").pullFrame().asFrameValue(); |
| String csvFilePath = ((String)csvFilePathFrameValue.getValue()); |
| |
| |
| if(mFirstTime) { |
| try { |
| FileWriter fileWriter = new FileWriter(csvFilePath + "/CSVFile.csv"); |
| BufferedWriter csvWriter = new BufferedWriter(fileWriter); |
| |
| csvWriter.write("FileName,Sharpness,OverExposure,UnderExposure,Colorfulness," + |
| "ContrastRating,Brightness,Motion"); |
| csvWriter.newLine(); |
| csvWriter.close(); |
| } catch (IOException e) { |
| // TODO Auto-generated catch block |
| e.printStackTrace(); |
| } |
| mFirstTime = false; |
| } |
| |
| try { |
| Log.v(TAG,"about to write to file"); |
| FileWriter fileWriter = new FileWriter(csvFilePath + mFileName, true); |
| BufferedWriter csvWriter = new BufferedWriter(fileWriter); |
| |
| csvWriter.write(imageFileName + "," + sharpness + "," + overExposure + "," + |
| underExposure + "," + colorfulness + "," + contrast + "," + brightness + |
| "," + vectorAccel); |
| Log.v(TAG, "" + imageFileName + "," + sharpness + "," + overExposure + "," + |
| underExposure + "," + colorfulness + "," + contrast + "," + brightness + |
| "," + vectorAccel); |
| csvWriter.newLine(); |
| csvWriter.close(); |
| } catch (IOException e) { |
| // TODO Auto-generated catch block |
| e.printStackTrace(); |
| throw new RuntimeException(e); |
| } |
| } |
| } |