@@ -91,7 +91,15 @@ class M4AAudioDemuxer {
91
91
}
92
92
93
93
Vector<size_t >& getSampleSizes () { return sampleSizes; }
94
+
94
95
Vector<size_t >& getChunkOffsets () { return chunkOffsets; }
96
+
97
+ // used fixed sizes instead of the sampleSizes table
98
+ void setFixedSampleCount (uint32_t sampleSize, uint32_t sampleCount) {
99
+ fixed_sample_size = sampleSize;
100
+ fixed_sample_count = sampleCount;
101
+ }
102
+
95
103
96
104
void setAACConfig (int profile, int srIdx, int chCfg) {
97
105
aacProfile = profile;
@@ -108,6 +116,8 @@ class M4AAudioDemuxer {
108
116
size_t sampleIndex = 0 ;
109
117
SingleBuffer<uint8_t > buffer;
110
118
int aacProfile = 2 , sampleRateIdx = 4 , channelCfg = 2 ;
119
+ uint32_t fixed_sample_size = 0 ;
120
+ uint32_t fixed_sample_count = 0 ;
111
121
size_t current_size = 0 ; // current sample size
112
122
size_t box_size = 0 ; // maximum size of the current sample
113
123
size_t box_pos = 0 ;
@@ -157,7 +167,12 @@ class M4AAudioDemuxer {
157
167
}
158
168
159
169
size_t currentSampleSize () {
160
- if (sampleSizes && sampleIndex < sampleSizes.size ()) {
170
+ // using fixed sizes w/o table
171
+ if (fixed_sample_size > 0 && fixed_sample_count > 0 &&
172
+ sampleIndex < fixed_sample_count) {
173
+ return fixed_sample_size;
174
+ }
175
+ if (sampleSizes && sampleIndex < sampleSizes.size ()) {
161
176
return sampleSizes[sampleIndex];
162
177
}
163
178
return 0 ;
@@ -366,7 +381,7 @@ class M4AAudioDemuxer {
366
381
uint8_t asc_len = box.data [i + 1 ];
367
382
if (i + 2 + asc_len > box.data_size ) {
368
383
LOGW (" esds box not long enough for AudioSpecificConfig" );
369
- // break;
384
+ break ;
370
385
};
371
386
const uint8_t * asc = box.data + i + 2 ;
372
387
// AudioSpecificConfig is at least 2 bytes
@@ -408,7 +423,7 @@ class M4AAudioDemuxer {
408
423
sampleSizes[i] = readU32 (data + 12 + i * 4 );
409
424
}
410
425
} else {
411
- sampleSizes. assign (sampleCount, sampleSize );
426
+ sampleExtractor. setFixedSampleCount (sampleSize, sampleCount );
412
427
}
413
428
}
414
429
0 commit comments