@@ -562,13 +562,14 @@ void VideoDecoder::scanFileAndUpdateMetadataAndIndex() {
562
562
if (packet->flags & AV_PKT_FLAG_DISCARD) {
563
563
continue ;
564
564
}
565
- auto & stream = containerMetadata_.streams [streamIndex];
566
- stream .minPtsFromScan =
567
- std::min (stream .minPtsFromScan .value_or (INT64_MAX), packet->pts );
568
- stream .maxPtsFromScan = std::max (
569
- stream .maxPtsFromScan .value_or (INT64_MIN),
565
+ auto & streamMetadata = containerMetadata_.streams [streamIndex];
566
+ streamMetadata .minPtsFromScan = std::min (
567
+ streamMetadata .minPtsFromScan .value_or (INT64_MAX), packet->pts );
568
+ streamMetadata .maxPtsFromScan = std::max (
569
+ streamMetadata .maxPtsFromScan .value_or (INT64_MIN),
570
570
packet->pts + packet->duration );
571
- stream.numFramesFromScan = stream.numFramesFromScan .value_or (0 ) + 1 ;
571
+ streamMetadata.numFramesFromScan =
572
+ streamMetadata.numFramesFromScan .value_or (0 ) + 1 ;
572
573
573
574
FrameInfo frameInfo;
574
575
frameInfo.pts = packet->pts ;
@@ -578,16 +579,17 @@ void VideoDecoder::scanFileAndUpdateMetadataAndIndex() {
578
579
}
579
580
streams_[streamIndex].allFrames .push_back (frameInfo);
580
581
}
581
- for (size_t i = 0 ; i < containerMetadata_.streams .size (); ++i) {
582
- auto & streamMetadata = containerMetadata_.streams [i];
583
- auto stream = formatContext_->streams [i];
582
+ for (size_t streamIndex = 0 ; streamIndex < containerMetadata_.streams .size ();
583
+ ++streamIndex) {
584
+ auto & streamMetadata = containerMetadata_.streams [streamIndex];
585
+ auto avStream = formatContext_->streams [streamIndex];
584
586
if (streamMetadata.minPtsFromScan .has_value ()) {
585
587
streamMetadata.minPtsSecondsFromScan =
586
- *streamMetadata.minPtsFromScan * av_q2d (stream ->time_base );
588
+ *streamMetadata.minPtsFromScan * av_q2d (avStream ->time_base );
587
589
}
588
590
if (streamMetadata.maxPtsFromScan .has_value ()) {
589
591
streamMetadata.maxPtsSecondsFromScan =
590
- *streamMetadata.maxPtsFromScan * av_q2d (stream ->time_base );
592
+ *streamMetadata.maxPtsFromScan * av_q2d (avStream ->time_base );
591
593
}
592
594
}
593
595
int ffmepgStatus =
@@ -597,23 +599,23 @@ void VideoDecoder::scanFileAndUpdateMetadataAndIndex() {
597
599
" Could not seek file to pts=0: " +
598
600
getFFMPEGErrorStringFromErrorCode (ffmepgStatus));
599
601
}
600
- for (auto & [streamIndex, stream ] : streams_) {
602
+ for (auto & [streamIndex, streamInfo ] : streams_) {
601
603
std::sort (
602
- stream .keyFrames .begin (),
603
- stream .keyFrames .end (),
604
+ streamInfo .keyFrames .begin (),
605
+ streamInfo .keyFrames .end (),
604
606
[](const FrameInfo& frameInfo1, const FrameInfo& frameInfo2) {
605
607
return frameInfo1.pts < frameInfo2.pts ;
606
608
});
607
609
std::sort (
608
- stream .allFrames .begin (),
609
- stream .allFrames .end (),
610
+ streamInfo .allFrames .begin (),
611
+ streamInfo .allFrames .end (),
610
612
[](const FrameInfo& frameInfo1, const FrameInfo& frameInfo2) {
611
613
return frameInfo1.pts < frameInfo2.pts ;
612
614
});
613
615
614
- for (size_t i = 0 ; i < stream .allFrames .size (); ++i) {
615
- if (i + 1 < stream .allFrames .size ()) {
616
- stream .allFrames [i].nextPts = stream .allFrames [i + 1 ].pts ;
616
+ for (size_t i = 0 ; i < streamInfo .allFrames .size (); ++i) {
617
+ if (i + 1 < streamInfo .allFrames .size ()) {
618
+ streamInfo .allFrames [i].nextPts = streamInfo .allFrames [i + 1 ].pts ;
617
619
}
618
620
}
619
621
}
0 commit comments