library/extractor/src/main/java/com/google/android/exoplayer2/text/cea/Cea708Decoder.java (25 lines): - line 148: // TODO: Use isWideAspectRatio in decoding. - line 390: // TODO: Add support for this command. - line 459: // TODO: Add support for delay commands. - line 463: // TODO: Add support for delay commands. - line 830: // TODO: There is a lot of overlap between Cea708Decoder.CueInfoBuilder and - line 852: // TODO: Add other border/edge types when utilized. - line 860: // TODO: Add other sizes when utilized. - line 863: // TODO: Add other pen font styles when utilized. - line 870: // TODO: Add other pen offsets when utilized. - line 1046: // TODO: Add support for column lock and count. - line 1090: // TODO: Add support for border color and types. - line 1091: // TODO: Add support for word wrap. - line 1092: // TODO: Add support for other scroll directions. - line 1093: // TODO: Add support for other print directions. - line 1105: // TODO: Add support for text tags. - line 1106: // TODO: Add support for other offsets. - line 1107: // TODO: Add support for other pen sizes. - line 1135: // TODO: Add support for edge types. - line 1136: // TODO: Add support for other font styles. - line 1168: // TODO: Add support for edge color. - line 1172: // TODO: Support moving the pen location with a window properly. - line 1277: // TODO: Add support for right-to-left languages (i.e. where right would correspond to normal - line 1282: // TODO: Add support for full justification. - line 1324: // TODO: Add support for right-to-left languages (i.e. where start is on the right). - line 1377: // TODO: Add support for the Alternative Minimum Color List or the full 64 RGB combinations. library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java (8 lines): - line 70: // TODO: Change this to ClippingProperties once all the deprecated individual setters are - line 73: // TODO: Change this to @Nullable DrmConfiguration once all the deprecated individual setters - line 82: // TODO: Change this to LiveConfiguration once all the deprecated individual setters - line 503: // TODO: remove this check once all the deprecated individual DRM setters are removed. - line 534: // TODO remove @Nullable annotation when the deprecated zero-arg constructor is removed. - line 876: // TODO: Mark this final when PlaybackProperties is deleted. - line 1230: // TODO: Mark this final when Subtitle is deleted. - line 1414: // TODO: Mark this final when ClippingProperties is deleted. library/extractor/src/main/java/com/google/android/exoplayer2/text/dvb/DvbParser.java (7 lines): - line 529: // TODO: Parse and use character_codes. - line 979: public final int timeOutSecs; // TODO: Use this or remove it. - line 1020: public final int levelOfCompatibility; // TODO: Use this or remove it. - line 1068: public final int type; // TODO: Use this or remove it. - line 1069: public final int provider; // TODO: Use this or remove it. - line 1072: public final int foregroundPixelCode; // TODO: Use this or remove it. - line 1073: public final int backgroundPixelCode; // TODO: Use this or remove it. library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java (7 lines): - line 613: // TODO: Split into discard (in discardBuffer) and format change (here and in skipData) steps. - line 1236: // TODO: Keep sample metadata to allow restoring these chunks [internal b/159904763]. - line 1245: // TODO: Sparse tracks (e.g. ID3) may prevent discarding in almost all cases because it - line 1617: // TODO: Uncomment this to reject samples with unexpected timestamps. See - line 1653: // TODO: Uncomment this to reject samples with unexpected timestamps. See - line 1733: // TODO: Uncomment this to reject samples with unexpected timestamps. See - line 1749: // TODO: Create a Formats util class with common constants like this. library/core/src/main/java/com/google/android/exoplayer2/source/chunk/ChunkSampleStream.java (6 lines): - line 392: // TODO: Support splicing to allow this. See [internal b/161130873]. - line 408: // TODO: Support splicing to allow this. See [internal b/161130873]. - line 475: // TODO: Support splicing to keep data from canceled chunk. See [internal b/161130873]. - line 682: // TODO: Sparse tracks (e.g. ESMG) may prevent discarding in almost all cases because it - line 840: // TODO: Support splicing to allow this. See [internal b/161130873]. - line 868: // TODO: Support splicing to allow this. See [internal b/161130873]. library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java (5 lines): - line 448: // TODO: Don't deduplicate variants by URL. - line 498: // TODO: Remove this case and add a Rendition with a null uri to videos. - line 529: // TODO: Remove muxedAudioFormat and add a Rendition with a null uri to audios. - line 569: // TODO: Remove muxedCaptionFormats and add a Rendition with a null uri to closedCaptions. - line 1256: // TODO: Replace StringBuffer with StringBuilder once Java 9 is available. extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java (5 lines): - line 129: // TODO: Allow custom implementations of CastTimelineTracker. - line 582: // TODO: Support shuffle mode. - line 587: // TODO: Support shuffle mode. - line 647: // TODO: Fill the cast timeline information with ProgressListener's duration updates. - line 950: // TODO: Differentiate TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED and library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mkv/MatroskaExtractor.java (4 lines): - line 664: // TODO: check and fail if more than one content encoding is present. - line 1529: // TODO: Deduplicate with Mp4Extractor. - line 2024: // TODO: This can be set to the real mimeType if/when we work out what initializationData - line 2189: // TODO: Consider reading the name elements of the tracks and, if present, incorporating them library/extractor/src/main/java/com/google/android/exoplayer2/text/cea/Cea608Decoder.java (4 lines): - line 466: // TODO: We're currently ignoring the top 5 marker bits, which should all be 1s according - line 586: // TODO: support the extended styles (i.e. backgrounds and transparencies) - line 601: // TODO: support the extended address and style - line 688: // TODO: implement extensions/cronet/src/main/java/com/google/android/exoplayer2/ext/cronet/CronetDataSource.java (4 lines): - line 79: // TODO: Remove @Nullable annotation when CronetEngineWrapper is deleted. - line 83: // TODO: Remove when CronetEngineWrapper is deleted. - line 86: // TODO: Remove when CronetEngineWrapper is deleted. - line 947: // TODO: Uncomment when https://bugs.chromium.org/p/chromium/issues/detail?id=711810 is fixed library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java (3 lines): - line 480: // TODO: Improve cross-playlist discontinuity adjustment. - line 723: // TODO: Allow customization of playlist resets handling. - line 731: // TODO: Allow customization of stuck playlists handling. library/extractor/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlDecoder.java (3 lines): - line 379: // TODO: Should default to top left as below in this case, but need to fix - line 425: // TODO: Should default to extent of parent as below in this case, but need to fix - line 460: // TODO: Support horizontal RTL modes. library/core/src/main/java/com/google/android/exoplayer2/video/DecoderVideoRenderer.java (3 lines): - line 323: // TODO: This shouldn't just update the output stream offset as long as there are still buffers - line 844: // TODO: We shouldn't force render while we are joining an ongoing playback. - line 855: // TODO: Treat dropped buffers as skipped while we are joining an ongoing playback. library/core/src/main/java/com/google/android/exoplayer2/source/mediaparser/OutputConsumerAdapterV30.java (3 lines): - line 78: @SuppressLint("Override") // TODO: Remove once the SDK becomes stable. - line 394: // TODO: Access pattern encryption info directly once the Android SDK makes it visible. - line 454: // TODO: Consider adding support for the following: library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist.java (3 lines): - line 228: // TODO: Allow stream keys to specify video renditions to be retained. - line 232: // TODO: Update to retain all closed captions. - line 297: // TODO: library/extractor/src/main/java/com/google/android/exoplayer2/text/webvtt/WebvttCssParser.java (2 lines): - line 224: // TODO: Fill remaining supported styles. - line 284: // TODO: Add support for "Strings in quotes with spaces". testutils/src/main/java/com/google/android/exoplayer2/testutil/CapturingRenderersFactory.java (2 lines): - line 284: // TODO: Update this when capturedInteractions contains more than just input buffers. - line 315: // TODO: Add other fields extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java (2 lines): - line 1032: // TODO: Handle the skipped event so the ad can be marked as skipped rather than played. - line 1445: // TODO: Consider moving this into AdPlaybackState. library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac3Util.java (2 lines): - line 194: // TODO: Read other channel configuration - line 539: // TODO: Link to specification if available. library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java (2 lines): - line 177: // TODO: When the master playlist does not de-duplicate variants by URL and allows Renditions with - line 504: // TODO: Build video stream wrappers here. library/core/src/main/java/com/google/android/exoplayer2/MediaPeriodQueue.java (2 lines): - line 335: // TODO: Merge this into setTimeline so that the queue gets updated as soon as the new timeline - line 632: // TODO: This method is called repeatedly from ExoPlayerImplInternal.maybeUpdateLoadingPeriod library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java (2 lines): - line 718: // TODO: Support multiple traf boxes per track in a single moof. - line 1093: // TODO: Implement this. library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecUtil.java (2 lines): - line 1088: // TODO: Find int for CodecProfileLevel.AVCLevel1b. - line 1274: // TODO (Internal: b/179261323): use framework constants for levels 10 to 13. library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java (2 lines): - line 360: // TODO: Split up isDynamic into multiple fields to indicate which values may change. Then - line 371: // TODO: Actually prepare the extractors during preparation so that we don't need a library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java (2 lines): - line 1103: // TODO: Uncomment when [Internal: b/63092960] is fixed. - line 1436: // TODO: Uncomment when [Internal: b/63092960] is fixed. testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeExoMediaDrm.java (2 lines): - line 61: // TODO: Consider replacing this with a Robolectric ShadowMediaDrm so we can use a real - line 249: // TODO: Store closed session IDs too? library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java (2 lines): - line 565: // TODO: Use Player.Listener.onEvents to know when a set of simultaneous callbacks finished. - line 1006: // TODO: Investigate reporting MediaPeriodId in renderer events. library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/PsshAtomUtil.java (2 lines): - line 153: // TODO: Support parsing of the key ids for version 1 PSSH atoms. - line 192: // TODO: Consider exposing this and making parsePsshAtom public. library/hls/src/main/java/com/google/android/exoplayer2/source/hls/TimestampAdjusterProvider.java (1 line): - line 27: // TODO: Prevent this array from growing indefinitely large by removing adjusters that are no library/common/src/main/java/com/google/android/exoplayer2/util/MimeTypes.java (1 line): - line 224: // TODO: Add additional audio MIME types. Also consider evaluating based on Format rather than library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java (1 line): - line 603: // TODO: Remove this hack once we have a proper fix for [Internal: b/71876314]. library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java (1 line): - line 1679: * TODO: library/core/src/main/java/com/google/android/exoplayer2/video/VideoDecoderGLSurfaceView.java (1 line): - line 258: // TODO: Handle streams where chroma channels are not stored at half width and height library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/Ac4Extractor.java (1 line): - line 151: // TODO: Make it possible for the reader to consume the dataSource directly, so that it becomes library/decoder/src/main/java/com/google/android/exoplayer2/decoder/DecoderInputBuffer.java (1 line): - line 91: // TODO: Remove this temporary signaling once end-of-stream propagation for clips using content library/core/src/main/java/com/google/android/exoplayer2/audio/AudioTimestampPoller.java (1 line): - line 148: // TODO: Ideally we should listen for audio route changes in order to detect when a extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaUtil.java (1 line): - line 206: // TODO: Find out what other errors need to be handled (if any), and whether each one relates to extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastUtils.java (1 line): - line 30: // TODO: Remove once [Internal ref: b/171657375] is fixed. library/core/src/main/java/com/google/android/exoplayer2/source/mediaparser/InputReaderAdapterV30.java (1 line): - line 29: @SuppressLint("Override") // TODO: Remove once the SDK becomes stable. robolectricutils/src/main/java/com/google/android/exoplayer2/robolectric/PlaybackOutput.java (1 line): - line 63: // TODO: Consider passing playback position into MetadataOutput and TextOutput. Calling library/core/src/main/java/com/google/android/exoplayer2/source/MediaParserExtractorAdapter.java (1 line): - line 56: // TODO: Add support for injecting the desired extractor list. library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java (1 line): - line 235: // TODO: Make it possible for reader to consume the dataSource directly, so that it becomes library/datasource/src/main/java/com/google/android/exoplayer2/upstream/DataSpec.java (1 line): - line 641: // TODO: Replace this assertion with a stricter one checking "uriPositionOffset >= 0", after library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java (1 line): - line 2083: // TODO: Add an API check once [Internal ref: b/128835874] is fixed. library/extractor/src/main/java/com/google/android/exoplayer2/extractor/flac/FlacExtractor.java (1 line): - line 386: // TODO: Remove (and update above comments) once [Internal ref: b/147657250] is fixed. extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastTimelineTracker.java (1 line): - line 59: // TODO: Reset state when the app instance changes [Internal ref: b/129672468]. library/extractor/src/main/java/com/google/android/exoplayer2/text/SubtitleExtractor.java (1 line): - line 108: // TODO: Implement sniff() according to the Extractor interface documentation. For now sniff() testutils/src/main/java/com/google/android/exoplayer2/testutil/DataSourceContractTest.java (1 line): - line 333: // TODO: Decide what the allowed behavior should be for the next read, and assert it. library/core/src/main/java/com/google/android/exoplayer2/video/spherical/FrameRotationQueue.java (1 line): - line 73: // TODO [Internal: b/113315546]: Slerp between the floor and ceil rotation. library/core/src/main/java/com/google/android/exoplayer2/video/spherical/SphericalGLSurfaceView.java (1 line): - line 73: // TODO Calculate this depending on surface size and field of view. library/extractor/src/main/java/com/google/android/exoplayer2/audio/Ac4Util.java (1 line): - line 61: // TODO: Parse AC-4 stream channel count. library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/Ac3Extractor.java (1 line): - line 141: // TODO: Make it possible for the reader to consume the dataSource directly, so that it becomes library/extractor/src/main/java/com/google/android/exoplayer2/text/ttml/TtmlRenderUtil.java (1 line): - line 201: // TODO: Add support for this when RubySpan supports parenthetical text. For now, just testutils/src/main/java/com/google/android/exoplayer2/testutil/MediaSourceTestRunner.java (1 line): - line 120: // TODO: This only catches errors that are set synchronously in prepareSource. To library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java (1 line): - line 823: // TODO: Replace window index with uid in reporting to get rid of this inefficient method and library/database/src/main/java/com/google/android/exoplayer2/database/StandaloneDatabaseProvider.java (1 line): - line 33: // TODO: Make this class final when ExoDatabaseProvider is removed. library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java (1 line): - line 396: // TODO: Add API level check once [Internal ref: b/112142048] is fixed. library/extractor/src/main/java/com/google/android/exoplayer2/extractor/flv/VideoTagPayloadReader.java (1 line): - line 106: // TODO: Deduplicate with Mp4Extractor. extensions/vp9/src/main/jni/vpx_jni.cc (1 line): - line 590: // TODO: This copy can be eliminated by using external frame library/common/src/main/java/com/google/android/exoplayer2/Timeline.java (1 line): - line 204: // TODO: Split this to better describe which parts of the window might change. For example it library/extractor/src/main/java/com/google/android/exoplayer2/text/ssa/SsaDecoder.java (1 line): - line 379: // TODO: Read the MarginL, MarginR and MarginV values from the Style & Dialogue lines. library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java (1 line): - line 982: // TODO: This is a temporary hack to avoid constantly refreshing the MPD in cases where library/common/src/main/java/com/google/android/exoplayer2/text/span/RubySpan.java (1 line): - line 31: // TODO: Consider adding support for parenthetical text to be used when rendering doesn't support library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/H265Reader.java (1 line): - line 118: // TODO (Internal b/32267012): Consider using random access indicator. library/core/src/main/java/com/google/android/exoplayer2/video/VideoRendererEventListener.java (1 line): - line 232: // TODO: Replace this timestamp with the actual frame release time. robolectricutils/src/main/java/com/google/android/exoplayer2/robolectric/ShadowMediaCodecConfig.java (1 line): - line 123: // TODO: Update ShadowMediaCodec to consider the MediaFormat.KEY_MAX_INPUT_SIZE value passed library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java (1 line): - line 400: // TODO (internal b/184262323): Assign an adequate error code. library/common/src/main/java/com/google/android/exoplayer2/util/Util.java (1 line): - line 2438: // TODO (internal b/192337376): Change 0 for ERROR_UNKNOWN once available. library/hls/src/main/java/com/google/android/exoplayer2/source/hls/MediaParserHlsMediaChunkExtractor.java (1 line): - line 92: // TODO: Factor out code for optimizing the sniffing order across both factories. library/datasource/src/main/java/com/google/android/exoplayer2/upstream/TeeDataSource.java (1 line): - line 72: // TODO: Consider continuing even if writes to the sink fail. library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java (1 line): - line 652: // TODO: Investigate adding support for seeking during ads. This is complicated to do in library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java (1 line): - line 985: // TODO: Each renderer should return the maximum delay before which it wishes to be called library/core/src/main/java/com/google/android/exoplayer2/source/SampleQueue.java (1 line): - line 286: // TODO: Avoid throwing if the DRM error is not preventing a read operation. library/core/src/main/java/com/google/android/exoplayer2/audio/DecoderAudioRenderer.java (1 line): - line 723: // TODO: Remove this hack once we have a proper fix for [Internal: b/71876314]. library/extractor/src/main/java/com/google/android/exoplayer2/audio/AacUtil.java (1 line): - line 350: throw new UnsupportedOperationException(); // TODO: Implement programConfigElement(); library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp3/XingSeeker.java (1 line): - line 73: // TODO: Handle encoder delay and padding in 3 bytes offset by xingBase + 213 bytes: library/core/src/main/java/com/google/android/exoplayer2/source/chunk/BundledChunkExtractor.java (1 line): - line 165: // TODO: Manifest formats for embedded tracks should also be passed here. library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/H263Reader.java (1 line): - line 127: // TODO (Internal b/32267012): Consider using random access indicator. library/core/src/main/java/com/google/android/exoplayer2/source/SequenceableLoader.java (1 line): - line 20: // TODO: Clarify the requirements for implementing this interface [Internal ref: b/36250203]. extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilder.java (1 line): - line 320: // TODO: Replace with ControllerInfo#isTrusted() when it's unhidden [Internal: b/142835448]. extensions/ffmpeg/src/main/jni/ffmpeg_jni.cc (1 line): - line 188: // TODO: Figure out why flushing doesn't work for this codec. library/extractor/src/main/java/com/google/android/exoplayer2/extractor/ts/H262Reader.java (1 line): - line 119: // TODO (Internal b/32267012): Consider using random access indicator. library/datasource/src/main/java/com/google/android/exoplayer2/upstream/DataSchemeDataSource.java (1 line): - line 68: // TODO: Add support for other charsets.