13
13
#include " src/torchcodec/_core/AVIOTensorContext.h"
14
14
#include " src/torchcodec/_core/Encoder.h"
15
15
#include " src/torchcodec/_core/SingleStreamDecoder.h"
16
+ #include " src/torchcodec/_core/ValidationUtils.h"
16
17
17
18
namespace facebook ::torchcodec {
18
19
@@ -164,16 +165,6 @@ std::string mapToJson(const std::map<std::string, std::string>& metadataMap) {
164
165
return ss.str ();
165
166
}
166
167
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
-
177
168
} // namespace
178
169
179
170
// ==============================
@@ -413,14 +404,17 @@ void encode_audio_to_file(
413
404
std::optional<int64_t > bit_rate = std::nullopt ,
414
405
std::optional<int64_t > num_channels = std::nullopt ,
415
406
std::optional<int64_t > desired_sample_rate = std::nullopt ) {
416
- // TODO Fix implicit int conversion:
417
- // https://github.com/pytorch/torchcodec/issues/679
418
407
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" );
422
413
AudioEncoder (
423
- samples, validateSampleRate (sample_rate), file_name, audioStreamOptions)
414
+ samples,
415
+ validateInt64ToInt (sample_rate, " sample_rate" ),
416
+ file_name,
417
+ audioStreamOptions)
424
418
.encode ();
425
419
}
426
420
@@ -432,15 +426,15 @@ at::Tensor encode_audio_to_tensor(
432
426
std::optional<int64_t > num_channels = std::nullopt ,
433
427
std::optional<int64_t > desired_sample_rate = std::nullopt ) {
434
428
auto avioContextHolder = std::make_unique<AVIOToTensorContext>();
435
- // TODO Fix implicit int conversion:
436
- // https://github.com/pytorch/torchcodec/issues/679
437
429
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" );
441
435
return AudioEncoder (
442
436
samples,
443
- validateSampleRate (sample_rate),
437
+ validateInt64ToInt (sample_rate, " sample_rate " ),
444
438
format,
445
439
std::move (avioContextHolder),
446
440
audioStreamOptions)
0 commit comments