torchcodec 0.8.0__cp312-cp312-win_amd64.whl → 0.8.1__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of torchcodec might be problematic. Click here for more details.

Files changed (55) hide show
  1. torchcodec/_core/AVIOTensorContext.cpp +23 -16
  2. torchcodec/_core/AVIOTensorContext.h +2 -1
  3. torchcodec/_core/BetaCudaDeviceInterface.cpp +168 -86
  4. torchcodec/_core/BetaCudaDeviceInterface.h +7 -5
  5. torchcodec/_core/CMakeLists.txt +1 -19
  6. torchcodec/_core/CUDACommon.cpp +21 -6
  7. torchcodec/_core/CUDACommon.h +6 -1
  8. torchcodec/_core/Cache.h +6 -20
  9. torchcodec/_core/CpuDeviceInterface.cpp +7 -1
  10. torchcodec/_core/CpuDeviceInterface.h +4 -1
  11. torchcodec/_core/CudaDeviceInterface.cpp +19 -11
  12. torchcodec/_core/CudaDeviceInterface.h +6 -1
  13. torchcodec/_core/DeviceInterface.h +27 -27
  14. torchcodec/_core/Encoder.cpp +51 -7
  15. torchcodec/_core/Encoder.h +12 -1
  16. torchcodec/_core/FFMPEGCommon.cpp +1 -1
  17. torchcodec/_core/FFMPEGCommon.h +9 -1
  18. torchcodec/_core/FilterGraph.cpp +2 -1
  19. torchcodec/_core/Frame.cpp +5 -0
  20. torchcodec/_core/Frame.h +1 -1
  21. torchcodec/_core/NVCUVIDRuntimeLoader.cpp +320 -0
  22. torchcodec/_core/NVCUVIDRuntimeLoader.h +14 -0
  23. torchcodec/_core/NVDECCache.cpp +3 -13
  24. torchcodec/_core/NVDECCache.h +4 -6
  25. torchcodec/_core/SingleStreamDecoder.cpp +22 -31
  26. torchcodec/_core/SingleStreamDecoder.h +4 -2
  27. torchcodec/_core/StreamOptions.h +2 -2
  28. torchcodec/_core/Transform.cpp +27 -0
  29. torchcodec/_core/Transform.h +25 -0
  30. torchcodec/_core/__init__.py +3 -0
  31. torchcodec/_core/custom_ops.cpp +99 -22
  32. torchcodec/_core/ops.py +76 -16
  33. torchcodec/decoders/_video_decoder.py +0 -10
  34. torchcodec/libtorchcodec_core4.dll +0 -0
  35. torchcodec/libtorchcodec_core5.dll +0 -0
  36. torchcodec/libtorchcodec_core6.dll +0 -0
  37. torchcodec/libtorchcodec_core7.dll +0 -0
  38. torchcodec/libtorchcodec_core8.dll +0 -0
  39. torchcodec/libtorchcodec_custom_ops4.dll +0 -0
  40. torchcodec/libtorchcodec_custom_ops5.dll +0 -0
  41. torchcodec/libtorchcodec_custom_ops6.dll +0 -0
  42. torchcodec/libtorchcodec_custom_ops7.dll +0 -0
  43. torchcodec/libtorchcodec_custom_ops8.dll +0 -0
  44. torchcodec/libtorchcodec_pybind_ops4.pyd +0 -0
  45. torchcodec/libtorchcodec_pybind_ops5.pyd +0 -0
  46. torchcodec/libtorchcodec_pybind_ops6.pyd +0 -0
  47. torchcodec/libtorchcodec_pybind_ops7.pyd +0 -0
  48. torchcodec/libtorchcodec_pybind_ops8.pyd +0 -0
  49. torchcodec/version.py +1 -1
  50. {torchcodec-0.8.0.dist-info → torchcodec-0.8.1.dist-info}/METADATA +6 -4
  51. torchcodec-0.8.1.dist-info/RECORD +82 -0
  52. torchcodec-0.8.0.dist-info/RECORD +0 -80
  53. {torchcodec-0.8.0.dist-info → torchcodec-0.8.1.dist-info}/WHEEL +0 -0
  54. {torchcodec-0.8.0.dist-info → torchcodec-0.8.1.dist-info}/licenses/LICENSE +0 -0
  55. {torchcodec-0.8.0.dist-info → torchcodec-0.8.1.dist-info}/top_level.txt +0 -0
@@ -32,20 +32,24 @@ TORCH_LIBRARY(torchcodec_ns, m) {
32
32
  m.def("create_from_file(str filename, str? seek_mode=None) -> Tensor");
33
33
  m.def(
34
34
  "encode_audio_to_file(Tensor samples, int sample_rate, str filename, int? bit_rate=None, int? num_channels=None, int? desired_sample_rate=None) -> ()");
35
- m.def(
36
- "encode_video_to_file(Tensor frames, int frame_rate, str filename, int? crf=None) -> ()");
37
35
  m.def(
38
36
  "encode_audio_to_tensor(Tensor samples, int sample_rate, str format, int? bit_rate=None, int? num_channels=None, int? desired_sample_rate=None) -> Tensor");
39
37
  m.def(
40
38
  "_encode_audio_to_file_like(Tensor samples, int sample_rate, str format, int file_like_context, int? bit_rate=None, int? num_channels=None, int? desired_sample_rate=None) -> ()");
39
+ m.def(
40
+ "encode_video_to_file(Tensor frames, int frame_rate, str filename, int? crf=None) -> ()");
41
+ m.def(
42
+ "encode_video_to_tensor(Tensor frames, int frame_rate, str format, int? crf=None) -> Tensor");
43
+ m.def(
44
+ "_encode_video_to_file_like(Tensor frames, int frame_rate, str format, int file_like_context, int? crf=None) -> ()");
41
45
  m.def(
42
46
  "create_from_tensor(Tensor video_tensor, str? seek_mode=None) -> Tensor");
43
47
  m.def(
44
48
  "_create_from_file_like(int file_like_context, str? seek_mode=None) -> Tensor");
45
49
  m.def(
46
- "_add_video_stream(Tensor(a!) decoder, *, int? num_threads=None, str? dimension_order=None, int? stream_index=None, str device=\"cpu\", str device_variant=\"default\", str transform_specs=\"\", (Tensor, Tensor, Tensor)? custom_frame_mappings=None, str? color_conversion_library=None) -> ()");
50
+ "_add_video_stream(Tensor(a!) decoder, *, int? num_threads=None, str? dimension_order=None, int? stream_index=None, str device=\"cpu\", str device_variant=\"ffmpeg\", str transform_specs=\"\", (Tensor, Tensor, Tensor)? custom_frame_mappings=None, str? color_conversion_library=None) -> ()");
47
51
  m.def(
48
- "add_video_stream(Tensor(a!) decoder, *, int? num_threads=None, str? dimension_order=None, int? stream_index=None, str device=\"cpu\", str device_variant=\"default\", str transform_specs=\"\", (Tensor, Tensor, Tensor)? custom_frame_mappings=None) -> ()");
52
+ "add_video_stream(Tensor(a!) decoder, *, int? num_threads=None, str? dimension_order=None, int? stream_index=None, str device=\"cpu\", str device_variant=\"ffmpeg\", str transform_specs=\"\", (Tensor, Tensor, Tensor)? custom_frame_mappings=None) -> ()");
49
53
  m.def(
50
54
  "add_audio_stream(Tensor(a!) decoder, *, int? stream_index=None, int? sample_rate=None, int? num_channels=None) -> ()");
51
55
  m.def("seek_to_pts(Tensor(a!) decoder, float seconds) -> ()");
@@ -70,6 +74,7 @@ TORCH_LIBRARY(torchcodec_ns, m) {
70
74
  m.def(
71
75
  "get_stream_json_metadata(Tensor(a!) decoder, int stream_index) -> str");
72
76
  m.def("_get_json_ffmpeg_library_versions() -> str");
77
+ m.def("_get_backend_details(Tensor(a!) decoder) -> str");
73
78
  m.def(
74
79
  "_test_frame_pts_equality(Tensor(a!) decoder, *, int frame_index, float pts_seconds_to_test) -> bool");
75
80
  m.def("scan_all_streams_to_update_metadata(Tensor(a!) decoder) -> ()");
@@ -212,6 +217,26 @@ Transform* makeResizeTransform(
212
217
  return new ResizeTransform(FrameDims(height, width));
213
218
  }
214
219
 
220
+ // Crop transform specs take the form:
221
+ //
222
+ // "crop, <height>, <width>, <x>, <y>"
223
+ //
224
+ // Where "crop" is the string literal and <height>, <width>, <x> and <y> are
225
+ // positive integers. <x> and <y> are the x and y coordinates of the top left
226
+ // corner of the crop. Note that we follow the PyTorch convention of (height,
227
+ // width) for specifying image dimensions; FFmpeg uses (width, height).
228
+ Transform* makeCropTransform(
229
+ const std::vector<std::string>& cropTransformSpec) {
230
+ TORCH_CHECK(
231
+ cropTransformSpec.size() == 5,
232
+ "cropTransformSpec must have 5 elements including its name");
233
+ int height = checkedToPositiveInt(cropTransformSpec[1]);
234
+ int width = checkedToPositiveInt(cropTransformSpec[2]);
235
+ int x = checkedToPositiveInt(cropTransformSpec[3]);
236
+ int y = checkedToPositiveInt(cropTransformSpec[4]);
237
+ return new CropTransform(FrameDims(height, width), x, y);
238
+ }
239
+
215
240
  std::vector<std::string> split(const std::string& str, char delimiter) {
216
241
  std::vector<std::string> tokens;
217
242
  std::string token;
@@ -239,6 +264,8 @@ std::vector<Transform*> makeTransforms(const std::string& transformSpecsRaw) {
239
264
  auto name = transformSpec[0];
240
265
  if (name == "resize") {
241
266
  transforms.push_back(makeResizeTransform(transformSpec));
267
+ } else if (name == "crop") {
268
+ transforms.push_back(makeCropTransform(transformSpec));
242
269
  } else {
243
270
  TORCH_CHECK(false, "Invalid transform name: " + name);
244
271
  }
@@ -319,7 +346,7 @@ void _add_video_stream(
319
346
  std::optional<std::string_view> dimension_order = std::nullopt,
320
347
  std::optional<int64_t> stream_index = std::nullopt,
321
348
  std::string_view device = "cpu",
322
- std::string_view device_variant = "default",
349
+ std::string_view device_variant = "ffmpeg",
323
350
  std::string_view transform_specs = "",
324
351
  std::optional<std::tuple<at::Tensor, at::Tensor, at::Tensor>>
325
352
  custom_frame_mappings = std::nullopt,
@@ -376,7 +403,7 @@ void add_video_stream(
376
403
  std::optional<std::string_view> dimension_order = std::nullopt,
377
404
  std::optional<int64_t> stream_index = std::nullopt,
378
405
  std::string_view device = "cpu",
379
- std::string_view device_variant = "default",
406
+ std::string_view device_variant = "ffmpeg",
380
407
  std::string_view transform_specs = "",
381
408
  const std::optional<std::tuple<at::Tensor, at::Tensor, at::Tensor>>&
382
409
  custom_frame_mappings = std::nullopt) {
@@ -498,21 +525,6 @@ OpsAudioFramesOutput get_frames_by_pts_in_range_audio(
498
525
  return makeOpsAudioFramesOutput(result);
499
526
  }
500
527
 
501
- void encode_video_to_file(
502
- const at::Tensor& frames,
503
- int64_t frame_rate,
504
- std::string_view file_name,
505
- std::optional<int64_t> crf = std::nullopt) {
506
- VideoStreamOptions videoStreamOptions;
507
- videoStreamOptions.crf = crf;
508
- VideoEncoder(
509
- frames,
510
- validateInt64ToInt(frame_rate, "frame_rate"),
511
- file_name,
512
- videoStreamOptions)
513
- .encode();
514
- }
515
-
516
528
  void encode_audio_to_file(
517
529
  const at::Tensor& samples,
518
530
  int64_t sample_rate,
@@ -587,6 +599,62 @@ void _encode_audio_to_file_like(
587
599
  encoder.encode();
588
600
  }
589
601
 
602
+ void encode_video_to_file(
603
+ const at::Tensor& frames,
604
+ int64_t frame_rate,
605
+ std::string_view file_name,
606
+ std::optional<int64_t> crf = std::nullopt) {
607
+ VideoStreamOptions videoStreamOptions;
608
+ videoStreamOptions.crf = crf;
609
+ VideoEncoder(
610
+ frames,
611
+ validateInt64ToInt(frame_rate, "frame_rate"),
612
+ file_name,
613
+ videoStreamOptions)
614
+ .encode();
615
+ }
616
+
617
+ at::Tensor encode_video_to_tensor(
618
+ const at::Tensor& frames,
619
+ int64_t frame_rate,
620
+ std::string_view format,
621
+ std::optional<int64_t> crf = std::nullopt) {
622
+ auto avioContextHolder = std::make_unique<AVIOToTensorContext>();
623
+ VideoStreamOptions videoStreamOptions;
624
+ videoStreamOptions.crf = crf;
625
+ return VideoEncoder(
626
+ frames,
627
+ validateInt64ToInt(frame_rate, "frame_rate"),
628
+ format,
629
+ std::move(avioContextHolder),
630
+ videoStreamOptions)
631
+ .encodeToTensor();
632
+ }
633
+
634
+ void _encode_video_to_file_like(
635
+ const at::Tensor& frames,
636
+ int64_t frame_rate,
637
+ std::string_view format,
638
+ int64_t file_like_context,
639
+ std::optional<int64_t> crf = std::nullopt) {
640
+ auto fileLikeContext =
641
+ reinterpret_cast<AVIOFileLikeContext*>(file_like_context);
642
+ TORCH_CHECK(
643
+ fileLikeContext != nullptr, "file_like_context must be a valid pointer");
644
+ std::unique_ptr<AVIOFileLikeContext> avioContextHolder(fileLikeContext);
645
+
646
+ VideoStreamOptions videoStreamOptions;
647
+ videoStreamOptions.crf = crf;
648
+
649
+ VideoEncoder encoder(
650
+ frames,
651
+ validateInt64ToInt(frame_rate, "frame_rate"),
652
+ format,
653
+ std::move(avioContextHolder),
654
+ videoStreamOptions);
655
+ encoder.encode();
656
+ }
657
+
590
658
  // For testing only. We need to implement this operation as a core library
591
659
  // function because what we're testing is round-tripping pts values as
592
660
  // double-precision floating point numbers from C++ to Python and back to C++.
@@ -828,6 +896,11 @@ std::string _get_json_ffmpeg_library_versions() {
828
896
  return ss.str();
829
897
  }
830
898
 
899
+ std::string get_backend_details(at::Tensor& decoder) {
900
+ auto videoDecoder = unwrapTensorToGetDecoder(decoder);
901
+ return videoDecoder->getDeviceInterfaceDetails();
902
+ }
903
+
831
904
  // Scans video packets to get more accurate metadata like frame count, exact
832
905
  // keyframe positions, etc. Exact keyframe positions are useful for efficient
833
906
  // accurate seeking. Note that this function reads the entire video but it does
@@ -847,9 +920,11 @@ TORCH_LIBRARY_IMPL(torchcodec_ns, BackendSelect, m) {
847
920
 
848
921
  TORCH_LIBRARY_IMPL(torchcodec_ns, CPU, m) {
849
922
  m.impl("encode_audio_to_file", &encode_audio_to_file);
850
- m.impl("encode_video_to_file", &encode_video_to_file);
851
923
  m.impl("encode_audio_to_tensor", &encode_audio_to_tensor);
852
924
  m.impl("_encode_audio_to_file_like", &_encode_audio_to_file_like);
925
+ m.impl("encode_video_to_file", &encode_video_to_file);
926
+ m.impl("encode_video_to_tensor", &encode_video_to_tensor);
927
+ m.impl("_encode_video_to_file_like", &_encode_video_to_file_like);
853
928
  m.impl("seek_to_pts", &seek_to_pts);
854
929
  m.impl("add_video_stream", &add_video_stream);
855
930
  m.impl("_add_video_stream", &_add_video_stream);
@@ -870,6 +945,8 @@ TORCH_LIBRARY_IMPL(torchcodec_ns, CPU, m) {
870
945
  m.impl(
871
946
  "scan_all_streams_to_update_metadata",
872
947
  &scan_all_streams_to_update_metadata);
948
+
949
+ m.impl("_get_backend_details", &get_backend_details);
873
950
  }
874
951
 
875
952
  } // namespace facebook::torchcodec
torchcodec/_core/ops.py CHANGED
@@ -69,7 +69,7 @@ def load_torchcodec_shared_libraries():
69
69
  raise RuntimeError(
70
70
  f"""Could not load libtorchcodec. Likely causes:
71
71
  1. FFmpeg is not properly installed in your environment. We support
72
- versions 4, 5, 6 and 7.
72
+ versions 4, 5, 6, and 7 on all platforms, and 8 on Mac and Linux.
73
73
  2. The PyTorch version ({torch.__version__}) is not compatible with
74
74
  this version of TorchCodec. Refer to the version compatibility
75
75
  table:
@@ -92,15 +92,21 @@ create_from_file = torch._dynamo.disallow_in_graph(
92
92
  encode_audio_to_file = torch._dynamo.disallow_in_graph(
93
93
  torch.ops.torchcodec_ns.encode_audio_to_file.default
94
94
  )
95
- encode_video_to_file = torch._dynamo.disallow_in_graph(
96
- torch.ops.torchcodec_ns.encode_video_to_file.default
97
- )
98
95
  encode_audio_to_tensor = torch._dynamo.disallow_in_graph(
99
96
  torch.ops.torchcodec_ns.encode_audio_to_tensor.default
100
97
  )
101
98
  _encode_audio_to_file_like = torch._dynamo.disallow_in_graph(
102
99
  torch.ops.torchcodec_ns._encode_audio_to_file_like.default
103
100
  )
101
+ encode_video_to_file = torch._dynamo.disallow_in_graph(
102
+ torch.ops.torchcodec_ns.encode_video_to_file.default
103
+ )
104
+ encode_video_to_tensor = torch._dynamo.disallow_in_graph(
105
+ torch.ops.torchcodec_ns.encode_video_to_tensor.default
106
+ )
107
+ _encode_video_to_file_like = torch._dynamo.disallow_in_graph(
108
+ torch.ops.torchcodec_ns._encode_video_to_file_like.default
109
+ )
104
110
  create_from_tensor = torch._dynamo.disallow_in_graph(
105
111
  torch.ops.torchcodec_ns.create_from_tensor.default
106
112
  )
@@ -136,6 +142,7 @@ _get_stream_json_metadata = torch.ops.torchcodec_ns.get_stream_json_metadata.def
136
142
  _get_json_ffmpeg_library_versions = (
137
143
  torch.ops.torchcodec_ns._get_json_ffmpeg_library_versions.default
138
144
  )
145
+ _get_backend_details = torch.ops.torchcodec_ns._get_backend_details.default
139
146
 
140
147
 
141
148
  # =============================
@@ -200,6 +207,33 @@ def encode_audio_to_file_like(
200
207
  )
201
208
 
202
209
 
210
+ def encode_video_to_file_like(
211
+ frames: torch.Tensor,
212
+ frame_rate: int,
213
+ format: str,
214
+ file_like: Union[io.RawIOBase, io.BufferedIOBase],
215
+ crf: Optional[int] = None,
216
+ ) -> None:
217
+ """Encode video frames to a file-like object.
218
+
219
+ Args:
220
+ frames: Video frames tensor
221
+ frame_rate: Frame rate in frames per second
222
+ format: Video format (e.g., "mp4", "mov", "mkv")
223
+ file_like: File-like object that supports write() and seek() methods
224
+ crf: Optional constant rate factor for encoding quality
225
+ """
226
+ assert _pybind_ops is not None
227
+
228
+ _encode_video_to_file_like(
229
+ frames,
230
+ frame_rate,
231
+ format,
232
+ _pybind_ops.create_file_like_context(file_like, True), # True means for writing
233
+ crf,
234
+ )
235
+
236
+
203
237
  def get_frames_at_indices(
204
238
  decoder: torch.Tensor, *, frame_indices: Union[torch.Tensor, list[int]]
205
239
  ) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
@@ -254,16 +288,6 @@ def encode_audio_to_file_abstract(
254
288
  return
255
289
 
256
290
 
257
- @register_fake("torchcodec_ns::encode_video_to_file")
258
- def encode_video_to_file_abstract(
259
- frames: torch.Tensor,
260
- frame_rate: int,
261
- filename: str,
262
- crf: Optional[int] = None,
263
- ) -> None:
264
- return
265
-
266
-
267
291
  @register_fake("torchcodec_ns::encode_audio_to_tensor")
268
292
  def encode_audio_to_tensor_abstract(
269
293
  samples: torch.Tensor,
@@ -289,6 +313,37 @@ def _encode_audio_to_file_like_abstract(
289
313
  return
290
314
 
291
315
 
316
+ @register_fake("torchcodec_ns::encode_video_to_file")
317
+ def encode_video_to_file_abstract(
318
+ frames: torch.Tensor,
319
+ frame_rate: int,
320
+ filename: str,
321
+ crf: Optional[int],
322
+ ) -> None:
323
+ return
324
+
325
+
326
+ @register_fake("torchcodec_ns::encode_video_to_tensor")
327
+ def encode_video_to_tensor_abstract(
328
+ frames: torch.Tensor,
329
+ frame_rate: int,
330
+ format: str,
331
+ crf: Optional[int],
332
+ ) -> torch.Tensor:
333
+ return torch.empty([], dtype=torch.long)
334
+
335
+
336
+ @register_fake("torchcodec_ns::_encode_video_to_file_like")
337
+ def _encode_video_to_file_like_abstract(
338
+ frames: torch.Tensor,
339
+ frame_rate: int,
340
+ format: str,
341
+ file_like_context: int,
342
+ crf: Optional[int] = None,
343
+ ) -> None:
344
+ return
345
+
346
+
292
347
  @register_fake("torchcodec_ns::create_from_tensor")
293
348
  def create_from_tensor_abstract(
294
349
  video_tensor: torch.Tensor, seek_mode: Optional[str]
@@ -304,7 +359,7 @@ def _add_video_stream_abstract(
304
359
  dimension_order: Optional[str] = None,
305
360
  stream_index: Optional[int] = None,
306
361
  device: str = "cpu",
307
- device_variant: str = "default",
362
+ device_variant: str = "ffmpeg",
308
363
  transform_specs: str = "",
309
364
  custom_frame_mappings: Optional[
310
365
  tuple[torch.Tensor, torch.Tensor, torch.Tensor]
@@ -322,7 +377,7 @@ def add_video_stream_abstract(
322
377
  dimension_order: Optional[str] = None,
323
378
  stream_index: Optional[int] = None,
324
379
  device: str = "cpu",
325
- device_variant: str = "default",
380
+ device_variant: str = "ffmpeg",
326
381
  transform_specs: str = "",
327
382
  custom_frame_mappings: Optional[
328
383
  tuple[torch.Tensor, torch.Tensor, torch.Tensor]
@@ -496,3 +551,8 @@ def scan_all_streams_to_update_metadata_abstract(decoder: torch.Tensor) -> None:
496
551
  def get_ffmpeg_library_versions():
497
552
  versions_json = _get_json_ffmpeg_library_versions()
498
553
  return json.loads(versions_json)
554
+
555
+
556
+ @register_fake("torchcodec_ns::_get_backend_details")
557
+ def _get_backend_details_abstract(decoder: torch.Tensor) -> str:
558
+ return ""
@@ -147,16 +147,6 @@ class VideoDecoder:
147
147
  device = str(device)
148
148
 
149
149
  device_variant = _get_cuda_backend()
150
- if device_variant == "ffmpeg":
151
- # TODONVDEC P2 rename 'default' into 'ffmpeg' everywhere.
152
- device_variant = "default"
153
-
154
- # Legacy support for device="cuda:0:beta" syntax
155
- # TODONVDEC P2: remove support for this everywhere. This will require
156
- # updating our tests.
157
- if device == "cuda:0:beta":
158
- device = "cuda:0"
159
- device_variant = "beta"
160
150
 
161
151
  core.add_video_stream(
162
152
  self._decoder,
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
torchcodec/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # Note that this file is generated during install.
2
- __version__ = '0.8.0'
2
+ __version__ = '0.8.1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: torchcodec
3
- Version: 0.8.0
3
+ Version: 0.8.1
4
4
  Summary: A video decoder for PyTorch
5
5
  Author-email: PyTorch Team <packages@pytorch.org>
6
6
  Project-URL: GitHub, https://github.com/pytorch/torchcodec
@@ -123,8 +123,8 @@ ffmpeg -f lavfi -i \
123
123
  `torch` and `torchcodec`.
124
124
 
125
125
  2. Install FFmpeg, if it's not already installed. Linux distributions usually
126
- come with FFmpeg pre-installed. TorchCodec supports all major FFmpeg versions
127
- in [4, 7].
126
+ come with FFmpeg pre-installed. TorchCodec supports major FFmpeg versions
127
+ in [4, 7] on all platforms, and FFmpeg version 8 is supported on Mac and Linux.
128
128
 
129
129
  If FFmpeg is not already installed, or you need a more recent version, an
130
130
  easy way to install it is to use `conda`:
@@ -147,6 +147,7 @@ The following table indicates the compatibility between versions of
147
147
  | `torchcodec` | `torch` | Python |
148
148
  | ------------------ | ------------------ | ------------------- |
149
149
  | `main` / `nightly` | `main` / `nightly` | `>=3.10`, `<=3.13` |
150
+ | `0.8` | `2.9` | `>=3.10`, `<=3.13` |
150
151
  | `0.7` | `2.8` | `>=3.9`, `<=3.13` |
151
152
  | `0.6` | `2.8` | `>=3.9`, `<=3.13` |
152
153
  | `0.5` | `2.7` | `>=3.9`, `<=3.13` |
@@ -163,7 +164,8 @@ format you want. Refer to Nvidia's GPU support matrix for more details
163
164
  [here](https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new).
164
165
 
165
166
  1. Install FFmpeg with NVDEC support.
166
- TorchCodec with CUDA should work with FFmpeg versions in [4, 7].
167
+ TorchCodec with CUDA should work with FFmpeg versions in [4, 7] on all platforms,
168
+ and FFmpeg version 8 is supported on Linux.
167
169
 
168
170
  If FFmpeg is not already installed, or you need a more recent version, an
169
171
  easy way to install it is to use `conda`:
@@ -0,0 +1,82 @@
1
+ torchcodec/__init__.py,sha256=F9OpGp7psa4OKvSqaIsCL1FPGtBgqNyAd5Jn0_qUn9s,595
2
+ torchcodec/_frame.py,sha256=_LIIorsNn0nbcInGC9Mwh3Dwc3AuPDhxK4YIBFsfOww,5350
3
+ torchcodec/_internally_replaced_utils.py,sha256=5uYbY1l23FcfWSmLuwZb7j8mWXtMTTp--6sl9LQH28E,2422
4
+ torchcodec/libtorchcodec_core4.dll,sha256=PlG-uqv3lhgFbUp_rl923hpnOPw3xFIAg4QZ-UqxEMg,349184
5
+ torchcodec/libtorchcodec_core5.dll,sha256=v58cP03p8sPrA6i4gVnSPRWFGpkuh5e12eKqfeVknGE,349696
6
+ torchcodec/libtorchcodec_core6.dll,sha256=awpd45k3s2syOgWTS3o2Pkmp5wpAmCTx2eyZFSAXcFE,349696
7
+ torchcodec/libtorchcodec_core7.dll,sha256=wU_brBHv9PdTSK2wXNNkmWgR5rm3CamkYuua01X_zrk,349696
8
+ torchcodec/libtorchcodec_core8.dll,sha256=dMKOdQDhTVjbrnOkDXPVdVH-s2u_3MkVvI5--n2D8OE,350208
9
+ torchcodec/libtorchcodec_custom_ops4.dll,sha256=_2eWv1Bj902yjmJ8CT5J3PoFFtPyTKH4NJmRtIR5isY,623616
10
+ torchcodec/libtorchcodec_custom_ops5.dll,sha256=xDekrrccA03bZjXvitC8RzA69rOgrdIwrcF_8-ntySE,623616
11
+ torchcodec/libtorchcodec_custom_ops6.dll,sha256=X4jnc5Xi05e-CYfOymakZXRBsohMsUwixQap71KcflY,623616
12
+ torchcodec/libtorchcodec_custom_ops7.dll,sha256=cMZPXjRZIFv93t81_g7MCALGaY1tDmgDEpgr8So9soQ,623616
13
+ torchcodec/libtorchcodec_custom_ops8.dll,sha256=YdvcnbeExtck2TOyu57a3Ndy1SVyBMPq2LBmlQLJV3A,623616
14
+ torchcodec/libtorchcodec_pybind_ops4.pyd,sha256=Phqe4pWC66D3pSnjssMyUn6QEgwroQRiEkTDWHWA1WY,207872
15
+ torchcodec/libtorchcodec_pybind_ops5.pyd,sha256=7YhNzptzNg7wVwRXfZHcfr1MrtHDhYfGX2Ux5l_6cio,207872
16
+ torchcodec/libtorchcodec_pybind_ops6.pyd,sha256=my97qT57PC9tXBGifNNJl1ByB7S5eXmue3pIA0SnEzE,207872
17
+ torchcodec/libtorchcodec_pybind_ops7.pyd,sha256=3HKERJ9LM7JrNbeMXXddKlycYNss3DGnndWSR0dVguo,207872
18
+ torchcodec/libtorchcodec_pybind_ops8.pyd,sha256=QPwFNTcjjZxZ8GxZU5FzWtWkH6zWSax4T97Pz0sA9qU,207872
19
+ torchcodec/version.py,sha256=LmZD0tBGznDm3FOv2sw71abX1JHFUljgfEe0r-NZeV0,75
20
+ torchcodec/_core/AVIOContextHolder.cpp,sha256=ucOD1bGORgSzZfL5TxJtUVH2GAtXGVDylzWpvbJ2qJY,1628
21
+ torchcodec/_core/AVIOContextHolder.h,sha256=iYRap1vDdvK_4wylu3Ds9Dkn1k_vAdkbVJDlVni9uNY,2697
22
+ torchcodec/_core/AVIOFileLikeContext.cpp,sha256=bCMpEXhQPLWULWJRIPpNqzlio2eLE_EI7UoPuUgw70g,3450
23
+ torchcodec/_core/AVIOFileLikeContext.h,sha256=oJM9q9X3i1leplaBsU1vMW0gMt1a-xANHhgk5FID3zA,2130
24
+ torchcodec/_core/AVIOTensorContext.cpp,sha256=jkfrlaOYqEXyQzUL-49N9xGZvyvlxBne53hKwkM2eYQ,4339
25
+ torchcodec/_core/AVIOTensorContext.h,sha256=Z6CrXeWvaAtzPqiv4XZ1f-Xo_SqzxZuu-EArfCZ0Muc,1130
26
+ torchcodec/_core/BetaCudaDeviceInterface.cpp,sha256=kDv-8WtSERT3D2xSRmZ0b_u9c-t8SNQx6acG2yCfWww,27433
27
+ torchcodec/_core/BetaCudaDeviceInterface.h,sha256=MhsCyLqbsD7ktI8ynKu2F99dZoxbRbsS_1vVIoFgIjI,8291
28
+ torchcodec/_core/CMakeLists.txt,sha256=QD40ucnyiGXmcudL7CM3JzjdIf-1kayQt0p6-f0CGnE,11241
29
+ torchcodec/_core/CUDACommon.cpp,sha256=zwU1EWMIJhML4HJdbXupgr52aru5b7Cvb4Y4oROev74,13669
30
+ torchcodec/_core/CUDACommon.h,sha256=CuKWQU99I2mFxQoWryRG_WJI0yOv3zCM9m2dZ9jtmxk,1601
31
+ torchcodec/_core/Cache.h,sha256=5H85W_X_dfcacjDFjqgB9TyEbVqJL5fsLI57dPGpBdg,4342
32
+ torchcodec/_core/CpuDeviceInterface.cpp,sha256=HdjezZ-2_DWYtCJyfwWSok2-QsGyMQN0TAKNKt6lYDU,13496
33
+ torchcodec/_core/CpuDeviceInterface.h,sha256=ODqIXddW5ynAl4PL_Q0-vHE-BBNcAIrw4ZzNei3Qkqw,5128
34
+ torchcodec/_core/CudaDeviceInterface.cpp,sha256=sQJrCynbO6KXQGhnz_S-dCIfi9J_xRpcQDEnBNfXJJY,14014
35
+ torchcodec/_core/CudaDeviceInterface.h,sha256=6bUMuSpu1nQwsVpYrihIapxhMSWyJ05wbt5gA8n6TnE,2326
36
+ torchcodec/_core/DeviceInterface.cpp,sha256=6Is9D-K8G5qQUJnZPIuYF4Tynn4TltSRTKi8uxHGfpg,3335
37
+ torchcodec/_core/DeviceInterface.h,sha256=oSHigqvKz_9Ld9RqncsUt9JZMDT7ThZXf83m06PWOqE,5081
38
+ torchcodec/_core/Encoder.cpp,sha256=W_HfIOR-8Op5mw3FiqICbxayXe6-0ytz1aQp9wNupYU,30155
39
+ torchcodec/_core/Encoder.h,sha256=xC_kCQe-ryamhOOREwVUzwhKXqcK_9KfxhahmZWrzdI,8237
40
+ torchcodec/_core/FFMPEGCommon.cpp,sha256=MLFTShI9M51l6NlZzzLYv2mfMjW_7lVcQC0b8EScX38,19668
41
+ torchcodec/_core/FFMPEGCommon.h,sha256=Qbpl3JhXUQM6yd3uRHkeQlPDQXJfVPKcLyvjiP57gvM,8594
42
+ torchcodec/_core/FilterGraph.cpp,sha256=zr0v_WkwbzvBBfdTqAFTumQlX5sM7TGPAeM9AjUcyXc,5192
43
+ torchcodec/_core/FilterGraph.h,sha256=l8FfApNcRwN-cl-LepfXvK6DqLNCij_p9BfwhKT-l_Q,1693
44
+ torchcodec/_core/Frame.cpp,sha256=k2thv-jm9rjUmCmlDSEi18GI5OA9-crWXxQKIQdO380,1800
45
+ torchcodec/_core/Frame.h,sha256=qjpUb6d65oRwbGsAncTb6ROaNL5WqI8rY7JAj3YP7wQ,2309
46
+ torchcodec/_core/Metadata.h,sha256=cUTRJAgwUyXH5JjvCRl9tB0na7_2kJvydfkAKT4QZN8,2580
47
+ torchcodec/_core/NVCUVIDRuntimeLoader.cpp,sha256=wbHzp3qZCiQfqtitKvkAyzc-cM__74trmXvFG_A62O4,12734
48
+ torchcodec/_core/NVCUVIDRuntimeLoader.h,sha256=_CV2W0-g0usJeRZHbw27IqJ8uG9nDAt26u2gE9CcSlM,378
49
+ torchcodec/_core/NVDECCache.cpp,sha256=zyhHF4H5DLdQZdnu4SC_kTQ57Hb-WG8XVd9QO__vK9Y,1482
50
+ torchcodec/_core/NVDECCache.h,sha256=NPWsHu-XO6gCN8KRu4iV67e8TJEMZRZtmBHIeWC7FU8,3212
51
+ torchcodec/_core/SingleStreamDecoder.cpp,sha256=udIUNtqNWe9h57B_VoEOCeQHztOLMfx2YClrCcIqdfk,67012
52
+ torchcodec/_core/SingleStreamDecoder.h,sha256=yhS6wkWyYvWdR0l-ep96ThTdnM4uy26P107DeYNUwvg,16804
53
+ torchcodec/_core/StreamOptions.h,sha256=sBvoczOYKMpZzO9x4uNWXC6186yKD59w_QS0klbkF2s,1943
54
+ torchcodec/_core/Transform.cpp,sha256=KYKpB1XpZOwy6cy4TCG9i0UszU_bS3CR42LP6rZ_hi4,2682
55
+ torchcodec/_core/Transform.h,sha256=oM-e8E5grzEfdCK8UWYJ8pEXCpwuE_rcYdgG7rGPtLM,2762
56
+ torchcodec/_core/ValidationUtils.cpp,sha256=PkBTLv_38eYG9ZUVbGijHSug3YewtD2FNiftfZ3q8S8,994
57
+ torchcodec/_core/ValidationUtils.h,sha256=XWSUL441nPNYRGCnnpul0iuWtUNgZXC_fcsxeb-oB6E,579
58
+ torchcodec/_core/__init__.py,sha256=R54c11OAZlputhXhWsDxBD6dsp0bko38a94_a6VgR68,1185
59
+ torchcodec/_core/_metadata.py,sha256=LWlCQmJwJ66TjK_4bwtMARzSDVlid62dpsOVpDHk8NQ,13117
60
+ torchcodec/_core/custom_ops.cpp,sha256=Bc1gPQesEuSeM2qfhZR5IYGGSgyfExJzPDMqU8PcOsE,38476
61
+ torchcodec/_core/fetch_and_expose_non_gpl_ffmpeg_libs.cmake,sha256=q6KCuRVW3R1zZls-lIFAgATntCnKspc9pbfLbifZBvU,8324
62
+ torchcodec/_core/ops.py,sha256=vvdwQ3yZWT9Gu-ytT0XbETpCP5W8iFYxiZg-q2aFnmc,19615
63
+ torchcodec/_core/pybind_ops.cpp,sha256=RyDIZOFPjFxONg1MsO1tyn8Mp4N-J6R-td8-XCIWpmY,2066
64
+ torchcodec/_core/nvcuvid_include/cuviddec.h,sha256=tSf1ap09onfbt6bZ5mkib6pBMc-MfviZW5RxeI8_-Fk,63992
65
+ torchcodec/_core/nvcuvid_include/nvcuvid.h,sha256=Kw7TUxeelTXP5PTJbR8Gjo_B1h-rjI1BiWknoMVebGE,29342
66
+ torchcodec/_samplers/__init__.py,sha256=qWg69NiVSnMcYi68RTVFGvvp9bh1jkNha5u7q3VMRLw,258
67
+ torchcodec/_samplers/video_clip_sampler.py,sha256=1tyYp75oW7g_JZWbKT08viqMv2wn8RKZBG8v1YOu0P8,18172
68
+ torchcodec/decoders/__init__.py,sha256=nR-ewJrecOi2C-eiB2i_vuoMPY9IhbHLyo1A6sq2Ww0,468
69
+ torchcodec/decoders/_audio_decoder.py,sha256=dWbtH7OLIgcbiFQIvP9qpATvIC7XeS67P9uGM4dmsRE,7580
70
+ torchcodec/decoders/_decoder_utils.py,sha256=lV9_S3k7pp-Se7m_dqqFZzxPr-a4zOsUdwVDXh7buj4,4377
71
+ torchcodec/decoders/_video_decoder.py,sha256=2bvazig_zeXFC9jW7W37oQlGnUzGdPcZJdGudDIxitA,19880
72
+ torchcodec/encoders/__init__.py,sha256=Jw7dTzlTbzTaD_ZMrgSxUWEMs7Pn0cyxKm-_beuBIGo,50
73
+ torchcodec/encoders/_audio_encoder.py,sha256=VMZs6VTQDIMcsBxWtQEUpwq_ruILrrvNVktkswajaiM,6312
74
+ torchcodec/samplers/__init__.py,sha256=pijGrxa71UjRYHh1sRqLzwpsVXYAmHe24kMbC-rZW_M,159
75
+ torchcodec/samplers/_common.py,sha256=okgK1nVKA6mE9Li1Jex1GbzN7m26S3LtaREeF1AX-dA,2823
76
+ torchcodec/samplers/_index_based.py,sha256=8iwlYZrqTdP7CnnBbwd3PsJhQNkF-YHH802AHAEoG-g,11695
77
+ torchcodec/samplers/_time_based.py,sha256=wjFNo0gkgBKIslGWGYgUWDwGVJBg9L7EiM32fA3kCOc,15068
78
+ torchcodec-0.8.1.dist-info/licenses/LICENSE,sha256=ry9-8rOEo-Fe1s7VhuGoMWcBx72CjMauQWTw26jlrI8,1502
79
+ torchcodec-0.8.1.dist-info/METADATA,sha256=yEPtv8EtW6PvwsHFjYsRmnZDH7rC9WGBx3WyJLknUWU,9914
80
+ torchcodec-0.8.1.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
81
+ torchcodec-0.8.1.dist-info/top_level.txt,sha256=S1IZq2_jNQE_RDGwxNunVF8S1RCMXmWdAAQjLXBdu2g,21
82
+ torchcodec-0.8.1.dist-info/RECORD,,
@@ -1,80 +0,0 @@
1
- torchcodec/__init__.py,sha256=F9OpGp7psa4OKvSqaIsCL1FPGtBgqNyAd5Jn0_qUn9s,595
2
- torchcodec/_frame.py,sha256=_LIIorsNn0nbcInGC9Mwh3Dwc3AuPDhxK4YIBFsfOww,5350
3
- torchcodec/_internally_replaced_utils.py,sha256=5uYbY1l23FcfWSmLuwZb7j8mWXtMTTp--6sl9LQH28E,2422
4
- torchcodec/libtorchcodec_core4.dll,sha256=cIDUWv7aqiMZltPBWeq_ttbqJ-3VDbrupBfMtiWoYV4,336896
5
- torchcodec/libtorchcodec_core5.dll,sha256=CX95Q9QWQjInUN1LLJqeWpFbQztPS_msACO8jqL5Jtk,336896
6
- torchcodec/libtorchcodec_core6.dll,sha256=eglUZsoNhHp1DOoPwpTcbh0xVIST1IDLywUCZFjt970,336896
7
- torchcodec/libtorchcodec_core7.dll,sha256=uoC285m6FLl9i3KWrPY6vPnx91rxv-deZRJJBt6Zfjg,336896
8
- torchcodec/libtorchcodec_core8.dll,sha256=TKHjIYgK0NnoMi1hVmAK1-VKNMAeyJmbFPnG77-eNnw,337408
9
- torchcodec/libtorchcodec_custom_ops4.dll,sha256=LJqpjULCW0FtI_Lss4_q2BICXd3O8ajMgABxbDZ83tk,601088
10
- torchcodec/libtorchcodec_custom_ops5.dll,sha256=DbniJwuG_iXG0sKz4WpQq7t8iGDsAgeAGIkP8iiUwQ4,601088
11
- torchcodec/libtorchcodec_custom_ops6.dll,sha256=XiU4g4AK__ciLno0D85Fv7ekh3Y6ATA8xVK2zvC4BJ0,601088
12
- torchcodec/libtorchcodec_custom_ops7.dll,sha256=cmC2M77FCwN87OvyUiVMzmvcQJoMHk88_Cihy1-_QiU,601088
13
- torchcodec/libtorchcodec_custom_ops8.dll,sha256=Bx4c51M3K51TpJ4CBR3ap3h0cstSA7xbBnTk6tp8AFE,601088
14
- torchcodec/libtorchcodec_pybind_ops4.pyd,sha256=GfZKG73nCk_TmSLe-gWuzz1NWHDEwcKvj0XXZ7RpYOc,207872
15
- torchcodec/libtorchcodec_pybind_ops5.pyd,sha256=fEEoC8Jwj0hNR26M1A7ypVeO-Ap9VKQ2M6wkJmLuYmI,207872
16
- torchcodec/libtorchcodec_pybind_ops6.pyd,sha256=C-6sneG0mm1QdIHKEGjCKkQF-8SXb_L8fwi2m5bM-U8,207872
17
- torchcodec/libtorchcodec_pybind_ops7.pyd,sha256=iq60TayKTWkbY7MjCcGahuYMKc5MJfxOC--QSfBFiEU,207872
18
- torchcodec/libtorchcodec_pybind_ops8.pyd,sha256=L4oUxBcT-o3Sxn1q8nelFIB0b-YfE2b1LG2sg4mcTPw,207872
19
- torchcodec/version.py,sha256=ZdzHKm4XFhMcVH6-ULI-5zf2UncGmXJTB4vBr0c_p3g,75
20
- torchcodec/_core/AVIOContextHolder.cpp,sha256=ucOD1bGORgSzZfL5TxJtUVH2GAtXGVDylzWpvbJ2qJY,1628
21
- torchcodec/_core/AVIOContextHolder.h,sha256=iYRap1vDdvK_4wylu3Ds9Dkn1k_vAdkbVJDlVni9uNY,2697
22
- torchcodec/_core/AVIOFileLikeContext.cpp,sha256=bCMpEXhQPLWULWJRIPpNqzlio2eLE_EI7UoPuUgw70g,3450
23
- torchcodec/_core/AVIOFileLikeContext.h,sha256=oJM9q9X3i1leplaBsU1vMW0gMt1a-xANHhgk5FID3zA,2130
24
- torchcodec/_core/AVIOTensorContext.cpp,sha256=bNE33CeYuTsXbaZRo0Izs1pLJOQlYPtlX_ofgeBH9hM,4018
25
- torchcodec/_core/AVIOTensorContext.h,sha256=kYO93vn1hVINRHRoP2BWzEKUoPl1WeI62cgz5y0T6OA,1106
26
- torchcodec/_core/BetaCudaDeviceInterface.cpp,sha256=9SruWlr99VCG05LdhN2A4xjBOFdcPQjUoWJQGe3fwqY,24894
27
- torchcodec/_core/BetaCudaDeviceInterface.h,sha256=1f5RaG9P0sJbuy70L2_7ere6YPBh5DhO8cnGp4bu6M8,8191
28
- torchcodec/_core/CMakeLists.txt,sha256=ykYMYzzH5ZnWb2e-Se_dd0Hb0_iYTIeB2ZAiZ7Ae_kE,11946
29
- torchcodec/_core/CUDACommon.cpp,sha256=UVD4N4NHsqzhKWIfjdoNLbsvDdi1WBxATKRZZTm2xuY,13321
30
- torchcodec/_core/CUDACommon.h,sha256=TnAQVJ9GLE35cwxbRZbmT47s-T2yHuIssfZYEyRBTyE,1397
31
- torchcodec/_core/Cache.h,sha256=TG3kE1i86edBR9LXsEl4nToMOOi8wPJXFJYkTbBiJdk,5210
32
- torchcodec/_core/CpuDeviceInterface.cpp,sha256=y9Emp-7M_LyrplNszajTvXjmhxPBKwOo-gd9Y9zI54E,13315
33
- torchcodec/_core/CpuDeviceInterface.h,sha256=t7BwlKIev9baPh8whO1H37K1ue5p7n1GGf3en806WTU,5039
34
- torchcodec/_core/CudaDeviceInterface.cpp,sha256=3jo1ZodG1TZJ6KqdK3_JlQ3QInIX1SmxkFcUHwuk2Kc,13936
35
- torchcodec/_core/CudaDeviceInterface.h,sha256=Ni-0h-vZUUv63_yr29qRMI7boEtDdnH5dh5gGvlYeDU,2200
36
- torchcodec/_core/DeviceInterface.cpp,sha256=6Is9D-K8G5qQUJnZPIuYF4Tynn4TltSRTKi8uxHGfpg,3335
37
- torchcodec/_core/DeviceInterface.h,sha256=93Yiut6Wl_SlLUJpriy3ZU7iOc1RFoFGFGYukhG3MiQ,5010
38
- torchcodec/_core/Encoder.cpp,sha256=iZDJvog3ZIWfT8MilXFwcXjB463BfU-Vl3F0hlao_84,28524
39
- torchcodec/_core/Encoder.h,sha256=SrsBaDIMuqdNX4YatPL3DBEZdcJFR6gC8hv-r2DUNLM,7902
40
- torchcodec/_core/FFMPEGCommon.cpp,sha256=Zqz2rzcOVHW7sHrFbMjXW3nv7FsaIEqnbO7oloKCs4w,19668
41
- torchcodec/_core/FFMPEGCommon.h,sha256=qmNqakH6SD6JQzYjwVPxnb7P4sOjcit-zrwZTlSPKSk,8294
42
- torchcodec/_core/FilterGraph.cpp,sha256=b-7Htlc1mahQYQMd1u4BZgS1H83HXMazE6O_RGOZh2M,5129
43
- torchcodec/_core/FilterGraph.h,sha256=l8FfApNcRwN-cl-LepfXvK6DqLNCij_p9BfwhKT-l_Q,1693
44
- torchcodec/_core/Frame.cpp,sha256=wLNVu7lrGvi6fAqOn7U3-zLx4C59kG4FO6RvHwwUAUE,1570
45
- torchcodec/_core/Frame.h,sha256=x5GyoaAVf1_avDf4uXolhU3e5391dcy6c7a4K-qjbNU,2333
46
- torchcodec/_core/Metadata.h,sha256=cUTRJAgwUyXH5JjvCRl9tB0na7_2kJvydfkAKT4QZN8,2580
47
- torchcodec/_core/NVDECCache.cpp,sha256=9O2Iyxf0vnLDusA8Hi8QwhWkpaW9KrJOQrmoIMTdR0Q,1798
48
- torchcodec/_core/NVDECCache.h,sha256=uN6LKQVp9M6mbuW7PnnYksxZ3KGbXF6p8TdYvrhiCnk,3376
49
- torchcodec/_core/SingleStreamDecoder.cpp,sha256=XnbHHanEBKz6TQdIfSIJX9mc0QsbMqOn4dHP_C6p6lA,67483
50
- torchcodec/_core/SingleStreamDecoder.h,sha256=63zQKGlfgPJGpJ8qQkhkf41WELyO0sWCaqg6BNkHngY,16753
51
- torchcodec/_core/StreamOptions.h,sha256=uj5Zw2I9E5Ek1VmHZNkGvprd2BdbKMfiFRdhbhymsgo,1945
52
- torchcodec/_core/Transform.cpp,sha256=V8Nc9hNioA-Z33vwEic1fCRQ1imrWBx037doQZKyoFU,1634
53
- torchcodec/_core/Transform.h,sha256=dESbEg7wLKXGvD4mD6lRAJLC-yw5UM3BIVXg7FrdTKc,1861
54
- torchcodec/_core/ValidationUtils.cpp,sha256=PkBTLv_38eYG9ZUVbGijHSug3YewtD2FNiftfZ3q8S8,994
55
- torchcodec/_core/ValidationUtils.h,sha256=XWSUL441nPNYRGCnnpul0iuWtUNgZXC_fcsxeb-oB6E,579
56
- torchcodec/_core/__init__.py,sha256=cVcOlVRTBQ37oxmU7O3juISHRZhBC2kX2k7LtBwZAp4,1097
57
- torchcodec/_core/_metadata.py,sha256=LWlCQmJwJ66TjK_4bwtMARzSDVlid62dpsOVpDHk8NQ,13117
58
- torchcodec/_core/custom_ops.cpp,sha256=pCiNussNsiDFUC-DQCDGnCef4P__TXFQq6-rUdGNoRI,35508
59
- torchcodec/_core/fetch_and_expose_non_gpl_ffmpeg_libs.cmake,sha256=q6KCuRVW3R1zZls-lIFAgATntCnKspc9pbfLbifZBvU,8324
60
- torchcodec/_core/ops.py,sha256=CDQNUEuuJefEDGWkk1utHJhhOcgd-FZU3qjCuvNsM0k,17793
61
- torchcodec/_core/pybind_ops.cpp,sha256=RyDIZOFPjFxONg1MsO1tyn8Mp4N-J6R-td8-XCIWpmY,2066
62
- torchcodec/_core/nvcuvid_include/cuviddec.h,sha256=tSf1ap09onfbt6bZ5mkib6pBMc-MfviZW5RxeI8_-Fk,63992
63
- torchcodec/_core/nvcuvid_include/nvcuvid.h,sha256=Kw7TUxeelTXP5PTJbR8Gjo_B1h-rjI1BiWknoMVebGE,29342
64
- torchcodec/_samplers/__init__.py,sha256=qWg69NiVSnMcYi68RTVFGvvp9bh1jkNha5u7q3VMRLw,258
65
- torchcodec/_samplers/video_clip_sampler.py,sha256=1tyYp75oW7g_JZWbKT08viqMv2wn8RKZBG8v1YOu0P8,18172
66
- torchcodec/decoders/__init__.py,sha256=nR-ewJrecOi2C-eiB2i_vuoMPY9IhbHLyo1A6sq2Ww0,468
67
- torchcodec/decoders/_audio_decoder.py,sha256=dWbtH7OLIgcbiFQIvP9qpATvIC7XeS67P9uGM4dmsRE,7580
68
- torchcodec/decoders/_decoder_utils.py,sha256=lV9_S3k7pp-Se7m_dqqFZzxPr-a4zOsUdwVDXh7buj4,4377
69
- torchcodec/decoders/_video_decoder.py,sha256=rntQe97_E1cyAs1Nlo8Ppgsf8_0yWjLoP8i2bG_-ejc,20306
70
- torchcodec/encoders/__init__.py,sha256=Jw7dTzlTbzTaD_ZMrgSxUWEMs7Pn0cyxKm-_beuBIGo,50
71
- torchcodec/encoders/_audio_encoder.py,sha256=VMZs6VTQDIMcsBxWtQEUpwq_ruILrrvNVktkswajaiM,6312
72
- torchcodec/samplers/__init__.py,sha256=pijGrxa71UjRYHh1sRqLzwpsVXYAmHe24kMbC-rZW_M,159
73
- torchcodec/samplers/_common.py,sha256=okgK1nVKA6mE9Li1Jex1GbzN7m26S3LtaREeF1AX-dA,2823
74
- torchcodec/samplers/_index_based.py,sha256=8iwlYZrqTdP7CnnBbwd3PsJhQNkF-YHH802AHAEoG-g,11695
75
- torchcodec/samplers/_time_based.py,sha256=wjFNo0gkgBKIslGWGYgUWDwGVJBg9L7EiM32fA3kCOc,15068
76
- torchcodec-0.8.0.dist-info/licenses/LICENSE,sha256=ry9-8rOEo-Fe1s7VhuGoMWcBx72CjMauQWTw26jlrI8,1502
77
- torchcodec-0.8.0.dist-info/METADATA,sha256=GuIN2gGGF8pddR9TQT-asmVCg6-ClR7pI_BIKkkFrkI,9716
78
- torchcodec-0.8.0.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
79
- torchcodec-0.8.0.dist-info/top_level.txt,sha256=S1IZq2_jNQE_RDGwxNunVF8S1RCMXmWdAAQjLXBdu2g,21
80
- torchcodec-0.8.0.dist-info/RECORD,,