From 500c879b8ac5f04e2708550d45d3f7179284fa6c Mon Sep 17 00:00:00 2001 From: Shraddha Basantwani Date: Fri, 11 Mar 2022 11:48:08 +0530 Subject: [PATCH] Modify RtpPcmReader Rename a few variable to be more relevant Add detailed java docs --- .../media3/exoplayer/rtsp/RtpPayloadFormat.java | 17 +++++++++-------- .../media3/exoplayer/rtsp/RtspMediaTrack.java | 8 ++++---- .../reader/DefaultRtpPayloadReaderFactory.java | 2 +- .../{RtpPCMReader.java => RtpPcmReader.java} | 11 ++++++----- 4 files changed, 20 insertions(+), 18 deletions(-) rename libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/{RtpPCMReader.java => RtpPcmReader.java} (92%) diff --git a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtpPayloadFormat.java b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtpPayloadFormat.java index d835c64751..b90d6820fd 100644 --- a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtpPayloadFormat.java +++ b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtpPayloadFormat.java @@ -93,22 +93,23 @@ public final class RtpPayloadFormat { } /** - * Gets the PCM Encoding type for RAW track that is associated with the RTP media type. + * Gets the PCM Encoding type for audio encoding of track. * - *

For instance, RTP media type "L8" maps to {@link C.PcmEncoding#ENCODING_PCM_8BIT}. + *

For instance, Audio encoding "L8" has 8 bits/sample and thus maps to + * {@link C.PcmEncoding#ENCODING_PCM_8BIT}. Refer to RFC3551 Section 4.5 Table 1. * - * @throws IllegalArgumentException When the media type is not supported/recognized. + * @throws IllegalArgumentException When the audio encoding is not supported/recognized. */ - public static int getPCMEncodingFromRtpMediaType(String mediaType) { - switch (mediaType) { + public static int getPcmEncodingFromAudioEncoding(String mediaEncoding) { + switch (mediaEncoding) { case RTP_MEDIA_PCM_L8: - // Refer to RFC3551#section-4.5.10 + // Refer to RFC3551 Section 4.5.10 return C.ENCODING_PCM_8BIT; case RTP_MEDIA_PCM_L16: - // Refer to RFC3551#section-4.5.11 + // Refer to RFC3551 Section 4.5.11 return C.ENCODING_PCM_16BIT_BIG_ENDIAN; default: - throw new IllegalArgumentException(mediaType); + throw new IllegalArgumentException("Unsupported RAW Audio Encoding " + mediaEncoding); } } diff --git a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtspMediaTrack.java b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtspMediaTrack.java index a702260f28..5b682db2b6 100644 --- a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtspMediaTrack.java +++ b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/RtspMediaTrack.java @@ -20,7 +20,7 @@ import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Util.castNonNull; import static androidx.media3.exoplayer.rtsp.MediaDescription.MEDIA_TYPE_AUDIO; import static androidx.media3.exoplayer.rtsp.RtpPayloadFormat.getMimeTypeFromRtpMediaType; -import static androidx.media3.exoplayer.rtsp.RtpPayloadFormat.getPCMEncodingFromRtpMediaType; +import static androidx.media3.exoplayer.rtsp.RtpPayloadFormat.getPcmEncodingFromAudioEncoding; import static androidx.media3.exoplayer.rtsp.SessionDescription.ATTR_CONTROL; import static androidx.media3.extractor.NalUnitUtil.NAL_START_CODE; @@ -103,8 +103,9 @@ import com.google.common.collect.ImmutableMap; } int rtpPayloadType = mediaDescription.rtpMapAttribute.payloadType; + String mediaEncoding = mediaDescription.rtpMapAttribute.mediaEncoding; - String mimeType = getMimeTypeFromRtpMediaType(mediaDescription.rtpMapAttribute.mediaEncoding); + String mimeType = getMimeTypeFromRtpMediaType(mediaEncoding); formatBuilder.setSampleMimeType(mimeType); int clockRate = mediaDescription.rtpMapAttribute.clockRate; @@ -131,8 +132,7 @@ import com.google.common.collect.ImmutableMap; processH265FmtpAttribute(formatBuilder, fmtpParameters); break; case MimeTypes.AUDIO_RAW: - int pcmEncoding = - getPCMEncodingFromRtpMediaType(mediaDescription.rtpMapAttribute.mediaEncoding); + int pcmEncoding = getPcmEncodingFromAudioEncoding(mediaEncoding); formatBuilder.setPcmEncoding(pcmEncoding); break; case MimeTypes.AUDIO_AC3: diff --git a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/DefaultRtpPayloadReaderFactory.java b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/DefaultRtpPayloadReaderFactory.java index 5c563e31a8..1455695775 100644 --- a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/DefaultRtpPayloadReaderFactory.java +++ b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/DefaultRtpPayloadReaderFactory.java @@ -43,7 +43,7 @@ import androidx.media3.exoplayer.rtsp.RtpPayloadFormat; case MimeTypes.AUDIO_RAW: case MimeTypes.AUDIO_ALAW: case MimeTypes.AUDIO_MLAW: - return new RtpPCMReader(payloadFormat); + return new RtpPcmReader(payloadFormat); default: // No supported reader, returning null. } diff --git a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpPCMReader.java b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpPcmReader.java similarity index 92% rename from libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpPCMReader.java rename to libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpPcmReader.java index a80d1d9717..f8b1cb2541 100644 --- a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpPCMReader.java +++ b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpPcmReader.java @@ -29,16 +29,17 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; * Parses byte stream carried on RTP packets, and extracts PCM frames. Refer to RFC3551 for more * details. */ -/* package */ public final class RtpPCMReader implements RtpPayloadReader { +/* package */ public final class RtpPcmReader implements RtpPayloadReader { private final RtpPayloadFormat payloadFormat; private @MonotonicNonNull TrackOutput trackOutput; private long firstReceivedTimestamp; private long startTimeOffsetUs; - public RtpPCMReader(RtpPayloadFormat payloadFormat) { + public RtpPcmReader(RtpPayloadFormat payloadFormat) { this.payloadFormat = payloadFormat; firstReceivedTimestamp = C.TIME_UNSET; + startTimeOffsetUs = 0; } @Override @@ -62,9 +63,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; trackOutput.sampleData(data, size); trackOutput .sampleMetadata( - /* timeUs= */ sampleTimeUs, - /* flags= */ C.BUFFER_FLAG_KEY_FRAME, - /* size= */ size, + sampleTimeUs, + C.BUFFER_FLAG_KEY_FRAME, + size, /* offset= */ 0, /* cryptoData= */ null); }