603 Commits

Author SHA1 Message Date
christosts
d0d0935f3f Fix NPE in PlayerActivity
PiperOrigin-RevId: 438010395
2022-04-07 15:19:59 +01:00
ibaker
544bb8546c More demo app unstable API opt-in and reshuffling
Follow-up to <unknown commit>

PiperOrigin-RevId: 437777871
2022-04-07 14:59:09 +01:00
ibaker
1168c419d1 Replace Util.SDK_INT with Build.VERSION.SDK_INT in the demo app
Util.SDK_INT will not be part of the stable API. This change only
touches those parts of the main demo app that will not be opted-in to
the unstable API for other reasons (e.g. download use-cases).

PiperOrigin-RevId: 437777687
2022-04-07 14:55:40 +01:00
andrewlewis
35528fd1bf Add support for requesting color transfer to SDR
From Android T onwards `MediaCodec` supports requesting tone-mapping down to
SDR. Add an option to request this behavior and document that it isn't
supported before T. Also add an option in the demo app to try it out.

Tested manually on a prerelease build.

PiperOrigin-RevId: 437765325
2022-04-07 14:44:59 +01:00
ibaker
a8896c3996 Switch the demo app from Util.areEqual to Guava's Objects.equals
Util.areEqual will not be part of the stable API.

PiperOrigin-RevId: 437723080
2022-04-07 14:34:32 +01:00
huangdarwin
083aa7b29d Transformer Demo: Add 8k24fps video option.
This can help allow Transformer be more aware of issues in high-res videos.

PiperOrigin-RevId: 437313282
2022-04-07 14:27:43 +01:00
ibaker
9c2ee5a224 Demo: Move DownloadService calls to new method in SampleChooserActivity
This allows the whole startDownloadService() method to be opted into the
unstable media3 API in a follow-up change.

PiperOrigin-RevId: 437228776
2022-03-25 14:39:34 +00:00
ibaker
84eaa5801a Switch the main demo app to use Guava's Preconditions
ExoPlayer's internal Assertions class will not be part of the stable
API.

PiperOrigin-RevId: 437008634
2022-03-24 16:07:42 +00:00
ibaker
cfb8289c5a Switch demo apps from HttpDataSource to DataSource
All the (Http)DataSource interactions can be done with the DataSource
interface and don't need HttpDataSource.

PiperOrigin-RevId: 436521036
2022-03-22 18:12:00 +00:00
ibaker
8ea00b3a47 Switch DRM and download components from HttpDataSource to DataSource
All the (Http)DataSource interactions can be done with the DataSource
interface and don't need HttpDataSource.

PiperOrigin-RevId: 436520898
2022-03-22 18:11:31 +00:00
huangdarwin
ea470893cd FrameProcessor: Add a ScaleToFitFrameProcessor builder.
This allows us to input scale and rotation in an easier-to-use manner.

PiperOrigin-RevId: 436175982
2022-03-21 12:08:18 +00:00
hschlueter
255007623d Clarify GlProgram parameter name.
PiperOrigin-RevId: 434441008
2022-03-15 00:45:50 +00:00
olly
b2a5298e27 Decouple UI module from ExoPlayer
This change rewrites the UI module's track selection
components to depend on the Player API, allowing us to
finally remove the UI module's dependency on ExoPlayer
as a concrete player implementation.

PiperOrigin-RevId: 432989318
2022-03-09 15:16:18 +00:00
hschlueter
4760a03444 Only allow HEVC output MIME selection in demo for API>=24.
The muxer doesn't support HEVC below API 24. The is documented in
the TransformationRequest javadoc and the Transformer.Builder will
throw if HEVC is requested below API 24 so the option should not
be part of the demo for those devices.

#mse-bug-week

PiperOrigin-RevId: 429343805
2022-02-18 15:03:02 +00:00
Ian Baker
87d8ca0af2 Reformat some javadoc 2022-02-18 15:02:33 +00:00
samrobinson
90db1d865c Add new public 4k60 portrait video to the demo application.
PiperOrigin-RevId: 429323642
2022-02-18 14:59:45 +00:00
olly
ec3ba64817 Simplify TracksInfo API
isTypeSupportedOrEmpty is very specific and a little hard to
understand unless you know the one thing it's useful for. This
commit replaces it with isTypeSupported, which can be used in
conjunction with the recently added containsType method.

PiperOrigin-RevId: 429312712
2022-02-17 16:24:01 +00:00
hschlueter
5b8c4e09e0 Add enable fallback option to transformer demo.
Also invert disableFallback parameter in DefaultEncoderFactory
to enableFallback. Fallback is still enabled by default.

PiperOrigin-RevId: 429253266
2022-02-17 15:02:36 +00:00
bachinger
2bc65f9463 Integrate IMA SSAI samples in main demo app
PiperOrigin-RevId: 429059793
2022-02-17 14:24:02 +00:00
kimvde
09230a67f7 Handle player release timing out in transformer
- The resources were released twice before, which is not necessary since
  the MSG_RELEASE message is already in the internal player queue.
- The demo app was failing because the stop watch was stopped in
  onTransformationError after being reset.

#minor-release
#mse-bug-week

PiperOrigin-RevId: 428794426
2022-02-17 14:24:02 +00:00
huangdarwin
a08517e1d8 Transformer GL: Update TODOs.
Document some suboptimal things, and remove TODOs that were
fixed already or no longer relevant. Comment-only change.

PiperOrigin-RevId: 428749344
2022-02-17 14:24:02 +00:00
andrewlewis
fd2093956f Fix debug frame showing through player on old devices
PiperOrigin-RevId: 428524300
2022-02-17 11:54:28 +00:00
andrewlewis
748e2a5ff8 Improve transformer activity layout
On Samsung S21 with light theme the debug labels weren't showing up because the player view was visible (with a black background) while the transformation was in progress, matching the debug label text color. Hide the player view until the transformation is complete to fix this.

Also tweak the layout slightly to add space between the card border and the labels.

#mse-bug-week

PiperOrigin-RevId: 428455824
2022-02-17 11:30:42 +00:00
huangdarwin
cacec8e02f Transformer GL: Implement auto-scaling to preserve input frame.
PiperOrigin-RevId: 427982223
2022-02-17 10:59:51 +00:00
samrobinson
a3f981ae86 Output from the Transformer the average audio & video bitrates.
PiperOrigin-RevId: 426956151
2022-02-08 11:00:05 +00:00
ibaker
c235087c11 Remove deprecated ActionFile and ActionFileUpgradeUtil
#minor-release

PiperOrigin-RevId: 426868933
2022-02-08 10:26:35 +00:00
hschlueter
6c061894b0 Make GlProgram an outer class.
This change makes GlUtil.Program an outer class named GlProgram,
and also moves private static helpers as well as the inner classes
Attribute and Uniform which were only used by GlUtil.Program to
GlProgram. Other static utility methods remain in GlUtil.

No functional changes intended.

PiperOrigin-RevId: 426119299
2022-02-04 10:23:39 +00:00
huangdarwin
ead64f5406 Transformer Demo: Remove unneeded external storage permission
Tested by confirming transformations still work and write to a output file in a
scoped-storage directory on a:
* Nexus 6P API 23 emulator
* Google Pixel 4 API 31 physical device

PiperOrigin-RevId: 425644266
2022-02-02 10:44:00 +00:00
hschlueter
4c5e266829 Make transformer demo configuration options scrollable.
On devices with a smaller screen / low resolution not all
options fit, so scrolling is needed.

PiperOrigin-RevId: 425635224
2022-02-02 10:40:13 +00:00
olly
29a6280b1b Rewrite EventLogger to use new track APIs
PiperOrigin-RevId: 425595951
2022-02-02 10:22:05 +00:00
andrewlewis
7c8f6d5d69 Add support for experimenting with HDR
- Add a checkbox in the demo app to enable experimental HDR editing.
- Add an `experimental_` method to `TransformationRequest` to enable HDR editing.
- Add fragment/vertex shaders for the experimental HDR pipeline. The main difference compared to the existing shaders is that we sample from the decoder in YUV rather than RGB (because the YUV -> RGB conversion in the graphics driver is not precisely defined, so we need to do this to get consistent results), which requires the use of ES 3, and then do a crude YUV -> RGB conversion in the shader (ignoring the input color primaries for now).
- When HDR editing is enabled, we force using `FrameEditor` (no passthrough) to avoid the need to select another edit operation, and use the new shaders. The `EGLContext` and `EGLSurface` also need to be set up differently for this path.

PiperOrigin-RevId: 425570639
2022-02-02 10:04:32 +00:00
andrewlewis
3023385574 Switch from valueOf to parse methods
This fixes some warnings that show up in Android Studio (due to using methods
that autobox unnecessarily).

PiperOrigin-RevId: 424892352
2022-02-01 14:15:21 +00:00
andrewlewis
b81568f836 Publish the transformer demo app
PiperOrigin-RevId: 424850283
2022-01-28 14:37:15 +00:00
olly
5d7641c6f1 Fix some lint warnings
PiperOrigin-RevId: 424383900
2022-01-28 09:37:06 +00:00
olly
aceacb05ca Fix spurious unsupported tracks toast in demo apps
PiperOrigin-RevId: 424062588
2022-01-25 20:05:06 +00:00
huangdarwin
308eaf55c6 GL: Update BitmapOverlayVideoProcessor naming conventions.
To be more readable and consistent with Transformer GL.

Tested by running gl-demo with no crash.

PiperOrigin-RevId: 421815519
2022-01-17 13:56:12 +00:00
huangdarwin
f216fa2042 Transformer GL: Clarify variables and comments.
Simplifying and clarifying variables, and adding comments.

Tested by confirming demo-gl and demo-transformer both
correctly display videos

PiperOrigin-RevId: 421792079
2022-01-14 15:34:09 +00:00
ibaker
f673676c6d Specify the video ID used in the Widevine DASH samples in the demo app
This value is the default used by widevine_test at
proxy.uat.widevine.com, but it's not easy to find that info so it's
clearer to document it explicitly here for consistency with the "policy
tests" section below where all the URLs contain a video_id parameter.

Issue: google/ExoPlayer#9852
PiperOrigin-RevId: 421781663
2022-01-14 15:30:21 +00:00
ibaker
5e8d1eb7f3 Add MediaSource.Factory and deprecate MediaSourceFactory
This more closely matches the pattern we have for all implementations
except DefaultMediaSourceFactory (e.g. ProgressiveMediaSource.Factory)
and other factory interfaces like (Http)DataSource.Factory.

PiperOrigin-RevId: 417826803
2022-01-04 12:51:47 +00:00
tonihei
65c444538b Rename HLS master playlist to multivariant playlist
The spec renamed this type of playlist in the latest revision
to use a more inclusive technical term (see
https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-10)

PiperOrigin-RevId: 417560274
2021-12-21 17:14:42 +00:00
ibaker
e3548f267c Migrate usages of deprecated MediaSourceFactory methods
PiperOrigin-RevId: 417428182
2021-12-21 17:10:54 +00:00
ibaker
3f5304b891 Fix StyledPlayerControlView reference in demo app's PlayerActivity
PiperOrigin-RevId: 416809105
2021-12-20 12:51:22 +00:00
andrewlewis
cd6ba0680f Encapsulate attributes and uniforms within Program
Document that apps should retain `GlUtil.Program` while the program is in use,
and keep a reference to attributes/uniforms within the program to make sure
they don't get GC'd causing any allocated buffers passed to GL to become
invalid.

Tested manually by running gldemo and transformer.

PiperOrigin-RevId: 411516894
2021-11-26 14:54:33 +00:00
ibaker
b0cfe910a9 Fix javadoc reference to StyledPlayerView in cast demo app
This should have been done in
098c3a010e

PiperOrigin-RevId: 411073049
2021-11-26 14:51:21 +00:00
ibaker
674d70e8f3 Migrate the GL demo app from PlayerView to StyledPlayerView
PiperOrigin-RevId: 411006397
2021-11-19 14:25:57 +00:00
andrewlewis
fc0e6a075e Fix gldemo
The GL program needs to be used before accessing its attributes.

#minor-release

PiperOrigin-RevId: 410768017
2021-11-18 14:09:16 +00:00
ibaker
f6f0386681 Migrate the cast demo app from PlayerView to StyledPlayerView
StyledPlayerControlView can't really be used on its own (like
PlayerControlView was used here), so we instead use the same
StyledPlayerView instance for both local and casted playback,
replacing the content with a cast icon while casting.

PiperOrigin-RevId: 410764338
2021-11-18 14:00:24 +00:00
ibaker
364239ac8c Remove usages of ParserException from the demo app
PiperOrigin-RevId: 408311942
2021-11-08 14:36:53 +00:00
ibaker
b3b4645e69 Migrate GL demo from deprecated ExoPlayer.VideoComponent to ExoPlayer
#minor-release

PiperOrigin-RevId: 408304187
2021-11-08 14:27:05 +00:00
ibaker
ed63fee21c Migrate the demo app to use non-deprecated MediaItem Builders
#minor-release

PiperOrigin-RevId: 407843859
2021-11-08 09:43:55 +00:00