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); 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_;