diff --git a/src/torchcodec/_core/SingleStreamDecoder.cpp b/src/torchcodec/_core/SingleStreamDecoder.cpp index 32d6f9d99..0b30f1fff 100644 --- a/src/torchcodec/_core/SingleStreamDecoder.cpp +++ b/src/torchcodec/_core/SingleStreamDecoder.cpp @@ -288,6 +288,14 @@ void SingleStreamDecoder::scanFileAndUpdateMetadataAndIndex() { streamMetadata.numFramesFromContent = streamInfos_[streamIndex].allFrames.size(); + // This ensures that we are robust in handling cases where + // we are decoding in exact mode and numFrames is 0. The current metadata + // validation logic assumes that these values should not be None + if (streamMetadata.numFramesFromContent.value() == 0) { + streamMetadata.beginStreamPtsFromContent = 0; + streamMetadata.endStreamPtsFromContent = 0; + } + if (streamMetadata.beginStreamPtsFromContent.has_value()) { streamMetadata.beginStreamPtsSecondsFromContent = ptsToSeconds( *streamMetadata.beginStreamPtsFromContent, avStream->time_base);