Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for RTSP Mp4a-Latm #162

Closed
wants to merge 11 commits into from
Prev Previous commit
Fix review comments in mp4a-latm reader and test
Fix review comment in Mp4a-Latm csd parsing and Mp4a-Latm reader test.

Change-Id: Idf8e45b9e4f6f9a08277d7c0ec2cae65d7025414
  • Loading branch information
rakeshnitb committed Oct 9, 2022
commit a89ed9864634cce930f0984cbe691ee858ca5ae9
Original file line number Diff line number Diff line change
Expand Up @@ -219,12 +219,12 @@ public int hashCode() {
}
checkArgument(!isConfigPresent, "cpresent == 0 means we need to parse config");
@Nullable String configInput = fmtpParameters.get(PARAMETER_MP4V_CONFIG);
if (configInput != null && configInput.length() % 2 == 0) {
Pair<Integer, Integer> configParameters = getSampleRateAndChannelCount(configInput);
channelCount = configParameters.first;
clockRate = configParameters.second;
formatBuilder.setSampleRate(clockRate).setChannelCount(channelCount);
}
checkArgument(configInput != null && configInput.length() % 2 == 0,
"only support out-band mode");
Pair<Integer, Integer> configParameters = getSampleRateAndChannelCount(configInput);
channelCount = configParameters.first;
clockRate = configParameters.second;
formatBuilder.setSampleRate(clockRate).setChannelCount(channelCount);
}
processAacFmtpAttribute(formatBuilder, fmtpParameters, channelCount, clockRate);
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public final class RtpMp4aReaderTest {
getBytesFromHexString("0102");
private static final RtpPacket FRAME_1_FRAGMENT_1 =
new RtpPacket.Builder()
.setTimestamp((int) 2599168056L)
.setTimestamp(2599168056L)
.setSequenceNumber(40289)
.setMarker(false)
.setPayloadData(Bytes.concat(
Expand All @@ -53,7 +53,7 @@ public final class RtpMp4aReaderTest {
getBytesFromHexString("030405");
private static final RtpPacket FRAME_1_FRAGMENT_2 =
new RtpPacket.Builder()
.setTimestamp((int) 2599168056L)
.setTimestamp(2599168056L)
.setSequenceNumber(40290)
.setMarker(true)
.setPayloadData(Bytes.concat(
Expand All @@ -66,7 +66,7 @@ public final class RtpMp4aReaderTest {
getBytesFromHexString("0607");
private static final RtpPacket FRAME_2_FRAGMENT_1 =
new RtpPacket.Builder()
.setTimestamp((int) 2599168344L)
.setTimestamp(2599168344L)
.setSequenceNumber(40291)
.setMarker(false)
.setPayloadData(Bytes.concat(
Expand All @@ -76,7 +76,7 @@ public final class RtpMp4aReaderTest {
getBytesFromHexString("0809");
private static final RtpPacket FRAME_2_FRAGMENT_2 =
new RtpPacket.Builder()
.setTimestamp((int) 2599168344L)
.setTimestamp(2599168344L)
.setSequenceNumber(40292)
.setMarker(true)
.setPayloadData(Bytes.concat(
Expand All @@ -88,16 +88,14 @@ public final class RtpMp4aReaderTest {
private static final RtpPayloadFormat MP4ALATM_FORMAT =
new RtpPayloadFormat(
new Format.Builder()
.setChannelCount(1)
.setSampleMimeType(MimeTypes.AUDIO_AAC)
.setWidth(352)
.setHeight(288)
.setSampleRate(44100)
.build(),
/* rtpPayloadType= */ 96,
/* clockRate= */ 90_000,
/* rtpPayloadType= */ 97,
/* clockRate= */ 44100,
/* fmtpParameters= */ ImmutableMap.of(), RtpPayloadFormat.RTP_MEDIA_MPEG4_AUDIO);

@Rule public final MockitoRule mockito = MockitoJUnit.rule();

private FakeTrackOutput trackOutput;

private FakeExtractorOutput extractorOutput;
Expand All @@ -123,7 +121,7 @@ public void consume_validPackets() throws ParserException {
assertThat(trackOutput.getSampleData(0)).isEqualTo(FRAME_1_DATA);
assertThat(trackOutput.getSampleTimeUs(0)).isEqualTo(0);
assertThat(trackOutput.getSampleData(1)).isEqualTo(FRAME_2_DATA);
assertThat(trackOutput.getSampleTimeUs(1)).isEqualTo(3200);
assertThat(trackOutput.getSampleTimeUs(1)).isEqualTo(6530);
}

@Test
Expand All @@ -141,7 +139,7 @@ public void consume_fragmentedFrameMissingFirstFragment() throws ParserException
assertThat(trackOutput.getSampleData(0)).isEqualTo(FRAME_1_FRAGMENT_2_DATA);
assertThat(trackOutput.getSampleTimeUs(0)).isEqualTo(0);
assertThat(trackOutput.getSampleData(1)).isEqualTo(FRAME_2_DATA);
assertThat(trackOutput.getSampleTimeUs(1)).isEqualTo(3200);
assertThat(trackOutput.getSampleTimeUs(1)).isEqualTo(6530);
}

@Test
Expand All @@ -159,7 +157,7 @@ public void consume_fragmentedFrameMissingBoundaryFragment() throws ParserExcept
assertThat(trackOutput.getSampleData(0)).isEqualTo(FRAME_1_FRAGMENT_1_DATA);
assertThat(trackOutput.getSampleTimeUs(0)).isEqualTo(0);
assertThat(trackOutput.getSampleData(1)).isEqualTo(FRAME_2_DATA);
assertThat(trackOutput.getSampleTimeUs(1)).isEqualTo(3200);
assertThat(trackOutput.getSampleTimeUs(1)).isEqualTo(6530);
}

private static void consume(RtpMp4aReader mpeg4Reader, RtpPacket rtpPacket)
Expand Down