@@ -573,7 +573,6 @@ torch::stable::Tensor validateFrames(
573573 framesDevice.index ());
574574 }
575575 if (avCodecContext) {
576- // TODO MultiStreamEncoder: Enable tensors in NHWC shape
577576 STD_TORCH_CHECK (
578577 static_cast <int >(frames.sizes ()[2 ]) == avCodecContext->height &&
579578 static_cast <int >(frames.sizes ()[3 ]) == avCodecContext->width ,
@@ -832,13 +831,11 @@ void VideoEncoder::initializeEncoder(
832831 avCodecContext_.reset (avCodecContext);
833832
834833 // Store dimensions of input frames
835- // TODO-VideoEncoder: (P2) Enable tensors in NHWC shape
836834 auto sizes = frames_.sizes ();
837835 int inHeight = static_cast <int >(sizes[2 ]);
838836 int inWidth = static_cast <int >(sizes[3 ]);
839837
840838 // Always use input dimensions as output dimensions
841- // TODO-VideoEncoder: (P2) Allow height and width to be set
842839 int outWidth = inWidth;
843840 int outHeight = inHeight;
844841 AVPixelFormat outPixelFormat = AV_PIX_FMT_NONE ;
@@ -1153,6 +1150,13 @@ int MultiStreamEncoder::addAudioStream(
11531150 STD_TORCH_CHECK (sampleRate > 0 , " sample_rate must be > 0, got " , sampleRate);
11541151 STD_TORCH_CHECK (
11551152 numChannels > 0 , " num_channels must be > 0, got " , numChannels);
1153+ STD_TORCH_CHECK (
1154+ numChannels <= AV_NUM_DATA_POINTERS ,
1155+ " Trying to encode " ,
1156+ numChannels,
1157+ " channels, but FFmpeg only supports " ,
1158+ AV_NUM_DATA_POINTERS ,
1159+ " channels per frame." );
11561160
11571161 AudioStream audioStream;
11581162 audioStream.inSampleRate = sampleRate;
@@ -1210,7 +1214,6 @@ void MultiStreamEncoder::initializeVideoStream(VideoStream& videoStream) {
12101214 avCodecContext != nullptr , " Couldn't allocate codec context." );
12111215 videoStream.avCodecContext .reset (avCodecContext);
12121216
1213- // TODO MultiStreamEncoder: Allow output height and width to be set
12141217 int outHeight = videoStream.inHeight ;
12151218 int outWidth = videoStream.inWidth ;
12161219 AVPixelFormat outPixelFormat = AV_PIX_FMT_NONE ;
@@ -1247,7 +1250,6 @@ void MultiStreamEncoder::initializeVideoStream(VideoStream& videoStream) {
12471250 videoStream.avCodecContext ->width = outWidth;
12481251 videoStream.avCodecContext ->height = outHeight;
12491252 videoStream.avCodecContext ->pix_fmt = outPixelFormat;
1250- // TODO MultiStreamEncoder: Add and utilize output frame_rate option
12511253 videoStream.avCodecContext ->framerate =
12521254 av_d2q (videoStream.inFrameRate , INT_MAX );
12531255 videoStream.avCodecContext ->time_base =
@@ -1419,7 +1421,6 @@ void MultiStreamEncoder::openStreamsAndWriteHeader() {
14191421void MultiStreamEncoder::addFrames (
14201422 const torch::stable::Tensor& frames,
14211423 int streamIndex) {
1422- // TODO MultiStreamEncoder: Specify which video stream to add frames to
14231424 STD_TORCH_CHECK (!closed_, " Cannot add frames after close() was called." );
14241425 STD_TORCH_CHECK (headerWritten_, " Call open() before addFrames()." );
14251426 STD_TORCH_CHECK (
0 commit comments