MCPcopy Create free account
hub / github.com/IENT/YUView / addBitratePoint

Method addBitratePoint

YUViewLib/src/parser/common/BitratePlotModel.cpp:177–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

175}
176
177void BitratePlotModel::addBitratePoint(int streamIndex, BitrateEntry &entry)
178{
179 QMutexLocker locker(&this->dataMutex);
180
181 const auto newStream = !this->dataPerStream.contains(streamIndex);
182
183 if (this->dataPerStream[streamIndex].empty())
184 {
185 rangeDts.min = entry.dts;
186 rangeDts.max = entry.dts;
187 rangePts.min = entry.pts;
188 rangePts.max = entry.pts;
189 }
190 else
191 {
192 rangeDts.min = std::min(rangeDts.min, entry.dts);
193 rangeDts.max = std::max(rangeDts.max, entry.dts);
194 rangePts.min = std::min(rangePts.min, entry.pts);
195 rangePts.max = std::max(rangePts.max, entry.pts);
196 }
197
198 rangeBitratePerStream[streamIndex].min =
199 std::min(rangeBitratePerStream[streamIndex].min, int(entry.bitrate));
200 rangeBitratePerStream[streamIndex].max =
201 std::max(rangeBitratePerStream[streamIndex].max, int(entry.bitrate));
202
203 // Store absolute minimum and maximum over all streams
204 yMaxStreamRange.min =
205 std::min(yMaxStreamRange.min, double(rangeBitratePerStream[streamIndex].min));
206 yMaxStreamRange.max =
207 std::max(yMaxStreamRange.max, double(rangeBitratePerStream[streamIndex].max));
208
209 DEBUG_PLOT("BitrateItemModel::addBitratePoint streamIndex "
210 << streamIndex << " pts " << entry.pts << " dts " << entry.dts << " rate "
211 << entry.bitrate << " keyframe " << entry.keyframe);
212
213 // Keep the list sorted
214 const auto currentSortMode = this->sortMode;
215 auto compareFunctionLessThen = [currentSortMode](const BitrateEntry &a, const BitrateEntry &b) {
216 if (currentSortMode == SortMode::DECODE_ORDER)
217 return a.dts < b.dts;
218 else
219 return b.pts < a.pts;
220 };
221
222 auto insertIterator = std::upper_bound(this->dataPerStream[streamIndex].begin(),
223 this->dataPerStream[streamIndex].end(),
224 entry,
225 compareFunctionLessThen);
226 this->dataPerStream[streamIndex].insert(insertIterator, entry);
227 this->eventSubsampler.postEvent();
228 if (newStream)
229 emit nrStreamsChanged();
230}
231
232void BitratePlotModel::setBitrateSortingIndex(int index)
233{

Callers 5

parseAnnexBFileMethod · 0.80
parseExtradata_AVCMethod · 0.80
parseAVPacketMethod · 0.80
parseMethod · 0.80

Calls 2

containsMethod · 0.80
postEventMethod · 0.80

Tested by

no test coverage detected