Skip to content

Commit 4025de7

Browse files
committed
Merge branch 'main' of github.com:meta-pytorch/torchcodec into rocm_decoder
2 parents ce3195a + f3efb06 commit 4025de7

19 files changed

Lines changed: 838 additions & 788 deletions

.github/workflows/linux_aarch64_wheel.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,11 @@ jobs:
107107

108108
- name: Run Python smoke tests
109109
run: |
110-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
111-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
110+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
111+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
112112
113113
- name: Run Python tests
114114
if: ${{ matrix.ffmpeg-version-for-tests == '7' && !startsWith(github.ref, 'refs/heads/release/') }}
115115
run: |
116-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
117-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test
116+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
117+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test

.github/workflows/linux_cuda_aarch64_wheel.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,11 @@ jobs:
113113
run: bash packaging/install_test_dependencies.sh ${{ matrix.ffmpeg-version-for-tests != '4' }}
114114
- name: Run Python smoke tests
115115
run: |
116-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
117-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
116+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
117+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
118118
119119
- name: Run Python tests
120120
if: ${{ matrix.ffmpeg-version-for-tests == '8' && !startsWith(github.ref, 'refs/heads/release/') }}
121121
run: |
122-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
123-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test
122+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
123+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test

.github/workflows/linux_cuda_wheel.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ jobs:
131131
run: ${CONDA_RUN} bash packaging/install_test_dependencies.sh ${{ matrix.ffmpeg-version-for-tests != '4' && matrix.cuda-version != '12.6' }}
132132
- name: Run Python tests
133133
run: |
134-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ] && [ "${{ matrix.cuda-version }}" != "12.6" ]; then export FAIL_WITHOUT_HEIC=1; fi
135-
${CONDA_RUN} FAIL_WITHOUT_CUDA=1 FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test --tb=short
134+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ] || [ "${{ matrix.cuda-version }}" = "12.6" ]; then export FAIL_WITHOUT_HEIC=0; fi
135+
${CONDA_RUN} FAIL_WITHOUT_CUDA=1 FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test --tb=short
136136
- name: Run Python benchmark
137137
run: |
138138
${CONDA_RUN} time python benchmarks/decoders/gpu_benchmark.py --devices=cuda:0,cpu --resize_devices=none
@@ -198,8 +198,8 @@ jobs:
198198
199199
- name: Run Python tests
200200
run: |
201-
if [ "${{ env.FFMPEG_VERSION }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
202-
pytest --override-ini="addopts=-v" test --tb=short
201+
if [ "${{ env.FFMPEG_VERSION }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
202+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test --tb=short
203203
204204
install-and-test-no-ffmpeg:
205205
# Asserts that the CUDA wheel works WITHOUT FFmpeg installed: it must import,
@@ -257,7 +257,7 @@ jobs:
257257
258258
- name: Run FFmpeg-free Python tests
259259
run: |
260-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 \
260+
FAIL_WITHOUT_IMAGE_DECODERS=1 FAIL_WITHOUT_HEIC=0 \
261261
pytest --override-ini="addopts=-v" test/test_ffmpeg_optional.py test/test_decoders.py::TestImageDecoder
262262
263263
build-docs:

.github/workflows/linux_wheel.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ jobs:
107107

108108
- name: Run Python tests
109109
run: |
110-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
111-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test
110+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
111+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test
112112
113113
install-and-test-no-ffmpeg:
114114
# Asserts that torchcodec works WITHOUT FFmpeg installed: the package must
@@ -161,7 +161,7 @@ jobs:
161161
162162
- name: Run FFmpeg-free Python tests
163163
run: |
164-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 \
164+
FAIL_WITHOUT_IMAGE_DECODERS=1 \
165165
pytest --override-ini="addopts=-v" test/test_ffmpeg_optional.py test/test_decoders.py::TestImageDecoder
166166
167167
install-and-test-third-party-interface:

.github/workflows/macos_wheel.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,11 @@ jobs:
110110

111111
- name: Run Python smoke tests
112112
run: |
113-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
114-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
113+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
114+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
115115
116116
- name: Run Python tests
117117
if: ${{ matrix.ffmpeg-version-for-tests == '8' && !startsWith(github.ref, 'refs/heads/release/') }}
118118
run: |
119-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
120-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test
119+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
120+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test

.github/workflows/windows_cuda_wheel.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ jobs:
142142
run: bash -l packaging/install_test_dependencies.sh ${{ matrix.ffmpeg-version-for-tests != '4' }}
143143
- name: Run Python tests
144144
run: |
145-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
146-
FAIL_WITHOUT_CUDA=1 FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
145+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
146+
FAIL_WITHOUT_CUDA=1 FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
147147
- name: Run Python benchmark
148148
run: |
149149
time python benchmarks/decoders/gpu_benchmark.py --devices=cuda:0,cpu --resize_devices=none
@@ -211,5 +211,5 @@ jobs:
211211
212212
- name: Run Python tests
213213
run: |
214-
if [ "${{ env.FFMPEG_VERSION }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
215-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
214+
if [ "${{ env.FFMPEG_VERSION }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
215+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short

.github/workflows/windows_wheel.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,11 @@ jobs:
115115

116116
- name: Run Python smoke tests
117117
run: |
118-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
119-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
118+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
119+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test/smoke_test.py --tb=short
120120
121121
- name: Run Python tests
122122
if: ${{ matrix.ffmpeg-version-for-tests == '8' && !startsWith(github.ref, 'refs/heads/release/') }}
123123
run: |
124-
if [ "${{ matrix.ffmpeg-version-for-tests }}" != "4" ]; then export FAIL_WITHOUT_HEIC=1; fi
125-
FAIL_WITHOUT_JPEG=1 FAIL_WITHOUT_PNG=1 FAIL_WITHOUT_WEBP=1 FAIL_WITHOUT_AVIF=1 pytest --override-ini="addopts=-v" test
124+
if [ "${{ matrix.ffmpeg-version-for-tests }}" = "4" ]; then export FAIL_WITHOUT_HEIC=0; fi
125+
FAIL_WITHOUT_IMAGE_DECODERS=1 pytest --override-ini="addopts=-v" test

src/torchcodec/_core/DecodeAvif.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ torch::stable::Tensor decode_avif(
9494
int64_t num_threads) {
9595
// Based on
9696
// https://github.com/AOMediaCodec/libavif/blob/main/examples/avif_example_decode_memory.c
97-
validate_encoded_data(input);
97+
auto contig_input = validate_encoded_data(input);
9898
STD_TORCH_CHECK(
9999
num_threads >= 1, "num_threads must be >= 1, got ", num_threads);
100100

@@ -104,7 +104,9 @@ torch::stable::Tensor decode_avif(
104104
decoder->maxThreads = static_cast<int>(num_threads);
105105

106106
auto result = avifDecoderSetIOMemory(
107-
decoder.get(), input.const_data_ptr<uint8_t>(), input.numel());
107+
decoder.get(),
108+
contig_input.const_data_ptr<uint8_t>(),
109+
contig_input.numel());
108110
STD_TORCH_CHECK(
109111
result == AVIF_RESULT_OK,
110112
"avifDecoderSetIOMemory failed: ",

src/torchcodec/_core/DecodeGif.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ torch::stable::Tensor decode_gif(
9494
//
9595
// LibGif API docs: https://giflib.sourceforge.net/intro.html
9696

97-
validate_encoded_data(input);
97+
auto contig_input = validate_encoded_data(input);
9898

9999
int error = D_GIF_SUCCEEDED;
100100

@@ -113,8 +113,8 @@ torch::stable::Tensor decode_gif(
113113
// If we do that, we'd have to make sure the buffers are never written to by
114114
// GIFLIB, otherwise we'd be overriding the tensor data.
115115
SourceCtx source_ctx{
116-
.ptr = input.const_data_ptr<uint8_t>(),
117-
.count = static_cast<size_t>(input.numel())};
116+
.ptr = contig_input.const_data_ptr<uint8_t>(),
117+
.count = static_cast<size_t>(contig_input.numel())};
118118
GifFileType* gif_file =
119119
DGifOpen(static_cast<void*>(&source_ctx), read_callback, &error);
120120

src/torchcodec/_core/DecodeHeic.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,15 @@ torch::stable::Tensor decode_heic(
7575
const torch::stable::Tensor& input,
7676
int64_t mode,
7777
int64_t output_dtype) {
78-
validate_encoded_data(input);
78+
auto contig_input = validate_encoded_data(input);
7979

8080
UniqueHeifContext ctx(heif_context_alloc());
8181
STD_TORCH_CHECK(ctx != nullptr, "Failed to allocate libheif context.");
8282

8383
heif_error err = heif_context_read_from_memory_without_copy(
8484
ctx.get(),
85-
input.const_data_ptr<uint8_t>(),
86-
static_cast<size_t>(input.numel()),
85+
contig_input.const_data_ptr<uint8_t>(),
86+
static_cast<size_t>(contig_input.numel()),
8787
/*options=*/nullptr);
8888
STD_TORCH_CHECK(
8989
err.code == heif_error_Ok,

0 commit comments

Comments
 (0)