1313#include " src/torchcodec/_core/AVIOTensorContext.h"
1414#include " src/torchcodec/_core/Encoder.h"
1515#include " src/torchcodec/_core/SingleStreamDecoder.h"
16+ #include " src/torchcodec/_core/ValidationUtils.h"
1617
1718namespace facebook ::torchcodec {
1819
@@ -164,16 +165,6 @@ std::string mapToJson(const std::map<std::string, std::string>& metadataMap) {
164165 return ss.str ();
165166}
166167
167- int validateSampleRate (int64_t sampleRate) {
168- TORCH_CHECK (
169- sampleRate <= std::numeric_limits<int >::max (),
170- " sample_rate=" ,
171- sampleRate,
172- " is too large to be cast to an int." );
173-
174- return static_cast <int >(sampleRate);
175- }
176-
177168} // namespace
178169
179170// ==============================
@@ -413,14 +404,17 @@ void encode_audio_to_file(
413404 std::optional<int64_t > bit_rate = std::nullopt ,
414405 std::optional<int64_t > num_channels = std::nullopt ,
415406 std::optional<int64_t > desired_sample_rate = std::nullopt ) {
416- // TODO Fix implicit int conversion:
417- // https://github.com/pytorch/torchcodec/issues/679
418407 AudioStreamOptions audioStreamOptions;
419- audioStreamOptions.bitRate = bit_rate;
420- audioStreamOptions.numChannels = num_channels;
421- audioStreamOptions.sampleRate = desired_sample_rate;
408+ audioStreamOptions.bitRate = validateOptionalInt64ToInt (bit_rate, " bit_rate" );
409+ audioStreamOptions.numChannels =
410+ validateOptionalInt64ToInt (num_channels, " num_channels" );
411+ audioStreamOptions.sampleRate =
412+ validateOptionalInt64ToInt (desired_sample_rate, " desired_sample_rate" );
422413 AudioEncoder (
423- samples, validateSampleRate (sample_rate), file_name, audioStreamOptions)
414+ samples,
415+ validateInt64ToInt (sample_rate, " sample_rate" ),
416+ file_name,
417+ audioStreamOptions)
424418 .encode ();
425419}
426420
@@ -432,15 +426,15 @@ at::Tensor encode_audio_to_tensor(
432426 std::optional<int64_t > num_channels = std::nullopt ,
433427 std::optional<int64_t > desired_sample_rate = std::nullopt ) {
434428 auto avioContextHolder = std::make_unique<AVIOToTensorContext>();
435- // TODO Fix implicit int conversion:
436- // https://github.com/pytorch/torchcodec/issues/679
437429 AudioStreamOptions audioStreamOptions;
438- audioStreamOptions.bitRate = bit_rate;
439- audioStreamOptions.numChannels = num_channels;
440- audioStreamOptions.sampleRate = desired_sample_rate;
430+ audioStreamOptions.bitRate = validateOptionalInt64ToInt (bit_rate, " bit_rate" );
431+ audioStreamOptions.numChannels =
432+ validateOptionalInt64ToInt (num_channels, " num_channels" );
433+ audioStreamOptions.sampleRate =
434+ validateOptionalInt64ToInt (desired_sample_rate, " desired_sample_rate" );
441435 return AudioEncoder (
442436 samples,
443- validateSampleRate (sample_rate),
437+ validateInt64ToInt (sample_rate, " sample_rate " ),
444438 format,
445439 std::move (avioContextHolder),
446440 audioStreamOptions)
0 commit comments