Files
ports/multimedia/olive/files/patch-app_codec_oiio_oiiodecoder.cpp
T
2026-02-28 18:27:28 -08:00

24 lines
1.2 KiB
C++

--- app/codec/oiio/oiiodecoder.cpp.orig 2026-02-28 23:20:04 UTC
+++ app/codec/oiio/oiiodecoder.cpp
@@ -134,10 +134,20 @@ TexturePtr OIIODecoder::RetrieveVideoInternal(const Re
if (p.divider == 1) {
// Just upload straight to the buffer
+#if OIIO_VERSION >= OIIO_MAKE_VERSION(3, 0, 0)
+ // OpenImageIO 3.0+ requires subimage, miplevel, chbegin, chend parameters
+ image_->read_image(0, 0, 0, image_->spec().nchannels, oiio_pix_fmt_, buffer_.data(), OIIO::AutoStride, buffer_.linesize_bytes());
+#else
image_->read_image(oiio_pix_fmt_, buffer_.data(), OIIO::AutoStride, buffer_.linesize_bytes());
+#endif
} else {
OIIO::ImageBuf buf(image_->spec());
+#if OIIO_VERSION >= OIIO_MAKE_VERSION(3, 0, 0)
+ // OpenImageIO 3.0+ requires subimage, miplevel, chbegin, chend parameters
+ image_->read_image(0, 0, 0, image_->spec().nchannels, image_->spec().format, buf.localpixels(), buf.pixel_stride(), buf.scanline_stride(), buf.z_stride());
+#else
image_->read_image(image_->spec().format, buf.localpixels(), buf.pixel_stride(), buf.scanline_stride(), buf.z_stride());
+#endif
// Roughly downsample image for divider (for some reason OIIO::ImageBufAlgo::resample failed here)
int px_sz = vp.GetBytesPerPixel();