3030import org .checkerframework .checker .nullness .qual .MonotonicNonNull ;
3131
3232/**
33- * Parses an H265 byte stream carried on RTP packets, and extracts H265 Access Units. Refer to
33+ * Parses an MPEG4 byte stream carried on RTP packets, and extracts MPEG4 Access Units. Refer to
3434 * RFC6416 for more details.
3535 */
3636/* package */ final class RtpMPEG4Reader implements RtpPayloadReader {
4444 private static final int I_VOP = 0 ;
4545
4646 private final RtpPayloadFormat payloadFormat ;
47-
4847 private @ MonotonicNonNull TrackOutput trackOutput ;
4948 @ C .BufferFlags private int bufferFlags ;
50-
5149 private long firstReceivedTimestamp ;
52-
5350 private int previousSequenceNumber ;
54-
5551 private long startTimeOffsetUs ;
56-
5752 private int sampleLength ;
5853
5954 /** Creates an instance. */
@@ -64,15 +59,6 @@ public RtpMPEG4Reader(RtpPayloadFormat payloadFormat) {
6459 sampleLength = 0 ;
6560 }
6661
67- private static long toSampleUs (
68- long startTimeOffsetUs , long rtpTimestamp , long firstReceivedRtpTimestamp ) {
69- return startTimeOffsetUs
70- + Util .scaleLargeTimestamp (
71- (rtpTimestamp - firstReceivedRtpTimestamp ),
72- /* multiplier= */ C .MICROS_PER_SECOND ,
73- /* divisor= */ MEDIA_CLOCK_FREQUENCY );
74- }
75-
7662 @ Override
7763 public void createTracks (ExtractorOutput extractorOutput , int trackId ) {
7864 trackOutput = extractorOutput .track (trackId , C .TRACK_TYPE_VIDEO );
@@ -113,6 +99,15 @@ public void consume(ParsableByteArray data, long timestamp, int sequenceNumber,
11399 previousSequenceNumber = sequenceNumber ;
114100 }
115101
102+ @ Override
103+ public void seek (long nextRtpTimestamp , long timeUs ) {
104+ firstReceivedTimestamp = nextRtpTimestamp ;
105+ startTimeOffsetUs = timeUs ;
106+ sampleLength = 0 ;
107+ }
108+
109+ // Internal methods.
110+
116111 /**
117112 * Parses VOP Coding type
118113 *
@@ -130,15 +125,17 @@ private void parseVopType(ParsableByteArray data) {
130125 }
131126 }
132127
128+ private static long toSampleUs (
129+ long startTimeOffsetUs , long rtpTimestamp , long firstReceivedRtpTimestamp ) {
130+ return startTimeOffsetUs
131+ + Util .scaleLargeTimestamp (
132+ (rtpTimestamp - firstReceivedRtpTimestamp ),
133+ /* multiplier= */ C .MICROS_PER_SECOND ,
134+ /* divisor= */ MEDIA_CLOCK_FREQUENCY );
135+ }
136+
133137 @ C .BufferFlags
134138 private static int getBufferFlagsFromVopType (int vopType ) {
135139 return vopType == I_VOP ? C .BUFFER_FLAG_KEY_FRAME : 0 ;
136140 }
137-
138- @ Override
139- public void seek (long nextRtpTimestamp , long timeUs ) {
140- firstReceivedTimestamp = nextRtpTimestamp ;
141- startTimeOffsetUs = timeUs ;
142- sampleLength = 0 ;
143- }
144141}
0 commit comments