16 Commits

Author SHA1 Message Date
hschlueter
5422175ec1 Only use a FrameEditor if editing is needed.
When no editing is needed, the OpenGL steps can be skipped.

PiperOrigin-RevId: 413884305
2021-12-06 12:44:03 +00:00
huangdarwin
0578b2e4b2 Transformer GL: Create setTransformationMatrix().
Allows a transformation matrix to be input into Transformer,
to apply vertex transformations like cropping, rotation,
and other transformations built into android.graphics.Matrix.

Not building out into a VertexTransformation class yet, as
that class structure wouldn't make sense until we can modify
resolution, per TODOs.

PiperOrigin-RevId: 413384409
2021-12-02 15:21:33 +00:00
andrewlewis
5694a07ace Add unit test for FrameEditor
The test extracts and decodes the first video frame in the test media, renders it to the frame editor's input surface and then processes data. It then reads back the output from the frame editor, converts it to a bitmap and then compares that with a 'golden' bitmap (which is just the same as the test media's first video frame).

PiperOrigin-RevId: 413131811
2021-12-02 12:34:34 +00:00
samrobinson
f5789b74a0 Make use of try with-resources to auto close file.
PiperOrigin-RevId: 412901581
2021-12-02 12:21:03 +00:00
samrobinson
83408d065e Create and write the TransformationResult to on-device text file.
PiperOrigin-RevId: 412856100
2021-12-02 12:16:22 +00:00
samrobinson
51762a4795 Move MobileHarness based tests into a mh package.
PiperOrigin-RevId: 412438389
2021-11-26 16:26:20 +00:00
samrobinson
3cc64ae2df Pull files from the device cache after a MH test concludes.
PiperOrigin-RevId: 412251020
2021-11-26 16:04:12 +00:00
samrobinson
8d5b368991 Derive test output video name from the TAG.
We need the filename of the output videos to be predictable, because
MobileHarness requires the exact filename to pull the file.

PiperOrigin-RevId: 412092347
2021-11-26 15:55:11 +00:00
huangdarwin
0fbd4959fd Transformer: Move required Builder context to be a constructor arg.
Deprecates setContext() and moves the required Context arg into the constructor.

This way, the parameter can later be final and non-null, per the comment at:
ecb47ba564/depot/google3/third_party/java_src/android_libs/media/libraries/transformer/src/main/java/androidx/media3/transformer/TranscodingTransformer.java (97L)

Also, fixes setOutputMimeType_unsupportedMimeType_throws by providing a context
in the builder, and updating the FrameworkMuxer#supportsOutputMimeType to catch
IllegalArgumentExceptions thrown by FrameworkMuxer#mimeTypeToMuxerOutputFormat.

PiperOrigin-RevId: 412053564
2021-11-26 15:48:53 +00:00
samrobinson
7f8067aa6e Change RepeatedTranscode test to attempt no audio or no video.
Test failure message now also reports the number of different sizes.

PiperOrigin-RevId: 411529648
2021-11-26 15:10:21 +00:00
samrobinson
90cb02c942 Add a 120s timeout to transformer running within instrumentation tests.
PiperOrigin-RevId: 411526089
2021-11-26 15:07:15 +00:00
hschlueter
2ae9f54c23 Merge Transformer and TranscodingTransformer.
The features supported by `TranscodingTransformer` are a
superset of those supported by `Transformer` after merging
the video renderers in <unknown commit>. This change removes
`TranscodingTransformer` and adds its features to `Transformer`.

PiperOrigin-RevId: 411072392
2021-11-26 14:48:08 +00:00
andrewlewis
9f6cdb4c36 Update bug number
PiperOrigin-RevId: 410770666
2021-11-18 14:13:25 +00:00
samrobinson
f634ca3306 Ignore manual test from the transformer_mobile_test target.
In the near future, we will be able to specify which tests run on this
target explicitly, at which point this ignore will be removed.

PiperOrigin-RevId: 410758785
2021-11-18 13:56:11 +00:00
andrewlewis
beccfaba3b Avoid buffers used by OpenGL getting GC'ed
The `GlUtil` wrappers for attributes/uniforms allocate buffers that are passed into OpenGL, and it seems that the distorted output was caused by these buffers being garbage collected.

The issue was difficult to reproduce manually. Add a test that does repeated transcodes in a loop (marked `@Ignore` for now because it runs for a long time and requires network access so may be flaky) to make it easier to run many transcodes and look for inconsistent output. For now the consistency check is just based on the file size which is very likely to change if the actual video frames change.

Verified that the test fails before, and passes once the attributes and uniforms are stored in fields as in this CL.

PiperOrigin-RevId: 410581706
2021-11-18 13:47:36 +00:00
samrobinson
793e675de8 Setup the initial instrumentation tests for transformer.
Due to sharding, each test should be in a separate class.

PiperOrigin-RevId: 409142436
2021-11-11 16:57:45 +00:00