mirror of
https://github.com/samsonjs/media.git
synced 2026-04-14 12:45:47 +00:00
Save the bitmap produced by the FrameEditorDataProcessingTest to cache.
The bitmap can then be retrieved through ADB. #mse-bug-week PiperOrigin-RevId: 429293231
This commit is contained in:
parent
63104064ca
commit
cf811080ed
1 changed files with 27 additions and 0 deletions
|
|
@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
|
|||
import static java.lang.Math.abs;
|
||||
import static java.lang.Math.max;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.AssetFileDescriptor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
|
@ -34,7 +35,10 @@ import android.media.MediaExtractor;
|
|||
import android.media.MediaFormat;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.android.exoplayer2.util.Log;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
|
|
@ -51,6 +55,8 @@ import org.junit.runner.RunWith;
|
|||
@RunWith(AndroidJUnit4.class)
|
||||
public final class FrameEditorDataProcessingTest {
|
||||
|
||||
private static final String TAG = "FrameEditorDataProcessingTest";
|
||||
|
||||
// Input MP4 file to transform.
|
||||
private static final String INPUT_MP4_ASSET_STRING = "media/mp4/sample.mp4";
|
||||
|
||||
|
|
@ -119,6 +125,7 @@ public final class FrameEditorDataProcessingTest {
|
|||
// TODO(b/207848601): switch to using proper tooling for testing against golden data.
|
||||
float averagePixelAbsoluteDifference =
|
||||
getAveragePixelAbsoluteDifferenceArgb8888(expectedBitmap, editedBitmap);
|
||||
saveTestBitmapToCacheDirectory("processData_noEdits", editedBitmap);
|
||||
assertThat(averagePixelAbsoluteDifference).isAtMost(MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE);
|
||||
}
|
||||
|
||||
|
|
@ -137,6 +144,7 @@ public final class FrameEditorDataProcessingTest {
|
|||
// data.simple
|
||||
float averagePixelAbsoluteDifference =
|
||||
getAveragePixelAbsoluteDifferenceArgb8888(expectedBitmap, editedBitmap);
|
||||
saveTestBitmapToCacheDirectory("processData_translateRight", editedBitmap);
|
||||
assertThat(averagePixelAbsoluteDifference).isAtMost(MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE);
|
||||
}
|
||||
|
||||
|
|
@ -154,6 +162,7 @@ public final class FrameEditorDataProcessingTest {
|
|||
// TODO(b/207848601): switch to using proper tooling for testing against golden data.
|
||||
float averagePixelAbsoluteDifference =
|
||||
getAveragePixelAbsoluteDifferenceArgb8888(expectedBitmap, editedBitmap);
|
||||
saveTestBitmapToCacheDirectory("processData_scaleNarrow", editedBitmap);
|
||||
assertThat(averagePixelAbsoluteDifference).isAtMost(MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE);
|
||||
}
|
||||
|
||||
|
|
@ -174,6 +183,7 @@ public final class FrameEditorDataProcessingTest {
|
|||
// TODO(b/207848601): switch to using proper tooling for testing against golden data.
|
||||
float averagePixelAbsoluteDifference =
|
||||
getAveragePixelAbsoluteDifferenceArgb8888(expectedBitmap, editedBitmap);
|
||||
saveTestBitmapToCacheDirectory("processData_rotate90", editedBitmap);
|
||||
assertThat(averagePixelAbsoluteDifference).isAtMost(MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE);
|
||||
}
|
||||
|
||||
|
|
@ -328,4 +338,21 @@ public final class FrameEditorDataProcessingTest {
|
|||
}
|
||||
return (float) sumMaximumAbsoluteDifferences / (width * height);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the {@link Bitmap} to the {@link Context#getCacheDir() cache directory} as a PNG.
|
||||
*
|
||||
* <p>File name will be {@code <testId>_output.png}.
|
||||
*
|
||||
* @param testId Name of the test that produced the {@link Bitmap}.
|
||||
* @param bitmap The {@link Bitmap} to save.
|
||||
*/
|
||||
private static void saveTestBitmapToCacheDirectory(String testId, Bitmap bitmap) {
|
||||
File file = new File(getApplicationContext().getExternalCacheDir(), testId + "_output.png");
|
||||
try (FileOutputStream outputStream = new FileOutputStream(file)) {
|
||||
bitmap.compress(Bitmap.CompressFormat.PNG, /* quality= */ 100, outputStream);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Could not write Bitmap to file path: " + file.getAbsolutePath(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue