Skip to content

Commit

Permalink
Fix decoder selection for E-AC3 JOC streams
Browse files Browse the repository at this point in the history
Issue: #6398
PiperOrigin-RevId: 267563795
  • Loading branch information
andrewlewis authored and ojw28 committed Sep 17, 2019
1 parent 72aa150 commit b9ffea6
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 6 deletions.
2 changes: 2 additions & 0 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
([#6396](https://github.com/google/ExoPlayer/issues/6396)).
* Fix audio selection issue where languages are compared by bit rate
([#6335](https://github.com/google/ExoPlayer/issues/6335)).
* Fix decoder selection for E-AC3 JOC streams
([#6398](https://github.com/google/ExoPlayer/issues/6398)).
* Fix `PlayerNotificationManager` to show play icon rather than pause icon when
playback is ended ([#6324](https://github.com/google/ExoPlayer/issues/6324)).
* Upgrade LibRtmp-Client-for-Android to fix RTMP playback issues
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.Util;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

Expand Down Expand Up @@ -369,10 +370,11 @@ protected List<MediaCodecInfo> getDecoderInfos(
format.sampleMimeType, requiresSecureDecoder, /* requiresTunnelingDecoder= */ false);
if (MimeTypes.AUDIO_E_AC3_JOC.equals(format.sampleMimeType)) {
// E-AC3 decoders can decode JOC streams, but in 2-D rather than 3-D.
List<MediaCodecInfo> eac3DecoderInfos =
List<MediaCodecInfo> decoderInfosWithEac3 = new ArrayList<>(decoderInfos);
decoderInfosWithEac3.addAll(
mediaCodecSelector.getDecoderInfos(
MimeTypes.AUDIO_E_AC3, requiresSecureDecoder, /* requiresTunnelingDecoder= */ false);
decoderInfos.addAll(eac3DecoderInfos);
MimeTypes.AUDIO_E_AC3, requiresSecureDecoder, /* requiresTunnelingDecoder= */ false));
decoderInfos = decoderInfosWithEac3;
}
return Collections.unmodifiableList(decoderInfos);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ public List<MediaCodecInfo> getDecoderInfos(
* @param mimeType The MIME type for which a decoder is required.
* @param requiresSecureDecoder Whether a secure decoder is required.
* @param requiresTunnelingDecoder Whether a tunneling decoder is required.
* @return A list of {@link MediaCodecInfo}s corresponding to decoders. May be empty.
* @return An unmodifiable list of {@link MediaCodecInfo}s corresponding to decoders. May be
* empty.
* @throws DecoderQueryException Thrown if there was an error querying decoders.
*/
List<MediaCodecInfo> getDecoderInfos(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ public static MediaCodecInfo getDecoderInfo(String mimeType, boolean secure, boo
* unless secure decryption really is required.
* @param tunneling Whether the decoder is required to support tunneling. Always pass false unless
* tunneling really is required.
* @return A list of all {@link MediaCodecInfo}s for the given mime type, in the order given by
* {@link MediaCodecList}.
* @return An unmodifiable list of all {@link MediaCodecInfo}s for the given mime type, in the
* order given by {@link MediaCodecList}.
* @throws DecoderQueryException If there was an error querying the available decoders.
*/
public static synchronized List<MediaCodecInfo> getDecoderInfos(
Expand Down

0 comments on commit b9ffea6

Please sign in to comment.