From f57bead0f239a0f89d6d7e35d6ed6595d93c2e5b Mon Sep 17 00:00:00 2001 From: Molly Xu Date: Mon, 20 Oct 2025 12:27:21 -0700 Subject: [PATCH] modified getNumFrames --- src/torchcodec/_core/SingleStreamDecoder.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/torchcodec/_core/SingleStreamDecoder.cpp b/src/torchcodec/_core/SingleStreamDecoder.cpp index d06c47922..4f25dc56a 100644 --- a/src/torchcodec/_core/SingleStreamDecoder.cpp +++ b/src/torchcodec/_core/SingleStreamDecoder.cpp @@ -1583,7 +1583,16 @@ std::optional SingleStreamDecoder::getNumFrames( case SeekMode::exact: return streamMetadata.numFramesFromContent.value(); case SeekMode::approximate: { - return streamMetadata.numFramesFromHeader; + if (streamMetadata.numFramesFromHeader.has_value()) { + return streamMetadata.numFramesFromHeader; + } else if ( + streamMetadata.averageFpsFromHeader.has_value() && + streamMetadata.durationSecondsFromHeader.has_value()) { + return static_cast(std::lround( + streamMetadata.averageFpsFromHeader.value() * + streamMetadata.durationSecondsFromHeader.value())); + } + return std::nullopt; } default: TORCH_CHECK(false, "Unknown SeekMode");