From 1f3ebc728a64ea0915dc81225efd7fea6da3166e Mon Sep 17 00:00:00 2001 From: Daniel Flores Date: Thu, 11 Sep 2025 15:16:18 -0400 Subject: [PATCH 1/2] move+copy operators, init streamIndex_ --- src/torchcodec/_core/Encoder.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/torchcodec/_core/Encoder.h b/src/torchcodec/_core/Encoder.h index b9b0f4f31..81d8d1975 100644 --- a/src/torchcodec/_core/Encoder.h +++ b/src/torchcodec/_core/Encoder.h @@ -125,6 +125,16 @@ class VideoEncoder { public: ~VideoEncoder(); + // Rule of Five requires that we define copy and move + // constructors and assignment operators. + // Both are deleted because we have unique_ptr members + VideoEncoder(const VideoEncoder&) = delete; + VideoEncoder& operator=(const VideoEncoder&) = delete; + + // Move assignment operator deleted since we have a const member + VideoEncoder(VideoEncoder&&) = default; + VideoEncoder& operator=(VideoEncoder&&) = delete; + VideoEncoder( const torch::Tensor& frames, int frameRate, @@ -143,7 +153,7 @@ class VideoEncoder { UniqueEncodingAVFormatContext avFormatContext_; UniqueAVCodecContext avCodecContext_; - int streamIndex_; + int streamIndex_ = -1; UniqueSwsContext swsContext_; const torch::Tensor frames_; From 48e88bf8e6f86641bd01204e73bfb7ed370a1154 Mon Sep 17 00:00:00 2001 From: Daniel Flores Date: Thu, 11 Sep 2025 15:16:58 -0400 Subject: [PATCH 2/2] static cast ints --- src/torchcodec/_core/Encoder.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/torchcodec/_core/Encoder.cpp b/src/torchcodec/_core/Encoder.cpp index a7fc567cd..b4d2c5609 100644 --- a/src/torchcodec/_core/Encoder.cpp +++ b/src/torchcodec/_core/Encoder.cpp @@ -598,8 +598,8 @@ void VideoEncoder::initializeEncoder( // TODO-VideoEncoder: Remove assumption that tensor in NCHW format auto sizes = frames_.sizes(); inPixelFormat_ = AV_PIX_FMT_GBRP; - inHeight_ = sizes[2]; - inWidth_ = sizes[3]; + inHeight_ = static_cast(sizes[2]); + inWidth_ = static_cast(sizes[3]); // Use specified dimensions or input dimensions // TODO-VideoEncoder: Allow height and width to be set @@ -664,7 +664,7 @@ void VideoEncoder::encode() { getFFMPEGErrorStringFromErrorCode(status)); AutoAVPacket autoAVPacket; - int numFrames = frames_.sizes()[0]; + int numFrames = static_cast(frames_.sizes()[0]); for (int i = 0; i < numFrames; ++i) { torch::Tensor currFrame = frames_[i]; UniqueAVFrame avFrame = convertTensorToAVFrame(currFrame, i);