Skip to content

Commit 8271163

Browse files
rohitjoinsicbaker
authored andcommitted
*** Original commit *** Rollback of androidx/media@76df06a *** Original commit *** Parse and set `peakBitrate` for Dolby TrueHD(AC-3) and (E-)AC-3 #minor-release *** *** PiperOrigin-RevId: 490707234
1 parent 4273291 commit 8271163

31 files changed

+49
-1
lines changed

libraries/extractor/src/main/java/androidx/media3/extractor/Ac3Util.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -158,13 +158,18 @@ public static Format parseAc3AnnexFFormat(
158158
if ((nextByte & 0x04) != 0) { // lfeon
159159
channelCount++;
160160
}
161+
// bit_rate_code - 5 bits. 2 bits from previous byte and 3 bits from next.
162+
int halfFrmsizecod = ((nextByte & 0x03) << 3) | ((data.readUnsignedByte() & 0xE0) >> 5);
163+
int constantBitrate = BITRATE_BY_HALF_FRMSIZECOD[halfFrmsizecod];
161164
return new Format.Builder()
162165
.setId(trackId)
163166
.setSampleMimeType(MimeTypes.AUDIO_AC3)
164167
.setChannelCount(channelCount)
165168
.setSampleRate(sampleRate)
166169
.setDrmInitData(drmInitData)
167170
.setLanguage(language)
171+
.setAverageBitrate(constantBitrate)
172+
.setPeakBitrate(constantBitrate)
168173
.build();
169174
}
170175

@@ -180,7 +185,9 @@ public static Format parseAc3AnnexFFormat(
180185
*/
181186
public static Format parseEAc3AnnexFFormat(
182187
ParsableByteArray data, String trackId, String language, @Nullable DrmInitData drmInitData) {
183-
data.skipBytes(2); // data_rate, num_ind_sub
188+
// 13 bits for data_rate, 3 bits for num_ind_sub which are ignored.
189+
int peakBitrate =
190+
((data.readUnsignedByte() & 0xFF) << 5) | ((data.readUnsignedByte() & 0xF8) >> 3);
184191

185192
// Read the first independent substream.
186193
int fscod = (data.readUnsignedByte() & 0xC0) >> 6;
@@ -216,6 +223,7 @@ public static Format parseEAc3AnnexFFormat(
216223
.setSampleRate(sampleRate)
217224
.setDrmInitData(drmInitData)
218225
.setLanguage(language)
226+
.setPeakBitrate(peakBitrate)
219227
.build();
220228
}
221229

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3.mp4.0.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 13824
1111
sample count = 9
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
maxInputSize = 1566

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3.mp4.1.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 9216
1111
sample count = 6
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
maxInputSize = 1566

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3.mp4.2.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 4608
1111
sample count = 3
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
maxInputSize = 1566

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3.mp4.3.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 1536
1111
sample count = 1
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
maxInputSize = 1566

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3.mp4.unknown_length.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 13824
1111
sample count = 9
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
maxInputSize = 1566

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3_fragmented.mp4.0.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 13824
1111
sample count = 9
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3_fragmented.mp4.1.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 10752
1111
sample count = 7
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3_fragmented.mp4.2.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 6144
1111
sample count = 4
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3_fragmented.mp4.3.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 1536
1111
sample count = 1
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_ac3_fragmented.mp4.unknown_length.dump

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ track 0:
1010
total output bytes = 13824
1111
sample count = 9
1212
format 0:
13+
averageBitrate = 384
14+
peakBitrate = 384
1315
id = 1
1416
sampleMimeType = audio/ac3
1517
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3.mp4.0.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 216000
1111
sample count = 54
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
maxInputSize = 4030

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3.mp4.1.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 144000
1111
sample count = 36
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
maxInputSize = 4030

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3.mp4.2.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 72000
1111
sample count = 18
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
maxInputSize = 4030

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3.mp4.3.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 4000
1111
sample count = 1
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
maxInputSize = 4030

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3.mp4.unknown_length.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 216000
1111
sample count = 54
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
maxInputSize = 4030

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3_fragmented.mp4.0.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 216000
1111
sample count = 54
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3_fragmented.mp4.1.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 148000
1111
sample count = 37
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3_fragmented.mp4.2.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 76000
1111
sample count = 19
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3_fragmented.mp4.3.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 4000
1111
sample count = 1
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3_fragmented.mp4.unknown_length.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 216000
1111
sample count = 54
1212
format 0:
13+
peakBitrate = 1000
1314
id = 1
1415
sampleMimeType = audio/eac3
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc.mp4.0.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 163840
1111
sample count = 64
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
maxInputSize = 2590

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc.mp4.1.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 110080
1111
sample count = 43
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
maxInputSize = 2590

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc.mp4.2.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 56320
1111
sample count = 22
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
maxInputSize = 2590

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc.mp4.3.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 2560
1111
sample count = 1
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
maxInputSize = 2590

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc.mp4.unknown_length.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 163840
1111
sample count = 64
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
maxInputSize = 2590

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc_fragmented.mp4.0.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 163840
1111
sample count = 64
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc_fragmented.mp4.1.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 110080
1111
sample count = 43
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc_fragmented.mp4.2.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 56320
1111
sample count = 22
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc_fragmented.mp4.3.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 2560
1111
sample count = 1
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
channelCount = 6

libraries/test_data/src/test/assets/extractordumps/mp4/sample_eac3joc_fragmented.mp4.unknown_length.dump

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ track 0:
1010
total output bytes = 163840
1111
sample count = 64
1212
format 0:
13+
peakBitrate = 640
1314
id = 1
1415
sampleMimeType = audio/eac3-joc
1516
channelCount = 6

0 commit comments

Comments
 (0)