@Override public Renderer[] createRenderers(Handler eventHandler, VideoRendererEventListener videoRendererEventListener, AudioRendererEventListener audioRendererEventListener, TextRenderer.Output textRendererOutput, MetadataRenderer.Output metadataRendererOutput) { ArrayList<Renderer> renderersList = new ArrayList<>(); buildVideoRenderers(context, drmSessionManager, allowedVideoJoiningTimeMs, eventHandler, videoRendererEventListener, extensionRendererMode, renderersList); buildAudioRenderers(context, drmSessionManager, buildAudioProcessors(), eventHandler, audioRendererEventListener, extensionRendererMode, renderersList); buildTextRenderers(context, textRendererOutput, eventHandler.getLooper(), extensionRendererMode, renderersList); buildMetadataRenderers(context, metadataRendererOutput, eventHandler.getLooper(), extensionRendererMode, renderersList); buildMiscellaneousRenderers(context, eventHandler, extensionRendererMode, renderersList); return renderersList.toArray(new Renderer[renderersList.size()]); }
private void buildRenderers(Context context, DrmSessionManager<FrameworkMediaCrypto> drmSessionManager, ArrayList<Renderer> renderersList, long allowedVideoJoiningTimeMs) { MediaCodecVideoRenderer videoRenderer = new MediaCodecVideoRenderer(context, MediaCodecSelector.DEFAULT, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, allowedVideoJoiningTimeMs, drmSessionManager, false, mainHandler, componentListener, MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY); renderersList.add(videoRenderer); Renderer audioRenderer = new MediaCodecAudioRenderer(MediaCodecSelector.DEFAULT, drmSessionManager, true, mainHandler, componentListener, AudioCapabilities.getCapabilities(context), AudioManager.STREAM_MUSIC); renderersList.add(audioRenderer); Renderer textRenderer = new TextRenderer(componentListener, mainHandler.getLooper()); renderersList.add(textRenderer); MetadataRenderer<List<Id3Frame>> id3Renderer = new MetadataRenderer<>(componentListener, mainHandler.getLooper(), new Id3Decoder()); renderersList.add(id3Renderer); }
TextRenderer.Output output() { return new TextRenderer.Output() { @Override public void onCues(List<Cue> cues) { TextCues textCues = ExoPlayerCueMapper.map(cues); playerView.setSubtitleCue(textCues); } }; }
@NonNull protected List<Renderer> buildCaptionRenderers() { List<Renderer> renderers = new ArrayList<>(); renderers.add(new TextRenderer(captionListener, handler.getLooper())); return renderers; }
/** * Clears the output receiving text events if it matches the one passed. Else does nothing. * * @param output The output to clear. */ public void clearTextOutput(TextRenderer.Output output) { if (textOutput == output) { textOutput = null; } }
/** * Builds the {@link Renderer} instances for a {@link SimpleExoPlayer}. * * @param eventHandler A handler to use when invoking event listeners and outputs. * @param videoRendererEventListener An event listener for video renderers. * @param videoRendererEventListener An event listener for audio renderers. * @param textRendererOutput An output for text renderers. * @param metadataRendererOutput An output for metadata renderers. * @return The {@link Renderer instances}. */ Renderer[] createRenderers(Handler eventHandler, VideoRendererEventListener videoRendererEventListener, AudioRendererEventListener audioRendererEventListener, TextRenderer.Output textRendererOutput, MetadataRenderer.Output metadataRendererOutput);
/** * Builds text renderers for use by the player. * * @param context The {@link Context} associated with the player. * @param output An output for the renderers. * @param outputLooper The looper associated with the thread on which the output should be * called. * @param extensionRendererMode The extension renderer mode. * @param out An array to which the built renderers should be appended. */ protected void buildTextRenderers(Context context, TextRenderer.Output output, Looper outputLooper, @ExtensionRendererMode int extensionRendererMode, ArrayList<Renderer> out) { out.add(new TextRenderer(output, outputLooper)); }
/** * Sets an output to receive text events. * * @param output The output. */ public void setTextOutput(TextRenderer.Output output) { textOutput = output; }
/** * Builds text renderers for use by the player. * * @param output An output for the renderers. * @param outputLooper The looper associated with the thread on which the output should be * called. * @param outRenderers An array to which the built renderers should be appended. */ private void buildTextRenderers(TextOutput output, Looper outputLooper, List<Renderer> outRenderers) { outRenderers.add(new TextRenderer(output, outputLooper)); }
/** * Builds text renderers for use by the player. * * @param context The {@link Context} associated with the player. * @param mainHandler A handler associated with the main thread's looper. * @param extensionRendererMode The extension renderer mode. * @param output An output for the renderers. * @param out An array to which the built renderers should be appended. */ protected void buildTextRenderers(Context context, Handler mainHandler, @ExtensionRendererMode int extensionRendererMode, TextRenderer.Output output, ArrayList<Renderer> out) { out.add(new TextRenderer(output, mainHandler.getLooper())); }
/** * Builds text renderers for use by the player. * * @param context The {@link Context} associated with the player. * @param output An output for the renderers. * @param outputLooper The looper associated with the thread on which the output should be * called. * @param extensionRendererMode The extension renderer mode. * @param out An array to which the built renderers should be appended. */ protected void buildTextRenderers(Context context, TextOutput output, Looper outputLooper, @ExtensionRendererMode int extensionRendererMode, ArrayList<Renderer> out) { out.add(new TextRenderer(output, outputLooper)); }