==>(B Building on monferno(B ==>(B Checking for remote environment...(B ==>(B Syncing package to remote host...(B sending incremental file list created directory packages/python-torchcodec ./ .SRCINFO 1,039 100% 0.00kB/s 0:00:00 1,039 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=7/9) .nvchecker.toml 140 100% 136.72kB/s 0:00:00 140 100% 136.72kB/s 0:00:00 (xfr#2, to-chk=6/9) LICENSE 646 100% 630.86kB/s 0:00:00 646 100% 630.86kB/s 0:00:00 (xfr#3, to-chk=5/9) PKGBUILD 1,770 100% 1.69MB/s 0:00:00 1,770 100% 1.69MB/s 0:00:00 (xfr#4, to-chk=4/9) REUSE.toml 375 100% 366.21kB/s 0:00:00 375 100% 366.21kB/s 0:00:00 (xfr#5, to-chk=3/9) python-torchcodec-0.16.0-1.log 863 100% 842.77kB/s 0:00:00 863 100% 842.77kB/s 0:00:00 (xfr#6, to-chk=2/9) LICENSES/ LICENSES/0BSD.txt -> ../LICENSE sent 3,066 bytes received 193 bytes 2,172.67 bytes/sec total size is 4,187 speedup is 1.28 ==>(B Applying RISC-V patches...(B sending incremental file list ./ riscv64.patch 816 100% 0.00kB/s 0:00:00 816 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/2) sent 686 bytes received 38 bytes 482.67 bytes/sec total size is 816 speedup is 1.13 patching file PKGBUILD ==>(B Patching arch to riscv64...(B ==>(B Running pkgctl build --arch riscv64 on remote host...(B ==> WARNING:(B invalid architecture: riscv64(B ==>(B Updating pacman database cache(B [?25l:: Synchronizing package databases... core downloading... extra downloading... multilib downloading... [?25h==>(B Building python-torchcodec(B  ->(B repo: extra(B  ->(B arch: riscv64(B  ->(B worker: felix-0(B ==>(B Building python-torchcodec for [extra] (riscv64)(B ]3008;start=2e31a2a19c314ada9195a955895f3a40;user=felix;hostname=monferno.felixc.at;machineid=d81047be213f47f4a04ac21a8f8e559b;bootid=e09be040f722427c8b59ed2fd3c4abfd;pid=139190;pidfdid=41997869;comm=sudo;targetuser=root;type=session\Note: in a future version of systemd-nspawn the default set of permitted socket address families will be restricted to AF_INET, AF_INET6 and AF_UNIX. Use --restrict-address-families= to configure the set of permitted socket address families, or set RestrictAddressFamilies= in a .nspawn file. ]3008;start=87af7223f1c84bfc9d793085bf9ea90f;user=root;hostname=monferno.felixc.at;machineid=d81047be213f47f4a04ac21a8f8e559b;bootid=e09be040f722427c8b59ed2fd3c4abfd;pid=139234;pidfdid=42111901;comm=systemd-nspawn;container=arch-nspawn-139234;type=container\]11;?\]2;🔵 Container arch-nspawn-139234 on monferno.felixc.at\[?25l:: Synchronizing package databases... core downloading... extra downloading... :: Starting full system upgrade... resolving dependencies... looking for conflicting packages... Package (1) Old Version New Version Net Change Download Size core/automake 1.18.1-1 1.19-1 0.02 MiB 0.63 MiB Total Download Size: 0.63 MiB Total Installed Size: 1.66 MiB Net Upgrade Size: 0.02 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... automake-1.19-1-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... upgrading automake... :: Running post-transaction hooks... (1/2) Arming ConditionNeedsUpdate... (2/2) Updating the info directory file... [?25h[!p]104\[?7h]3008;end=87af7223f1c84bfc9d793085bf9ea90f\==>(B Building in chroot for [extra] (riscv64)...(B ==>(B Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix-0]...(Bdone(B ]3008;start=a4970566baaa4dbb93ae1654021d4bee;user=root;hostname=monferno.felixc.at;machineid=d81047be213f47f4a04ac21a8f8e559b;bootid=e09be040f722427c8b59ed2fd3c4abfd;pid=139447;pidfdid=42068485;comm=sudo;targetuser=felix;type=session\==>(B Making package: python-torchcodec 0.16.0-1 (Sun Sep 27 12:57:28 2026)(B ==>(B Retrieving sources...(B  ->(B Downloading torchcodec-0.16.0.tar.gz...(B % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00:01 0 100 2.58M 0 2.58M 0 0 1.25M 0 00:02 2.58M 100 16.58M 0 16.58M 0 0 5.82M 0 00:02 2.58M 100 16.58M 0 16.58M 0 0 5.82M 0 00:02 2.58M 100 16.58M 0 16.58M 0 0 5.82M 0 00:02 2.58M  ->(B Downloading system-libavif.patch...(B % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 0 100 3464 100 3464 0 0 5487 0 0 100 3464 100 3464 0 0 5486 0 0 100 3464 100 3464 0 0 5486 0 0 ==>(B Validating source files with b2sums...(B torchcodec-0.16.0.tar.gz ... Passed system-libavif.patch ... Passed ]3008;end=a4970566baaa4dbb93ae1654021d4bee\Note: in a future version of systemd-nspawn the default set of permitted socket address families will be restricted to AF_INET, AF_INET6 and AF_UNIX. Use --restrict-address-families= to configure the set of permitted socket address families, or set RestrictAddressFamilies= in a .nspawn file. ]3008;start=b5273042fcaa43b1b7d1b442b07c88de;user=root;hostname=monferno.felixc.at;machineid=d81047be213f47f4a04ac21a8f8e559b;bootid=e09be040f722427c8b59ed2fd3c4abfd;pid=140940;pidfdid=42123767;comm=systemd-nspawn;container=makechrootpkg-python-torchcodec.build.139211;type=container\]11;?\]2;🔵 Container makechrootpkg-python-torchcodec.build.139211 on monferno.felixc.at\]3008;start=9c9ddc6d3ae941379a4a8971bba9f311;user=root;hostname=makechrootpkg-python-torchcodec.build.139211;machineid=890b8f41150d420f89723cd00a576889;bootid=b7ea06bf52e9443b9ca68f404203c055;pid=34;pidfdid=42059447;comm=sudo;targetuser=builduser;type=session\==>(B Making package: python-torchcodec 0.16.0-1 (Sun Sep 27 12:57:45 2026)(B ==>(B Checking runtime dependencies...(B ==>(B Installing missing dependencies...(B ]3008;start=8868c5d126f54879b2c8771cc9ad3292;user=builduser;hostname=makechrootpkg-python-torchcodec.build.139211;machineid=890b8f41150d420f89723cd00a576889;bootid=b7ea06bf52e9443b9ca68f404203c055;pid=3209;pidfdid=42128751;comm=sudo;targetuser=root;type=session\[?25lresolving dependencies... looking for conflicting packages... warning: insufficient columns available for table display Packages (140) abseil-cpp-20260817.0-2 aom-3.15.1-1 avahi-1:0.9rc5-1 blas-3.12.1-2 cblas-3.12.1-2 cmake-4.4.3-2 cppdap-1.58.0-3 cpuinfo-r843.ea6b9f1-1 dav1d-1.5.4-1 default-cursors-3-1 double-conversion-3.4.0-1 duktape-2.7.0-7 eigen-5.0.1-2 fontconfig-2:2.18.3-2 freetype2-2.14.3-1 fribidi-1.0.17-1 gflags-2.2.2-6 google-glog-0.7.1-2.1 graphite-1:1.3.15-1 gtest-1.18.0-1 harfbuzz-14.5.0-1 hicolor-icon-theme-0.18-1 hwloc-2.14.0-1 jbigkit-2.1-8 jsoncpp-1.9.8-1 l-smash-2.14.5-4 lapack-3.12.1-2 lcms2-2.19.1-1 libb2-0.98.1-3 libcups-2:2.4.19-1 libdaemon-0.14-6 libde265-1.1.3-1 libdeflate-1.26-1 libdrm-2.4.134-1 libedit-20260512_3.1-1 libevdev-1.13.7-1 libfabric-2.7.0-1 libglvnd-1.7.0-3 libgudev-238-3 libice-1.1.2-1 libimagequant-4.4.1-2 libinput-1.32.0-1 libpciaccess-0.19-1 libproxy-0.5.12-1 libraqm-0.11.0-1 libsm-1.2.6-1 libtiff-4.7.2-1 liburing-2.15-1 libuv-1.52.1-2 libwacom-2.20.0-1 libx11-1.8.13-1 libxau-1.0.12-1 libxcb-1.17.0-1 libxdmcp-1.1.5-2 libxext-1.3.7-1 libxkbcommon-1.13.2-1 libxkbcommon-x11-1.13.2-1 libxshmfence-1.3.3-1 libxxf86vm-1.1.7-1 libyaml-0.2.5-3 libyuv-r2921+644251f25-1 llvm-libs-22.1.8-2 lm_sensors-1:3.6.2-1 lua54-5.4.9-1 md4c-0.5.3-1 mesa-1:26.2.3-1 mtdev-1.1.7-1 ninja-1.13.2-3 numactl-2.0.19-1.1 openh264-2.6.0-2 openjpeg2-2.5.4-1 openmp-22.1.8-1 openmpi-5.0.11-1 openpmix-5.0.11-1 openucx-1.20.1-3 protobuf-36.1-1 prrte-3.0.14-1 pybind11-3.1.0-1 python-certifi-2026.07.22-1 python-charset-normalizer-3.5.1-1 python-contourpy-1.4.0-1 python-cycler-0.12.1-4 python-dateutil-2.9.0-8.1 python-filelock-3.31.2-1 python-fonttools-4.66.0-1 python-fsspec-2026.9.0-1 python-gmpy2-2.3.1-1 python-idna-3.20-1 python-jinja-1:3.1.6-3.1 python-kiwisolver-1.5.1-1 python-markupsafe-3.0.3-1 python-matplotlib-3.11.2-1 python-mpmath-1.4.1-1 python-networkx-3.6.1-1 python-numpy-2.5.3-1 python-packaging-26.3-1 python-pandas-2.3.3-7 python-pathspec-1.1.1-1 python-pillow-12.3.0-1 python-platformdirs-4.11.14-1 python-pooch-1.9.0-1 python-pyparsing-3.3.3-1 python-pytz-2026.1-1 python-requests-2.34.2-1 python-scikit-build-core-1.0.3-1 python-scipy-1.18.1-1 python-six-1.17.0-3 python-sympy-1.14.0-6 python-typing_extensions-4.16.0-1 python-urllib3-2.6.3-1 python-yaml-6.0.3-2 qhull-2020.2-6 qt6-base-6.11.2-3 qt6-translations-6.11.2-1 rav1e-0.8.1-3 rhash-1.4.6-1 shared-mime-info-2.5.1-2 spirv-tools-1:1.4.357.0-1 svt-av1-4.2.0-1 tslib-1.24-1 vulkan-icd-loader-1.4.357.0-1 wayland-1.26.0-1 x264-3:0.165.r3222.b35605a-2 x265-4.3-1 xcb-proto-1.17.0-4 xcb-util-0.4.1-2 xcb-util-cursor-0.1.6-1 xcb-util-image-0.4.1-3 xcb-util-keysyms-0.4.1-5 xcb-util-renderutil-0.3.10-2 xcb-util-wm-0.4.2-2 xdg-utils-1.2.1-2 xkeyboard-config-2.48-1 xorgproto-2025.1-1 libavif-1.4.2-1 libheif-1.23.5-1 libjpeg-turbo-3.2.0-2 libpng-1.6.58-2 libwebp-1.6.0-2 python-pytorch-2.14.0-1 Total Download Size: 78.14 MiB Total Installed Size: 1450.54 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-pytorch-2.14.0-1-riscv64 downloading... openmpi-5.0.11-1-riscv64 downloading... python-fonttools-4.66.0-1-riscv64 downloading... openucx-1.20.1-3-riscv64 downloading... qhull-2020.2-6-riscv64 downloading... libfabric-2.7.0-1-riscv64 downloading... python-fsspec-2026.9.0-1-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing aom... installing dav1d... Optional dependencies for dav1d dav1d-doc: HTML documentation installing libjpeg-turbo... installing libpng... installing libwebp... Optional dependencies for libwebp libwebp-utils: WebP conversion and inspection tools installing libyuv... installing rav1e... installing svt-av1... installing libavif... installing libde265... Optional dependencies for libde265 sdl2-compat: for the decoder tool installing openh264... installing l-smash... installing x264... installing x265... installing libheif... Optional dependencies for libheif libjpeg-turbo: for heif-dec and heif-enc [installed] libpng: for heif-dec and heif-enc [installed] libtiff: for heif-dec and heif-enc [pending] dav1d: dav1d encoder [installed] ffmpeg: hardware decode openjpeg2: JPEG2000 decoder [pending] rav1e: rav1e encoder [installed] svt-av1: svt-av1 encoder [installed] installing gtest... Optional dependencies for gtest python: gmock generator [installed] installing abseil-cpp... installing cpuinfo... installing eigen... installing gflags... installing google-glog... installing libuv... installing numactl... installing libedit... installing llvm-libs... installing openmp... Optional dependencies for openmp cuda: offloading to NVIDIA GPUs hsa-rocr: offloading to AMD GPUs installing libpciaccess... installing hwloc... Optional dependencies for hwloc cairo: PDF, Postscript, and PNG export support libxml2: full XML import/export support [installed] installing libfabric... installing openpmix... Optional dependencies for openpmix openpmix-docs: for documentation installing openucx... Optional dependencies for openucx rdma-core: for InfiniBand and RDMA support rocm-language-runtime: for ROCm support installing prrte... Optional dependencies for prrte openssh: for execution on remote hosts via plm_ssh_agent prrte-docs: for documentation installing openmpi... Optional dependencies for openmpi hip-runtime-amd: ROCm support gcc-fortran: fortran support openssh: for execution on remote hosts via plm_ssh_agent openucc: for UCC accelerated collectives installing protobuf... installing pybind11... Optional dependencies for pybind11 python-setuptools: for setup_helpers installing python-filelock... installing python-fsspec... Optional dependencies for python-fsspec python-aiohttp: HTTP support python-distributed: Dask support python-libarchive-c: archives support python-lz4: LZ4 compression support python-paramiko: SFTP support python-pyarrow: Arrow/Parquet support python-pygit2: git support python-requests: web protocols support [pending] python-smbprotocol: SMB support python-snappy: snappy compression support python-tqdm: progress bar support installing python-markupsafe... installing python-jinja... Optional dependencies for python-jinja python-babel: for i18n support installing blas... installing cblas... installing lapack... installing python-numpy... Optional dependencies for python-numpy blas-openblas: faster linear algebra installing python-platformdirs... installing python-packaging... installing python-charset-normalizer... installing python-idna... installing python-urllib3... Optional dependencies for python-urllib3 python-brotli: Brotli support python-brotlicffi: Brotli support python-h2: HTTP/2 support python-pysocks: SOCKS support installing python-certifi... installing python-requests... Optional dependencies for python-requests python-chardet: alternative character encoding library python-pysocks: SOCKS proxy support installing python-pooch... Optional dependencies for python-pooch python-paramiko: for SFTP downloads python-tqdm: for printing a download progress bar installing python-scipy... Optional dependencies for python-scipy python-pillow: for image saving module [pending] installing freetype2... Optional dependencies for freetype2 harfbuzz: Improved autohinting [pending] installing python-contourpy... Optional dependencies for python-contourpy python-matplotlib: matplotlib renderer [pending] installing python-cycler... installing python-six... installing python-dateutil... installing python-fonttools... Optional dependencies for python-fonttools python-brotli: to compress/decompress WOFF 2.0 web fonts python-fs: to read/write UFO source files python-lxml: faster backend for XML files reading/writing python-lz4: for graphite type tables in ttLib/tables python-matplotlib: for visualizing DesignSpaceDocument and resulting VariationModel [pending] python-pyqt5: for drawing glyphs with Qt’s QPainterPath python-reportlab: to drawing glyphs as PNG images python-scipy: for finding wrong contour/component order between different masters [installed] python-sympy: for symbolic font statistics analysis [pending] python-uharfbuzz: to use the Harfbuzz Repacker for packing GSUB/GPOS tables python-unicodedata2: for displaying the Unicode character names when dumping the cmap table with ttx python-zopfli: faster backend fom WOFF 1.0 web fonts compression installing python-kiwisolver... installing jbigkit... installing libdeflate... installing libtiff... Optional dependencies for libtiff freeglut: for using tiffgt installing lcms2... installing fribidi... installing graphite... Optional dependencies for graphite graphite-docs: Documentation installing harfbuzz... Optional dependencies for harfbuzz harfbuzz-utils: utilities installing libraqm... installing openjpeg2... installing libimagequant... installing xcb-proto... installing xorgproto... installing libxdmcp... installing libxau... installing libxcb... installing python-pillow... Optional dependencies for python-pillow libwebp: for webp images [installed] tk: for the ImageTK module python-olefile: OLE2 file support python-pyqt6: for the ImageQt module python-defusedxml: for reading XMP tags installing python-pyparsing... Optional dependencies for python-pyparsing python-railroad-diagrams: for generating Railroad Diagrams python-jinja: for generating Railroad Diagrams [installed] installing qhull... installing python-matplotlib... Optional dependencies for python-matplotlib tk: Tk{Agg,Cairo} backends pyside6: alternative for Qt6{Agg,Cairo} backends python-pyqt6: Qt6{Agg,Cairo} backends python-gobject: for GTK{3,4}{Agg,Cairo} backend python-wxpython: WX{Agg,Cairo} backend python-cairo: {GTK{3,4},Qt{5,6},Tk,WX}Cairo backends python-cairocffi: alternative for Cairo backends python-tornado: WebAgg backend ffmpeg: for saving movies imagemagick: for saving animated gifs ghostscript: usetex dependencies texlive-binextra: usetex dependencies texlive-fontsrecommended: usetex dependencies texlive-latexrecommended: usetex usage with pdflatex python-certifi: https support [installed] installing python-pytz... installing python-pandas... Optional dependencies for python-pandas python-pandas-datareader: pandas.io.data replacement (recommended) python-numexpr: accelerating certain numerical operations (recommended) python-bottleneck: accelerating certain types of nan evaluations (recommended) python-matplotlib: plotting [installed] python-jinja: conditional formatting with DataFrame.style [installed] python-tabulate: printing in Markdown-friendly format python-scipy: miscellaneous statistical functions [installed] python-numba: alternative execution engine python-xarray: pandas-like API for N-dimensional data python-xlrd: Excel XLS input python-xlwt: Excel XLS output python-openpyxl: Excel XLSX input/output python-xlsxwriter: alternative Excel XLSX output python-beautifulsoup4: read_html function (in any case) python-html5lib: read_html function (and/or python-lxml) python-lxml: read_xml, to_xml and read_html function (and/or python-html5lib) python-sqlalchemy: SQL database support python-psycopg2: PostgreSQL engine for sqlalchemy python-pymysql: MySQL engine for sqlalchemy python-pytables: HDF5-based reading / writing python-blosc: for msgpack compression using blosc zlib: compression for msgpack [installed] python-pyarrow: Parquet, ORC and feather reading/writing python-fsspec: handling files aside from local and HTTP [installed] python-qtpy: read_clipboard function (only one needed) xclip: read_clipboard function (only one needed) xsel: read_clipboard function (only one needed) python-brotli: Brotli compression python-snappy: Snappy compression python-zstandard: Zstandard (zstd) compression installing python-networkx... Optional dependencies for python-networkx python-lxml: for GraphML XML format python-pydot: for graph drawing and graph layout algorithms in pure Python via GraphViz python-pygraphviz: for graph drawing and graph layout algorithms with bindings to GraphViz python-sympy: for polynomial algorithms [pending] installing cppdap... installing hicolor-icon-theme... installing jsoncpp... Optional dependencies for jsoncpp jsoncpp-doc: documentation installing rhash... installing cmake... Optional dependencies for cmake make: for unix Makefile generator [installed] ninja: for ninja generator [pending] qt6-base: cmake-gui [pending] installing ninja... installing python-pathspec... Optional dependencies for python-pathspec python-google-re2: re2 backend installing python-scikit-build-core... installing python-gmpy2... installing python-mpmath... installing python-sympy... Optional dependencies for python-sympy ipython: user friendly interface for isympy python-symengine: optimized backend, set USE_SYMENGINE=1 to use installing python-typing_extensions... installing libyaml... installing python-yaml... installing double-conversion... installing fontconfig... Creating fontconfig configuration... Rebuilding fontconfig cache... installing libb2... installing libdaemon... installing avahi... Optional dependencies for avahi gtk3: avahi-discover, avahi-discover-standalone, bshell, bssh, bvnc libevent: libevent bindings [installed] nss-mdns: NSS support for mDNS python-dbus: avahi-bookmarks, avahi-discover python-gobject: avahi-bookmarks, avahi-discover python-twisted: avahi-bookmarks installing libcups... installing libdrm... Optional dependencies for libdrm cairo: needed for modetest tool installing libx11... installing libxext... installing libxshmfence... installing libxxf86vm... installing lm_sensors... Optional dependencies for lm_sensors rrdtool: for logging with sensord perl: for sensor detection and configuration convert [installed] installing spirv-tools... installing default-cursors... Optional dependencies for default-cursors adwaita-cursors: default cursor theme installing wayland... installing mesa... Optional dependencies for mesa opengl-man-pages: for the OpenGL API man pages installing libglvnd... installing libice... installing libevdev... installing libgudev... installing libwacom... Optional dependencies for libwacom python-libevdev: for libwacom-show-stylus python-pyudev: for libwacom-show-stylus installing lua54... installing mtdev... installing libinput... Optional dependencies for libinput libinput-tools: debug utilities installing duktape... installing libproxy... installing libsm... installing liburing... installing xkeyboard-config... installing libxkbcommon... Optional dependencies for libxkbcommon libxkbcommon-x11: xkbcli interactive-x11 [pending] wayland: xkbcli interactive-wayland [installed] installing libxkbcommon-x11... installing md4c... installing shared-mime-info... installing tslib... installing xcb-util-renderutil... installing xcb-util... installing xcb-util-image... installing xcb-util-cursor... installing xcb-util-keysyms... installing xcb-util-wm... installing xdg-utils... Optional dependencies for xdg-utils kde-cli-tools: for KDE Plasma5 support in xdg-open exo: for Xfce support in xdg-open pcmanfm: for LXDE support in xdg-open perl-file-mimeinfo: for generic support in xdg-open perl-net-dbus: Perl extension to dbus used in xdg-screensaver perl-x11-protocol: Perl X11 protocol used in xdg-screensaver xorg-xset: for X11 support in xdg-screensaver xorg-xprop: for X11 support in xdg-screensaver installing qt6-translations... installing qt6-base... Optional dependencies for qt6-base freetds: MS SQL driver gdk-pixbuf2: GTK platform plugin gtk3: GTK platform plugin libfbclient: Firebird/iBase driver mariadb-libs: MariaDB driver pango: GTK platform plugin perl: for syncqt [installed] postgresql-libs: PostgreSQL driver unixodbc: ODBC driver installing vulkan-icd-loader... Optional dependencies for vulkan-icd-loader vulkan-driver: packaged vulkan driver installing python-pytorch... Optional dependencies for python-pytorch python-onnxscript: for the ONNX exporter :: Running post-transaction hooks... (1/9) Creating system user accounts... Creating group 'avahi' with GID 968. Creating user 'avahi' (Avahi mDNS/DNS-SD daemon) with UID 968 and GID 968. (2/9) Updating udev hardware database... (3/9) Reloading system manager configuration... Skipped: Current root is not booted. (4/9) Updating the MIME type database... (5/9) Reloading device manager configuration... Skipped: Current root is not booted. (6/9) Arming ConditionNeedsUpdate... (7/9) Updating fontconfig configuration... (8/9) Reloading system bus configuration... Skipped: Current root is not booted. (9/9) Updating fontconfig cache... [?25h]3008;end=8868c5d126f54879b2c8771cc9ad3292\==>(B Checking buildtime dependencies...(B ==>(B Installing missing dependencies...(B ]3008;start=b459155f32a349dbaf83178dcb7ed05a;user=builduser;hostname=makechrootpkg-python-torchcodec.build.139211;machineid=890b8f41150d420f89723cd00a576889;bootid=b7ea06bf52e9443b9ca68f404203c055;pid=4840;pidfdid=42132511;comm=sudo;targetuser=root;type=session\[?25lresolving dependencies... :: There are 2 providers available for jack: :: Repository extra 1) jack2 2) pipewire-jack Enter a number (default=1): looking for conflicting packages... Package (92) New Version Net Change Download Size extra/alsa-lib 1.2.16.1-1 1.78 MiB extra/alsa-topology-conf 1.2.5.1-4 0.33 MiB extra/alsa-ucm-conf 1.2.16.1-1 0.68 MiB extra/bubblewrap 0.13.0-1 0.09 MiB extra/cairo 1.18.6-1 1.59 MiB extra/fftw 3.3.11-1.1 4.24 MiB extra/flac 1.5.0-1 1.06 MiB extra/gdk-pixbuf2 2.44.7-1 2.98 MiB extra/giflib 6.1.3-2 0.30 MiB extra/glslang 1:1.4.357.0-1 97.54 MiB extra/glycin 2.1.5-2 20.41 MiB extra/gperftools 2.18.1-1 1.99 MiB extra/gsm 1.0.24-1 0.09 MiB extra/hidapi 0.15.0-1 0.13 MiB extra/highway 1.4.0-1 4.57 MiB extra/jack2 1.9.22-2 1.82 MiB extra/lame 4.0-1 1.04 MiB extra/libass 0.17.5-1 0.23 MiB extra/libasyncns 1:0.8+r3+g68cd5af-3 0.04 MiB extra/libavc1394 0.5.4-7 0.11 MiB extra/libbluray 1.5.1-1 1.24 MiB core/libbpf 1.7.0-1 0.81 MiB extra/libbs2b 3.1.0-10 0.06 MiB extra/libbsd 0.12.2-2 0.32 MiB extra/libdatrie 0.2.14-1 0.48 MiB extra/libdovi 3.4.0-1 0.61 MiB extra/libdvdnav 7.0.0-1 0.15 MiB extra/libdvdread 7.1.1-1 0.43 MiB extra/libiec61883 1.2.0-9 0.11 MiB extra/libjxl 0.12.0-1 9.72 MiB extra/libmd 1.2.0-1 0.12 MiB extra/libmodplug 0.8.9.0-7 0.38 MiB extra/libogg 1.3.6-1 0.43 MiB extra/libopenmpt 0.8.9-1 2.19 MiB extra/libpgm 5.3.128-4 0.33 MiB extra/libplacebo 7.360.1-6 1.55 MiB extra/libpulse 17.0+r98+gb096704c0-1 1.42 MiB extra/libraw1394 2.1.2-4 0.15 MiB extra/librsvg 2:2.62.3-1 10.04 MiB extra/libsamplerate 0.2.2-3 1.55 MiB extra/libsndfile 1.2.2-4 0.85 MiB extra/libsodium 1.0.22-1 0.56 MiB extra/libsoxr 0.1.3-5 0.14 MiB extra/libssh 0.12.2-1 0.71 MiB extra/libthai 0.1.30-1 1.24 MiB extra/libtheora 1.2.0-1 2.29 MiB extra/libunibreak 7.0-1 0.15 MiB extra/libunwind 1.8.3-1 0.26 MiB extra/libva 2.24.1-1 0.96 MiB extra/libvdpau 1.5-4 0.27 MiB extra/libvorbis 1.3.7-4 0.84 MiB extra/libvpl 2.17.0-1 0.92 MiB extra/libvpx 1.17.0-1 2.49 MiB extra/libxcursor 1.2.3-1 0.06 MiB extra/libxfixes 6.0.2-1 0.03 MiB extra/libxft 2.3.9-1 0.12 MiB extra/libxrender 0.9.12-1 0.09 MiB extra/libxv 1.0.13-1 0.05 MiB core/lzo 2.10-5 0.34 MiB extra/mpg123 1.33.7-1 1.06 MiB extra/ocl-icd 2.3.5-1 0.52 MiB extra/opencore-amr 0.1.6-2 0.25 MiB extra/opus 1.6.1-1 4.03 MiB extra/pango 1:1.58.2-1 2.37 MiB extra/pixman 0.46.4-1 0.48 MiB extra/portaudio 1:19.7.0-4 0.31 MiB extra/python-iniconfig 2.3.0-1 0.07 MiB extra/python-pluggy 1.6.0-3.1 0.23 MiB extra/python-pygments 2.21.0-1 15.59 MiB extra/python-pyproject-hooks 1.3.3-1 0.11 MiB extra/rubberband 4.0.0-2 1.29 MiB extra/sdl2-compat 2.32.72-1 3.70 MiB extra/sdl3 3.4.16-1 7.52 MiB extra/shaderc 2026.3-1 4.17 MiB extra/snappy 1.2.2-3 0.09 MiB extra/sndio 1.10.0-1 0.26 MiB extra/speex 1.2.1-2 0.60 MiB extra/speexdsp 1.2.1-2 0.52 MiB extra/srt 1.5.7-1 1.38 MiB extra/v4l-utils 1.32.0-2 11.29 MiB extra/vapoursynth 79-1 2.10 MiB extra/vid.stab 1.1.2-1 0.51 MiB extra/vmaf 3.2.1-1 6.78 MiB extra/xvidcore 1.3.7-4 0.43 MiB extra/zeromq 4.3.5-3 2.98 MiB extra/zimg 3.0.6-2 0.34 MiB extra/ffmpeg 2:9.0.2-1 39.45 MiB extra/fmt 12.2.0-1 0.71 MiB extra/python-build 1.6.0-1 0.33 MiB extra/python-installer 1.0.1-1 0.21 MiB extra/python-pytest 1:9.1.1-1 4.95 MiB extra/python-torchvision 0.29.0-1 8.84 MiB 1.18 MiB Total Download Size: 1.18 MiB Total Installed Size: 308.95 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-torchvision-0.29.0-1-riscv64 downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing alsa-topology-conf... installing alsa-ucm-conf... installing alsa-lib... installing libxrender... installing lzo... installing pixman... installing cairo... installing gsm... installing libsamplerate... installing opus... installing jack2... Optional dependencies for jack2 a2jmidid: for ALSA MIDI to JACK MIDI bridging libffado: for firewire support using FFADO jack-example-tools: for official JACK example-clients and tools jack2-dbus: for dbus integration jack2-docs: for developer documentation realtime-privileges: for realtime privileges installing mpg123... Optional dependencies for mpg123 sdl2-compat: for sdl audio support [pending] jack: for jack audio support [installed] libpulse: for pulse audio support [pending] perl: for conplay [installed] installing lame... installing libunibreak... installing libass... installing libraw1394... installing libavc1394... installing libbluray... Optional dependencies for libbluray java-runtime: BD-J library installing libogg... installing flac... installing libvorbis... installing libsndfile... Optional dependencies for libsndfile alsa-lib: for sndfile-play [installed] installing libbs2b... installing libdvdread... Optional dependencies for libdvdread libdvdcss: Decoding encrypted DVDs installing libdvdnav... installing libiec61883... installing giflib... installing libunwind... installing gperftools... installing highway... installing libjxl... Optional dependencies for libjxl java-runtime: for JNI bindings installing libmodplug... installing libasyncns... installing libpulse... Optional dependencies for libpulse pulse-native-provider: PulseAudio backend installing portaudio... installing libopenmpt... installing glslang... installing shaderc... installing libdovi... installing libplacebo... installing bubblewrap... installing glycin... Optional dependencies for glycin libheif: Load .avif, .heic and .heif [installed] installing gdk-pixbuf2... Optional dependencies for gdk-pixbuf2 libheif: Load .avif, .heic and .heif [installed] libopenraw: Load .arw, .cr2, .crw, .dng, .erf, .mrw, .nef, .orf, .pef and .raf libwmf: Load .apm and .wmf installing libdatrie... installing libthai... installing libxft... installing pango... installing librsvg... installing libsoxr... installing libssh... installing libtheora... installing libxfixes... installing libva... Optional dependencies for libva intel-media-driver: backend for Intel GPUs (>= Broadwell) libva-intel-driver: backend for Intel GPUs (<= Haswell) libva-mesa-driver: backend for AMD and NVIDIA GPUs [installed] installing libvdpau... Optional dependencies for libvdpau libvdpau-va-gl: driver using VAAPI nvidia-utils: driver for NVIDIA installing libvpx... installing libxv... installing ocl-icd... Optional dependencies for ocl-icd opencl-driver: packaged opencl driver installing libvpl... Optional dependencies for libvpl intel-media-sdk: runtime implementation for legacy Intel GPUs vpl-gpu-rt: runtime implementation for Tiger Lake and newer GPUs installing opencore-amr... installing fftw... Optional dependencies for fftw fftw-openmpi: for OpenMPI integration installing rubberband... installing libxcursor... installing hidapi... Optional dependencies for hidapi libusb: for hidapi-libusb [installed] installing sdl3... Optional dependencies for sdl3 alsa-lib: ALSA audio driver [installed] libpulse: PulseAudio audio driver [installed] jack: JACK audio driver [installed] pipewire: PipeWire audio driver vulkan-driver: vulkan renderer sndio: sndio audio driver [pending] libdecor: Wayland client decorations installing sdl2-compat... installing snappy... installing libmd... installing libbsd... installing sndio... installing speexdsp... installing speex... installing srt... installing libbpf... installing v4l-utils... Optional dependencies for v4l-utils qt6-base: for qv4l2 and qvidcap [installed] qt6-5compat: for qv4l2 alsa-lib: for qv4l2 [installed] installing zimg... installing vapoursynth... installing vid.stab... installing vmaf... installing xvidcore... installing libsodium... installing libpgm... installing zeromq... Optional dependencies for zeromq cppzmq: C++ binding for libzmq installing ffmpeg... Optional dependencies for ffmpeg avisynthplus: AviSynthPlus support frei0r-plugins: Frei0r video effects support ladspa: LADSPA filters onevpl-intel-gpu: Intel QuickSync support installing fmt... installing python-pyproject-hooks... installing python-build... Optional dependencies for python-build python-pip: to use as the Python package installer (default) python-uv: to use as the Python package installer python-virtualenv: to use virtualenv for build isolation installing python-installer... installing python-iniconfig... installing python-pluggy... installing python-pygments... installing python-pytest... installing python-torchvision... Optional dependencies for python-torchvision python-pycocotools: support for MS-COCO dataset python-scipy: for specific datasets [installed] :: Running post-transaction hooks... (1/6) Reloading system manager configuration... Skipped: Current root is not booted. (2/6) Reloading user manager configuration... Skipped: Current root is not booted. (3/6) Updating the MIME type database... (4/6) Reloading device manager configuration... Skipped: Current root is not booted. (5/6) Arming ConditionNeedsUpdate... (6/6) Updating the info directory file... [?25h]3008;end=b459155f32a349dbaf83178dcb7ed05a\==>(B Retrieving sources...(B  ->(B Found torchcodec-0.16.0.tar.gz(B  ->(B Found system-libavif.patch(B ==> WARNING:(B Skipping all source file integrity checks.(B ==>(B Extracting sources...(B  ->(B Extracting torchcodec-0.16.0.tar.gz with bsdtar(B ==>(B Starting prepare()...(B patching file pyproject.toml patching file src/torchcodec/_core/CMakeLists.txt ==>(B Starting build()...(B * Getting build dependencies for wheel... * Building wheel... INFO: Didn't find sha. Is this a git repo? *** scikit-build-core 1.0.3 using CMake 4.4.3 (wheel) *** Configuring CMake... loading initial cache file build/cp314-cp314-linux_riscv64/CMakeInit.txt -- The C compiler identification is GNU 16.2.1 -- The CXX compiler identification is GNU 16.2.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Performing Test HAS_FLTO_AUTO -- Performing Test HAS_FLTO_AUTO - Success -- Found pybind11: /usr/lib/python3.14/site-packages/pybind11/include (found version "3.1.0") -- Caffe2: Found gflags with new-style gflags target. -- Caffe2: Found glog with new-style glog target. -- Found ZLIB: /usr/lib/libz.so (found version "1.3.2") -- Caffe2: Found protobuf with new-style protobuf targets. -- Caffe2: Protobuf version 36.1.0 CMake Warning at /usr/lib/cmake/Torch/TorchConfig.cmake:22 (message): library kineto not found. Call Stack (most recent call first): /usr/lib/cmake/Torch/TorchConfig.cmake:119 (append_torchlib_if_found) src/torchcodec/_core/CMakeLists.txt:21 (find_package) -- Found Torch: /usr/lib/libtorch.so -- Found Python3: /usr/bin/python (found version "3.14.7") found components: Development Interpreter Development.Module Development.Embed -- Found JPEG: /usr/lib/libjpeg.so (found version "80") -- libjpeg found: building torchcodec with JPEG image decoding support. -- Found PNG: /usr/lib/libpng.so (found version "1.6.58") -- libpng found: building torchcodec with PNG image decoding support. -- Found Threads: TRUE -- libwebp found: building torchcodec with WebP image decoding support. -- libavif found: building torchcodec with AVIF image decoding support (system libavif). -- Building torchcodec with GIF image decoding support (vendored giflib). -- libheif found: building torchcodec with HEIC image decoding support. -- Building and dynamically linking libtorchcodec against the installed FFmpeg libraries. This require pkg-config to be installed. If you have installed FFmpeg from conda, make sure pkg-config is installed from conda as well. -- Found PkgConfig: /usr/bin/pkg-config (found version "3.0.7") -- Checking for modules 'libavdevice;libavfilter;libavformat;libavcodec;libavutil;libswresample;libswscale' -- Found libavdevice, version 63.1.102 -- Found libavfilter, version 12.1.102 -- Found libavformat, version 63.1.102 -- Found libavcodec, version 63.1.102 -- Found libavutil, version 61.1.102 -- Found libswresample, version 7.1.102 -- Found libswscale, version 10.1.102 Adding torchcodec::ffmpeg9 target -- Configuring done (49.8s) -- Generating done (0.4s) -- Build files have been written to: /build/python-torchcodec/src/torchcodec-0.16.0/build/cp314-cp314-linux_riscv64 *** Building project with Ninja... [1/46] Building C object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/giflib/gif_hash.c.o [2/46] Building C object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/giflib/gifalloc.c.o [3/46] Building C object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/giflib/dgif_lib.c.o [4/46] Building C object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/giflib/openbsd-reallocarray.c.o [5/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/Logging.cpp.o [6/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/ValidationUtils.cpp.o [7/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/AVIOContextHolder.cpp.o [8/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/Demuxer.cpp.o [9/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/DecodeJpegCuda.cpp.o [10/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/NVDECCacheConfig.cpp.o [11/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/Metadata.cpp.o [12/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/EncodeJpegCuda.cpp.o [13/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/Frame.cpp.o [14/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/SwScale.cpp.o [15/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/EncodePng.cpp.o [16/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/FileIO.cpp.o [17/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/DecodeWebp.cpp.o [18/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/DecodeGif.cpp.o [19/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/EncodeJpeg.cpp.o [20/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/FilterGraph.cpp.o [21/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/DecodeAvif.cpp.o [22/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/ColorConverter.cpp.o [23/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/FFMPEGCommon.cpp.o [24/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/FileIO.cpp.o [25/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_pybind_ops.dir/FileIO.cpp.o [26/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/TensorIO.cpp.o [27/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/Transform.cpp.o [28/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/DecodeJpeg.cpp.o [29/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/DecodePng.cpp.o [30/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_image.dir/image_custom_ops.cpp.o [31/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/PacketDecoder.cpp.o [32/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/DeviceInterface.cpp.o [33/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/WavDecoder.cpp.o [34/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/CpuDeviceInterface.cpp.o [35/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/Encoder.cpp.o [36/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_heic.dir/DecodeHeic.cpp.o [37/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_heic.dir/heic_custom_ops.cpp.o [38/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_core9.dir/SingleStreamDecoder.cpp.o [39/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_pybind_ops.dir/FileLikeIO.cpp.o [40/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_pybind_ops.dir/pybind_ops.cpp.o [41/46] Linking CXX shared library src/torchcodec/_core/libtorchcodec_heic.so [42/46] Linking CXX shared library src/torchcodec/_core/libtorchcodec_image.so In member function ‘operator()’, inlined from ‘decode_gif’ at /usr/src/debug/python-torchcodec/torchcodec-0.16.0/src/torchcodec/_core/DecodeGif.cpp:313:19: /usr/src/debug/python-torchcodec/torchcodec-0.16.0/src/torchcodec/_core/DecodeGif.cpp:256:5: warning: ‘MEM[(struct GraphicsControlBlock *)&gcb].DisposalMode’ may be used uninitialized [-Wmaybe-uninitialized] /usr/src/debug/python-torchcodec/torchcodec-0.16.0/src/torchcodec/_core/DecodeGif.cpp: In function ‘decode_gif’: /usr/src/debug/python-torchcodec/torchcodec-0.16.0/src/torchcodec/_core/DecodeGif.cpp:310:26: note: ‘MEM[(struct GraphicsControlBlock *)&gcb].DisposalMode’ was declared here In member function ‘operator()’, inlined from ‘decode_gif’ at /usr/src/debug/python-torchcodec/torchcodec-0.16.0/src/torchcodec/_core/DecodeGif.cpp:314:27: /usr/src/debug/python-torchcodec/torchcodec-0.16.0/src/torchcodec/_core/DecodeGif.cpp:294:9: warning: ‘MEM[(struct GraphicsControlBlock *)&gcb].TransparentColor’ may be used uninitialized [-Wmaybe-uninitialized] /usr/src/debug/python-torchcodec/torchcodec-0.16.0/src/torchcodec/_core/DecodeGif.cpp: In function ‘decode_gif’: /usr/src/debug/python-torchcodec/torchcodec-0.16.0/src/torchcodec/_core/DecodeGif.cpp:310:26: note: ‘MEM[(struct GraphicsControlBlock *)&gcb].TransparentColor’ was declared here [43/46] Linking CXX shared library src/torchcodec/_core/libtorchcodec_core9.so [44/46] Building CXX object src/torchcodec/_core/CMakeFiles/libtorchcodec_custom_ops9.dir/custom_ops.cpp.o [45/46] Linking CXX shared module src/torchcodec/_core/libtorchcodec_pybind_ops.so [46/46] Linking CXX shared library src/torchcodec/_core/libtorchcodec_custom_ops9.so *** Installing project into wheel... -- Install configuration: "Release" -- Installing: /tmp/tmp8phjrkd6/wheel/platlib/torchcodec/libtorchcodec_image.so -- Installing: /tmp/tmp8phjrkd6/wheel/platlib/torchcodec/libtorchcodec_pybind_ops.so -- Installing: /tmp/tmp8phjrkd6/wheel/platlib/torchcodec/libtorchcodec_heic.so -- Installing: /tmp/tmp8phjrkd6/wheel/platlib/torchcodec/libtorchcodec_core9.so -- Installing: /tmp/tmp8phjrkd6/wheel/platlib/torchcodec/libtorchcodec_custom_ops9.so -- Set non-toolchain portion of runtime path of "/tmp/tmp8phjrkd6/wheel/platlib/torchcodec/libtorchcodec_custom_ops9.so" to "" *** Making wheel... *** Created torchcodec-0.16.0-cp314-cp314-linux_riscv64.whl Successfully built torchcodec-0.16.0-cp314-cp314-linux_riscv64.whl ==>(B Starting check()...(B ============================= test session starts ============================== platform linux -- Python 3.14.7, pytest-9.1.1, pluggy-1.6.0 -- /build/python-torchcodec/src/torchcodec-0.16.0/test-env/bin/python cachedir: .pytest_cache rootdir: /build/python-torchcodec/src/torchcodec-0.16.0 configfile: pyproject.toml collecting ... collected 2683 items / 1 deselected / 2682 selected test/plugin/test_plugins.py::test_plugin_autoload[True] PASSED [ 0%] test/plugin/test_plugins.py::test_plugin_autoload[False] PASSED [ 0%] test/smoke_test.py::TestVideoDecoder::test_basics[cpu] PASSED [ 0%] test/smoke_test.py::TestVideoDecoder::test_basics[cuda] SKIPPED (CUDA not available.) [ 0%] test/smoke_test.py::TestVideoDecoder::test_get_frame_at[cpu] PASSED [ 0%] test/smoke_test.py::TestVideoDecoder::test_get_frame_at[cuda] SKIPPED [ 0%] test/smoke_test.py::TestVideoDecoder::test_get_frames_in_range[cpu] PASSED [ 0%] test/smoke_test.py::TestVideoDecoder::test_get_frames_in_range[cuda] SKIPPED [ 0%] test/smoke_test.py::TestVideoDecoder::test_get_frame_played_at[cpu] PASSED [ 0%] test/smoke_test.py::TestVideoDecoder::test_get_frame_played_at[cuda] SKIPPED [ 0%] test/smoke_test.py::TestVideoDecoder::test_getitem[cpu] PASSED [ 0%] test/smoke_test.py::TestVideoDecoder::test_getitem[cuda] SKIPPED (CUDA not available.) [ 0%] test/smoke_test.py::TestVideoDecoder::test_get_all_frames[cpu] PASSED [ 0%] test/smoke_test.py::TestVideoDecoder::test_get_all_frames[cuda] SKIPPED [ 0%] test/smoke_test.py::TestVideoDecoder::test_iteration[cpu] PASSED [ 0%] test/smoke_test.py::TestVideoDecoder::test_iteration[cuda] SKIPPED (CUDA not available.) [ 0%] test/smoke_test.py::TestAudioDecoder::test_basics PASSED [ 0%] test/smoke_test.py::TestAudioDecoder::test_get_all_samples PASSED [ 0%] test/smoke_test.py::TestAudioDecoder::test_get_samples_played_in_range PASSED [ 0%] test/smoke_test.py::TestAudioDecoder::test_resample_on_decode PASSED [ 0%] test/smoke_test.py::TestImageDecoder::test_decode_jpeg PASSED [ 0%] test/smoke_test.py::TestImageDecoder::test_decode_jpeg_cuda SKIPPED [ 0%] test/smoke_test.py::TestImageDecoder::test_decode_png PASSED [ 0%] test/smoke_test.py::TestImageDecoder::test_decode_webp PASSED [ 0%] test/smoke_test.py::TestImageDecoder::test_decode_gif PASSED [ 0%] test/smoke_test.py::TestImageDecoder::test_decode_avif PASSED [ 0%] test/smoke_test.py::TestImageDecoder::test_decode_heic PASSED [ 1%] test/smoke_test.py::TestImageEncoder::test_encode_to_file[png] PASSED [ 1%] test/smoke_test.py::TestImageEncoder::test_encode_to_file[jpeg] PASSED [ 1%] test/smoke_test.py::TestImageEncoder::test_encode_to_file[jpeg_cuda] SKIPPED [ 1%] test/smoke_test.py::TestImageEncoder::test_encode_to_file_like[png] PASSED [ 1%] test/smoke_test.py::TestImageEncoder::test_encode_to_file_like[jpeg] PASSED [ 1%] test/smoke_test.py::TestImageEncoder::test_encode_to_file_like[jpeg_cuda] SKIPPED [ 1%] test/smoke_test.py::TestVideoEncoder::test_to_file PASSED [ 1%] test/smoke_test.py::TestVideoEncoder::test_to_tensor PASSED [ 1%] test/smoke_test.py::TestVideoEncoder::test_roundtrip_lossless PASSED [ 1%] test/smoke_test.py::TestAudioEncoder::test_to_file_wav PASSED [ 1%] test/smoke_test.py::TestAudioEncoder::test_to_tensor PASSED [ 1%] test/smoke_test.py::TestAudioEncoder::test_mono_1d_input PASSED [ 1%] test/smoke_test.py::TestAudioEncoder::test_resample_on_encode PASSED [ 1%] test/smoke_test.py::TestEncoder::test_video_and_audio_chunked PASSED [ 1%] test/smoke_test.py::TestEncoder::test_cuda_encoding SKIPPED (CUDA not available.) [ 1%] test/test_decoders.py::TestDecoder::test_create[str-VideoDecoder-asset0] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[str-AudioDecoder-asset1] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[str-AudioDecoder-asset2] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[path-VideoDecoder-asset0] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[path-AudioDecoder-asset1] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[path-AudioDecoder-asset2] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[file_like_rawio-VideoDecoder-asset0] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[file_like_rawio-AudioDecoder-asset1] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[file_like_rawio-AudioDecoder-asset2] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[file_like_bufferedio-VideoDecoder-asset0] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[file_like_bufferedio-AudioDecoder-asset1] PASSED [ 1%] test/test_decoders.py::TestDecoder::test_create[file_like_bufferedio-AudioDecoder-asset2] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[file_like_custom-VideoDecoder-asset0] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[file_like_custom-AudioDecoder-asset1] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[file_like_custom-AudioDecoder-asset2] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[bytes-VideoDecoder-asset0] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[bytes-AudioDecoder-asset1] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[bytes-AudioDecoder-asset2] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[tensor-VideoDecoder-asset0] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[tensor-AudioDecoder-asset1] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create[tensor-AudioDecoder-asset2] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create_fails[VideoDecoder] PASSED [ 2%] test/test_decoders.py::TestDecoder::test_create_fails[AudioDecoder] PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_metadata[exact] PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_metadata[approximate] PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_create_bytes_ownership PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_create_fails PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[exact-cpu-1] PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[exact-cpu-4] PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[exact-cuda-1] SKIPPED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[exact-cuda-4] SKIPPED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[exact-cuda:ffmpeg-1] SKIPPED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[exact-cuda:ffmpeg-4] SKIPPED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[approximate-cpu-1] PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[approximate-cpu-4] PASSED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[approximate-cuda-1] SKIPPED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[approximate-cuda-4] SKIPPED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[approximate-cuda:ffmpeg-1] SKIPPED [ 2%] test/test_decoders.py::TestVideoDecoder::test_getitem_int[approximate-cuda:ffmpeg-4] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_numpy_int PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_slice[exact-cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_slice[exact-cuda] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_slice[exact-cuda:ffmpeg] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_slice[approximate-cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_slice[approximate-cuda] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_slice[approximate-cuda:ffmpeg] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_device_instance PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_device_none_default_device[cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_device_none_default_device[cuda] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_fails[exact-cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_fails[exact-cuda] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_fails[exact-cuda:ffmpeg] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_fails[approximate-cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_fails[approximate-cuda] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_getitem_fails[approximate-cuda:ffmpeg] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_iteration[exact-cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_iteration[exact-cuda] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_iteration[exact-cuda:ffmpeg] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_iteration[approximate-cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_iteration[approximate-cuda] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_iteration[approximate-cuda:ffmpeg] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at[exact-cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at[exact-cuda] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at[exact-cuda:ffmpeg] SKIPPED [ 3%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at[approximate-cpu] PASSED [ 3%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at[approximate-cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at[approximate-cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_tuple_unpacking[cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_tuple_unpacking[cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_tuple_unpacking[cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_fails[exact-cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_fails[exact-cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_fails[exact-cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_fails[approximate-cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_fails[approximate-cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_fails[approximate-cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at[exact-cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at[exact-cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at[exact-cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at[approximate-cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at[approximate-cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at[approximate-cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_fails[exact-cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_fails[exact-cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_fails[exact-cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_fails[approximate-cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_fails[approximate-cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_fails[approximate-cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_av1[cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_av1[cuda] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_at_av1[cuda:ffmpeg] SKIPPED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at[exact-cpu] PASSED [ 4%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at[exact-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at[exact-cuda:ffmpeg] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at[approximate-cpu] PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at[approximate-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at[approximate-cuda:ffmpeg] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at_h265 PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_backward_seek_after_eof[exact-cpu] PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_backward_seek_after_eof[exact-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_backward_seek_after_eof[exact-cuda:ffmpeg] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_backward_seek_after_eof[approximate-cpu] PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_backward_seek_after_eof[approximate-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_backward_seek_after_eof[approximate-cuda:ffmpeg] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at_fails[exact-cpu] PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at_fails[exact-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at_fails[exact-cuda:ffmpeg] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at_fails[approximate-cpu] PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at_fails[approximate-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frame_played_at_fails[approximate-cuda:ffmpeg] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[list-exact-cpu] PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[list-exact-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[list-exact-cuda:ffmpeg] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[list-approximate-cpu] PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[list-approximate-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[list-approximate-cuda:ffmpeg] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[tensor-exact-cpu] PASSED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[tensor-exact-cuda] SKIPPED [ 5%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[tensor-exact-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[tensor-approximate-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[tensor-approximate-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at[tensor-approximate-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at_fails[exact-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at_fails[exact-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at_fails[exact-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at_fails[approximate-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at_fails[approximate-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_at_fails[approximate-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-0-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-0-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-0-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-3-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-3-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-3-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-None-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-None-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[exact-None-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-0-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-0-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-0-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-3-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-3-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-3-cuda:ffmpeg] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-None-cpu] PASSED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-None-cuda] SKIPPED [ 6%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range[approximate-None-cuda:ffmpeg] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range_slice_indices_syntax[exact-cpu] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range_slice_indices_syntax[exact-cuda] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range_slice_indices_syntax[exact-cuda:ffmpeg] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range_slice_indices_syntax[approximate-cpu] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range_slice_indices_syntax[approximate-cuda] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_get_frames_in_range_slice_indices_syntax[approximate-cuda:ffmpeg] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-0-NCHW] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-0-NHWC] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-1-NCHW] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-1-NHWC] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-2-NCHW] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-2-NHWC] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-3-NCHW] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-3-NHWC] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-4-NCHW] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-4-NHWC] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-5-NCHW] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-5-NHWC] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-6-NCHW] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cpu-6-NHWC] PASSED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-0-NCHW] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-0-NHWC] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-1-NCHW] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-1-NHWC] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-2-NCHW] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-2-NHWC] SKIPPED [ 7%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-3-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-3-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-4-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-4-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-5-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-5-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-6-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda-6-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-0-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-0-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-1-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-1-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-2-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-2-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-3-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-3-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-4-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-4-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-5-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-5-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-6-NCHW] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[exact-cuda:ffmpeg-6-NHWC] SKIPPED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-0-NCHW] PASSED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-0-NHWC] PASSED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-1-NCHW] PASSED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-1-NHWC] PASSED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-2-NCHW] PASSED [ 8%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-2-NHWC] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-3-NCHW] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-3-NHWC] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-4-NCHW] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-4-NHWC] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-5-NCHW] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-5-NHWC] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-6-NCHW] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cpu-6-NHWC] PASSED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-0-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-0-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-1-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-1-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-2-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-2-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-3-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-3-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-4-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-4-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-5-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-5-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-6-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda-6-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-0-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-0-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-1-NCHW] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-1-NHWC] SKIPPED [ 9%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-2-NCHW] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-2-NHWC] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-3-NCHW] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-3-NHWC] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-4-NCHW] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-4-NHWC] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-5-NCHW] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-5-NHWC] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-6-NCHW] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order[approximate-cuda:ffmpeg-6-NHWC] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_dimension_order_fails PASSED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cpu-0] PASSED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cpu-3] PASSED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cpu-None] PASSED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cuda-0] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cuda-3] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cuda-None] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cuda:ffmpeg-0] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cuda:ffmpeg-3] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[exact-cuda:ffmpeg-None] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cpu-0] PASSED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cpu-3] PASSED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cpu-None] PASSED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cuda-0] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cuda-3] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cuda-None] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cuda:ffmpeg-0] SKIPPED [ 10%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cuda:ffmpeg-3] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range[approximate-cuda:ffmpeg-None] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range_fails[exact-cpu] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range_fails[exact-cuda] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range_fails[exact-cuda:ffmpeg] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range_fails[approximate-cpu] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range_fails[approximate-cuda] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_by_pts_in_range_fails[approximate-cuda:ffmpeg] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps[exact-cpu] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps[exact-cuda] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps[exact-cuda:ffmpeg] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps[approximate-cpu] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps[approximate-cuda] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps[approximate-cuda:ffmpeg] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps_fails[exact-cpu] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps_fails[exact-cuda] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps_fails[exact-cuda:ffmpeg] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps_fails[approximate-cpu] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps_fails[approximate-cuda] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_with_fps_fails[approximate-cuda:ffmpeg] SKIPPED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[False-5.0] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[False-15.0] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[False-24.0] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[False-29.97] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[False-30.1] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[False-60.0] PASSED [ 11%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[True-5.0] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[True-15.0] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[True-24.0] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[True-29.97] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[True-30.1] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_frames_played_in_range_fps_matches_torchvision[True-60.0] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_all_frames[exact-cpu] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_all_frames[exact-cuda] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_all_frames[exact-cuda:ffmpeg] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_all_frames[approximate-cpu] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_all_frames[approximate-cuda] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_all_frames[approximate-cuda:ffmpeg] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_non_zero_start_pts[exact] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_non_zero_start_pts[approximate] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_key_frame_indices[cpu] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_key_frame_indices[cuda] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_get_key_frame_indices[cuda:ffmpeg] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_discard_first_keyframe[cpu] PASSED [ 12%] test/test_decoders.py::TestVideoDecoder::test_discard_first_keyframe[cuda] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_compile[cpu] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_compile[cuda] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_compile[cuda:ffmpeg] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_pts_to_dts_fallback[exact] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_pts_to_dts_fallback[approximate] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_full_and_studio_range_bt709_video[asset0] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_full_and_studio_range_bt709_video[asset1] SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_bt2020_10bit_video SKIPPED [ 12%] test/test_decoders.py::TestVideoDecoder::test_bt601_colorspace[asset0] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_bt601_colorspace[asset1] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype0-cuda-asset0] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype0-cuda-asset1] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype0-cuda-asset2] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype0-cuda:ffmpeg-asset0] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype0-cuda:ffmpeg-asset1] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype0-cuda:ffmpeg-asset2] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype1-cuda-asset0] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype1-cuda-asset1] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype1-cuda-asset2] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype1-cuda:ffmpeg-asset0] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype1-cuda:ffmpeg-asset1] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_444[output_dtype1-cuda:ffmpeg-asset2] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype0-asset0] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype0-asset1] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype0-asset2] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype0-asset3] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype0-asset4] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype0-asset5] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype1-asset0] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype1-asset1] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype1-asset2] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype1-asset3] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype1-asset4] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_odd_sized_videos_vp9[output_dtype1-asset5] SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_10bit_gpu_fallsback_to_cpu SKIPPED [ 13%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method0-0-cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method0-0-cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method0-0-cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method0-3-cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method0-3-cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method0-3-cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method1-0-cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method1-0-cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method1-0-cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method1-3-cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method1-3-cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_json_and_bytes[method1-3-cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[valid_content_approximate-cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[valid_content_approximate-cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[valid_content_approximate-cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{}-The input is empty or missing the required 'frames' key.-cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{}-The input is empty or missing the required 'frames' key.-cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{}-The input is empty or missing the required 'frames' key.-cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{"valid": "json"}-The input is empty or missing the required 'frames' key.-cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{"valid": "json"}-The input is empty or missing the required 'frames' key.-cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{"valid": "json"}-The input is empty or missing the required 'frames' key.-cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{"frames": [{"missing": "keys"}]}-keys are required in the frame metadata.-cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{"frames": [{"missing": "keys"}]}-keys are required in the frame metadata.-cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails[{"frames": [{"missing": "keys"}]}-keys are required in the frame metadata.-cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails_invalid_json[cpu] PASSED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails_invalid_json[cuda] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_custom_frame_mappings_init_fails_invalid_json[cuda:ffmpeg] SKIPPED [ 14%] test/test_decoders.py::TestVideoDecoder::test_get_frames_at_tensor_indices PASSED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-True-asset0] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-True-asset1] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-True-asset2] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-True-asset3] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-True-asset4] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-True-asset5] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-True-asset6] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-True-asset7] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-False-asset0] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-False-asset1] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-False-asset2] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-False-asset3] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-False-asset4] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-False-asset5] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-False-asset6] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[exact-False-asset7] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-True-asset0] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-True-asset1] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-True-asset2] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-True-asset3] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-True-asset4] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-True-asset5] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-True-asset6] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-True-asset7] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-False-asset0] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-False-asset1] SKIPPED [ 15%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-False-asset2] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-False-asset3] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-False-asset4] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-False-asset5] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-False-asset6] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_at[approximate-False-asset7] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-True-asset0] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-True-asset1] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-True-asset2] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-True-asset3] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-True-asset4] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-True-asset5] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-True-asset6] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-True-asset7] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-False-asset0] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-False-asset1] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-False-asset2] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-False-asset3] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-False-asset4] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-False-asset5] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-False-asset6] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[exact-False-asset7] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-True-asset0] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-True-asset1] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-True-asset2] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-True-asset3] SKIPPED [ 16%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-True-asset4] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-True-asset5] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-True-asset6] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-True-asset7] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-False-asset0] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-False-asset1] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-False-asset2] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-False-asset3] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-False-asset4] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-False-asset5] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-False-asset6] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_at[approximate-False-asset7] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[exact-asset0] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[exact-asset1] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[exact-asset2] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[exact-asset3] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[exact-asset4] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[exact-asset5] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[exact-asset6] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[exact-asset7] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[approximate-asset0] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[approximate-asset1] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[approximate-asset2] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[approximate-asset3] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[approximate-asset4] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[approximate-asset5] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[approximate-asset6] SKIPPED [ 17%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frame_played_at[approximate-asset7] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[exact-asset0] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[exact-asset1] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[exact-asset2] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[exact-asset3] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[exact-asset4] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[exact-asset5] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[exact-asset6] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[exact-asset7] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[approximate-asset0] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[approximate-asset1] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[approximate-asset2] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[approximate-asset3] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[approximate-asset4] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[approximate-asset5] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[approximate-asset6] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_get_frames_played_at[approximate-asset7] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[exact-asset0] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[exact-asset1] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[exact-asset2] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[exact-asset3] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[exact-asset4] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[exact-asset5] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[exact-asset6] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[exact-asset7] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[approximate-asset0] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[approximate-asset1] SKIPPED [ 18%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[approximate-asset2] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[approximate-asset3] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[approximate-asset4] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[approximate-asset5] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[approximate-asset6] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_backwards[approximate-asset7] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_cuda_mpeg4_mp4_first_frame[exact] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_cuda_mpeg4_mp4_first_frame[approximate] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_cuda_open_gop_late_idr[exact-./youtube-1HYJQESw3hs.mp4] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_cuda_open_gop_late_idr[exact-./youtube-c_B4XII1L6A.mp4] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_cuda_open_gop_late_idr[approximate-./youtube-1HYJQESw3hs.mp4] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_cuda_open_gop_late_idr[approximate-./youtube-c_B4XII1L6A.mp4] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_cpu_fallback SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cpu_fallback_yuv444 SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cuda_interface_error SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_set_cuda_backend SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cache_capacity PASSED [ 19%] test/test_decoders.py::TestVideoDecoder::test_nvdec_cache_capacity_eviction SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_cpu_fallback_no_fallback_on_cpu_device PASSED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_applied_to_frames[cpu-NCHW] PASSED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_applied_to_frames[cpu-NHWC] PASSED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_applied_to_frames[cuda-NCHW] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_applied_to_frames[cuda-NHWC] SKIPPED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[Resize-100-150] PASSED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[Resize-150-100] PASSED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[Resize-100-100] PASSED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[CenterCrop-100-150] PASSED [ 19%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[CenterCrop-150-100] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[CenterCrop-100-100] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[RandomCrop-100-150] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[RandomCrop-150-100] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform[RandomCrop-100-100] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_rotation_with_transform_pipeline PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_cpu_fallback_h265_video[cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_cpu_fallback_h265_video[cuda:ffmpeg] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_cpu_fallback_no_fallback_on_supported_video[cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_cpu_fallback_no_fallback_on_supported_video[cuda:ffmpeg] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_beta_backend_still_supported_for_bc SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[output_dtype0-asset0-cpu] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[output_dtype0-asset0-cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[output_dtype0-asset1-cpu] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[output_dtype0-asset1-cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[output_dtype0-asset2-cpu] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[output_dtype0-asset2-cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[output_dtype0-asset3-cpu] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[output_dtype0-asset3-cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[default-asset0-cpu] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[default-asset0-cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[default-asset1-cpu] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[default-asset1-cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[default-asset2-cpu] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[default-asset2-cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[default-asset3-cpu] PASSED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_uint8[default-asset3-cuda] SKIPPED [ 20%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32[asset0-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32[asset0-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32[asset1-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32[asset1-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32[asset2-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32[asset2-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32[asset3-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32[asset3-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_auto[asset0-False-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_auto[asset0-False-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_auto[asset1-True-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_auto[asset1-True-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_auto[asset2-True-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_auto[asset2-True-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_auto[asset3-True-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_auto[asset3-True-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_batch_apis[asset0-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_batch_apis[asset0-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_batch_apis[asset1-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_batch_apis[asset1-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_batch_apis[asset2-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_batch_apis[asset2-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_batch_apis[asset3-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_batch_apis[asset3-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_pts_apis[asset0-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_pts_apis[asset0-cuda] SKIPPED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_pts_apis[asset1-cpu] PASSED [ 21%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_pts_apis[asset1-cuda] SKIPPED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_pts_apis[asset2-cpu] PASSED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_pts_apis[asset2-cuda] SKIPPED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_pts_apis[asset3-cpu] PASSED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_pts_apis[asset3-cuda] SKIPPED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_invalid[bad_dtype0] PASSED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_invalid[bad_dtype1] PASSED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_invalid[not_a_dtype] PASSED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_not_uint8_ffmpeg_cuda_backend[output_dtype0] SKIPPED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_not_uint8_ffmpeg_cuda_backend[auto] SKIPPED [ 22%] test/test_decoders.py::TestVideoDecoder::test_output_dtype_float32_cpu_fallback SKIPPED [ 22%] test/test_decoders.py::TestAudioDecoder::test_metadata[asset0] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_metadata[asset1] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_metadata[asset2] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_metadata[asset3] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_error[asset0] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_error[asset1] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_negative_start[asset0] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_negative_start[asset1] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_fresh_decoder_seek PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples_with_range[None-asset0] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples_with_range[None-asset1] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples_with_range[duration-asset0] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples_with_range[duration-asset1] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples_with_range[99999999-asset0] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples_with_range[99999999-asset1] PASSED [ 22%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples[asset0] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples[asset1] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_get_all_samples[asset2] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_decode_from_tensor_odd_sized_wav PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_seek_mpeg_program_stream[1] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_seek_mpeg_program_stream[2] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_seek_mpeg_program_stream[2.5] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_seek_mpeg_program_stream[3] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_corrupt_data_raises PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_at_frame_boundaries[asset0] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_at_frame_boundaries[asset1] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_not_at_frame_boundaries[asset0] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_not_at_frame_boundaries[asset1] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_start_equals_stop[asset0] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_start_equals_stop[asset1] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_frame_start_is_not_zero PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_single_channel PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_format_conversion PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_sample_rate_conversion[0-None] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_sample_rate_conversion[0-4] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_sample_rate_conversion[0-3] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_sample_rate_conversion[2-None] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_sample_rate_conversion[2-3] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_sample_rate_conversion_stereo PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_downsample_empty_frame PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3333333333333333-asset0] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3333333333333333-asset1] PASSED [ 23%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3333333333333333-asset2] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3333333333333333-asset3] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3333333333333333-asset4] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3333333333333333-asset5] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3333333333333333-asset6] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.7-asset0] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.7-asset1] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.7-asset2] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.7-asset3] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.7-asset4] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.7-asset5] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.7-asset6] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3-asset0] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3-asset1] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3-asset2] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3-asset3] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3-asset4] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3-asset5] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[8000-0.3-asset6] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.0-asset0] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.0-asset1] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.0-asset2] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.0-asset3] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.0-asset4] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.0-asset5] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.0-asset6] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.2-asset0] PASSED [ 24%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.2-asset1] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.2-asset2] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.2-asset3] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.2-asset4] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.2-asset5] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-1.2-asset6] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3333333333333333-asset0] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3333333333333333-asset1] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3333333333333333-asset2] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3333333333333333-asset3] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3333333333333333-asset4] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3333333333333333-asset5] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3333333333333333-asset6] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3-asset0] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3-asset1] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3-asset2] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3-asset3] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3-asset4] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3-asset5] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16000-0.3-asset6] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-1.0-asset0] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-1.0-asset1] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-1.0-asset2] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-1.0-asset3] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-1.0-asset4] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-1.0-asset5] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-1.0-asset6] PASSED [ 25%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-0.3333333333333333-asset0] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-0.3333333333333333-asset1] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-0.3333333333333333-asset2] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-0.3333333333333333-asset3] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-0.3333333333333333-asset4] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-0.3333333333333333-asset5] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[16001-0.3333333333333333-asset6] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[22050-0.7-asset0] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[22050-0.7-asset1] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[22050-0.7-asset2] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[22050-0.7-asset3] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[22050-0.7-asset4] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[22050-0.7-asset5] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[22050-0.7-asset6] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[48000-1.2-asset0] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[48000-1.2-asset1] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[48000-1.2-asset2] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[48000-1.2-asset3] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[48000-1.2-asset4] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[48000-1.2-asset5] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full[48000-1.2-asset6] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full_postroll[1.45-8000] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full_postroll[1.45-16000] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full_postroll[1.91-8000] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full_postroll[1.91-16000] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full_postroll[2.1-8000] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_resample_chunked_matches_full_postroll[2.1-16000] PASSED [ 26%] test/test_decoders.py::TestAudioDecoder::test_chunk_boundary_half_sample[6000] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_chunk_boundary_half_sample[20000] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_chunk_boundary_half_sample[30000] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_decode_s16_ffmpeg4 PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_samples_duration[None-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_samples_duration[None-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_samples_duration[8000-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_samples_duration[8000-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_samples_duration[16000-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_samples_duration[16000-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_samples_duration[441000-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_samples_duration[441000-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[1-None-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[1-None-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[1-16000-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[1-16000-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[2-None-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[2-None-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[2-16000-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[2-16000-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[8-None-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[8-None-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[8-16000-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[8-16000-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[16-None-asset0] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[16-None-asset1] PASSED [ 27%] test/test_decoders.py::TestAudioDecoder::test_num_channels[16-16000-asset0] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[16-16000-asset1] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[24-None-asset0] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[24-None-asset1] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[24-16000-asset0] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[24-16000-asset1] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[None-None-asset0] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[None-None-asset1] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[None-16000-asset0] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels[None-16000-asset1] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels_errors[asset0] PASSED [ 28%] test/test_decoders.py::TestAudioDecoder::test_num_channels_errors[asset1] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_non_wav_file_raises_error PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset0-0.0-1.0] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset0-0.2-0.6] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset0-1.0-1.0] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset0-0.0-None] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset0--1.0-1.0] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset0--1.0-None] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset0-None-None] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset1-0.0-1.0] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset1-0.2-0.6] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset1-1.0-1.0] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset1-0.0-None] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset1--1.0-1.0] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset1--1.0-None] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset1-None-None] PASSED [ 28%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset2-0.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset2-0.2-0.6] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset2-1.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset2-0.0-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset2--1.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset2--1.0-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset2-None-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset3-0.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset3-0.2-0.6] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset3-1.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset3-0.0-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset3--1.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset3--1.0-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset3-None-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset4-0.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset4-0.2-0.6] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset4-1.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset4-0.0-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset4--1.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset4--1.0-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset4-None-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset5-0.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset5-0.2-0.6] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset5-1.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset5-0.0-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset5--1.0-1.0] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset5--1.0-None] PASSED [ 29%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset5-None-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset6-0.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset6-0.2-0.6] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset6-1.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset6-0.0-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset6--1.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset6--1.0-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[path-asset6-None-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset0-0.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset0-0.2-0.6] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset0-1.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset0-0.0-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset0--1.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset0--1.0-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset0-None-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset1-0.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset1-0.2-0.6] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset1-1.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset1-0.0-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset1--1.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset1--1.0-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset1-None-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset2-0.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset2-0.2-0.6] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset2-1.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset2-0.0-None] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset2--1.0-1.0] PASSED [ 30%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset2--1.0-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset2-None-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset3-0.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset3-0.2-0.6] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset3-1.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset3-0.0-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset3--1.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset3--1.0-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset3-None-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset4-0.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset4-0.2-0.6] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset4-1.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset4-0.0-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset4--1.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset4--1.0-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset4-None-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset5-0.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset5-0.2-0.6] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset5-1.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset5-0.0-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset5--1.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset5--1.0-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset5-None-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset6-0.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset6-0.2-0.6] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset6-1.0-1.0] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset6-0.0-None] PASSED [ 31%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset6--1.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset6--1.0-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[str-asset6-None-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset0-0.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset0-0.2-0.6] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset0-1.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset0-0.0-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset0--1.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset0--1.0-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset0-None-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset1-0.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset1-0.2-0.6] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset1-1.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset1-0.0-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset1--1.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset1--1.0-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset1-None-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset2-0.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset2-0.2-0.6] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset2-1.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset2-0.0-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset2--1.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset2--1.0-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset2-None-None] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset3-0.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset3-0.2-0.6] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset3-1.0-1.0] PASSED [ 32%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset3-0.0-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset3--1.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset3--1.0-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset3-None-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset4-0.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset4-0.2-0.6] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset4-1.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset4-0.0-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset4--1.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset4--1.0-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset4-None-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset5-0.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset5-0.2-0.6] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset5-1.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset5-0.0-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset5--1.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset5--1.0-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset5-None-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset6-0.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset6-0.2-0.6] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset6-1.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset6-0.0-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset6--1.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset6--1.0-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[bytes-asset6-None-None] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset0-0.0-1.0] PASSED [ 33%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset0-0.2-0.6] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset0-1.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset0-0.0-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset0--1.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset0--1.0-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset0-None-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset1-0.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset1-0.2-0.6] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset1-1.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset1-0.0-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset1--1.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset1--1.0-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset1-None-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset2-0.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset2-0.2-0.6] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset2-1.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset2-0.0-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset2--1.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset2--1.0-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset2-None-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset3-0.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset3-0.2-0.6] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset3-1.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset3-0.0-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset3--1.0-1.0] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset3--1.0-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset3-None-None] PASSED [ 34%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset4-0.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset4-0.2-0.6] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset4-1.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset4-0.0-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset4--1.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset4--1.0-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset4-None-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset5-0.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset5-0.2-0.6] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset5-1.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset5-0.0-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset5--1.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset5--1.0-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset5-None-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset6-0.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset6-0.2-0.6] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset6-1.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset6-0.0-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset6--1.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset6--1.0-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[tensor-asset6-None-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset0-0.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset0-0.2-0.6] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset0-1.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset0-0.0-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset0--1.0-1.0] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset0--1.0-None] PASSED [ 35%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset0-None-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset1-0.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset1-0.2-0.6] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset1-1.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset1-0.0-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset1--1.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset1--1.0-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset1-None-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset2-0.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset2-0.2-0.6] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset2-1.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset2-0.0-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset2--1.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset2--1.0-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset2-None-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset3-0.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset3-0.2-0.6] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset3-1.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset3-0.0-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset3--1.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset3--1.0-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset3-None-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset4-0.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset4-0.2-0.6] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset4-1.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset4-0.0-None] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset4--1.0-1.0] PASSED [ 36%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset4--1.0-None] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset4-None-None] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset5-0.0-1.0] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset5-0.2-0.6] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset5-1.0-1.0] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset5-0.0-None] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset5--1.0-1.0] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset5--1.0-None] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset5-None-None] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset6-0.0-1.0] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset6-0.2-0.6] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset6-1.0-1.0] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset6-0.0-None] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset6--1.0-1.0] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset6--1.0-None] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_against_audio_decoder[file_like-asset6-None-None] PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_get_samples_played_in_range_errors PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_start_equals_stop_returns_empty PASSED [ 37%] test/test_decoders.py::TestWavDecoder::test_multiple_calls_with_backward_seeks PASSED [ 37%] test/test_decoders.py::TestBlocks::test_block_output_types[cpu] PASSED [ 37%] test/test_decoders.py::TestBlocks::test_block_output_types[cuda] SKIPPED [ 37%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video0] PASSED [ 37%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video1] PASSED [ 37%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video2] PASSED [ 37%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video3] PASSED [ 37%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video4] PASSED [ 37%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video5] PASSED [ 37%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video6] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video7] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video8] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video9] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video10] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video11] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video12] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-sequential-video13] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video0] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video1] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video2] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video3] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video4] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video5] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video6] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video7] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video8] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video9] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video10] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video11] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video12] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_frames-video13] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video0] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video1] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video2] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video3] PASSED [ 38%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video4] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video5] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video6] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video7] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video8] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video9] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video10] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video11] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video12] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets-video13] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video0] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video1] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video2] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video3] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video4] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video5] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video6] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video7] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video8] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video9] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video10] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video11] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video12] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cpu-prefetch_packets_and_frames-video13] PASSED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video0] SKIPPED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video1] SKIPPED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video2] SKIPPED [ 39%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video3] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video4] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video5] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video6] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video7] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video8] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video9] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video10] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video11] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video12] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-sequential-video13] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video0] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video1] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video2] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video3] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video4] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video5] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video6] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video7] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video8] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video9] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video10] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video11] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video12] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_frames-video13] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video0] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video1] SKIPPED [ 40%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video2] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video3] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video4] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video5] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video6] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video7] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video8] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video9] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video10] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video11] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video12] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets-video13] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video0] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video1] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video2] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video3] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video4] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video5] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video6] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video7] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video8] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video9] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video10] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video11] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video12] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_matches_video_decoder[cuda-prefetch_packets_and_frames-video13] SKIPPED [ 41%] test/test_decoders.py::TestBlocks::test_color_converter_reused_across_videos[cpu] PASSED [ 41%] test/test_decoders.py::TestBlocks::test_color_converter_reused_across_videos[cuda] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_set_cuda_backend_is_a_noop[cpu] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_set_cuda_backend_is_a_noop[cuda] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cpu-video0] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cpu-video1] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cpu-video2] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cpu-video3] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cpu-video4] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cuda-video0] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cuda-video1] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cuda-video2] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cuda-video3] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_structure[cuda-video4] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_mutation_visible_in_color_convert[cpu] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_mutation_visible_in_color_convert[cuda] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_is_a_view[cpu] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_is_a_view[cuda] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cpu-video0] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cpu-video1] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cpu-video2] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cpu-video3] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cpu-video4] PASSED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cuda-video0] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cuda-video1] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cuda-video2] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cuda-video3] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_planes_outlive_frame[cuda-video4] SKIPPED [ 42%] test/test_decoders.py::TestBlocks::test_materialize_neutral_chroma_is_grayscale[cpu-video0] PASSED [ 43%] test/test_decoders.py::TestBlocks::test_materialize_neutral_chroma_is_grayscale[cpu-video1] PASSED [ 43%] test/test_decoders.py::TestBlocks::test_materialize_neutral_chroma_is_grayscale[cuda-video0] SKIPPED [ 43%] test/test_decoders.py::TestBlocks::test_materialize_neutral_chroma_is_grayscale[cuda-video1] SKIPPED [ 43%] test/test_decoders.py::TestBlocks::test_materialize_cpu_fallback_stays_on_cpu[video0] SKIPPED [ 43%] test/test_decoders.py::TestBlocks::test_materialize_cpu_fallback_stays_on_cpu[video1] SKIPPED [ 43%] test/test_decoders.py::TestImageDecoder::test_torchscript[jpeg] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_torchscript[png] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_torchscript[webp] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_torchscript[gif] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_torchscript[avif] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_default_mode_is_rgb[jpeg] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_default_mode_is_rgb[jpeg_cuda] SKIPPED [ 43%] test/test_decoders.py::TestImageDecoder::test_default_mode_is_rgb[png] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_default_mode_is_rgb[webp] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_default_mode_is_rgb[gif] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_default_mode_is_rgb[avif] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_default_mode_is_rgb[heic] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[jpeg-str] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[jpeg-bytes] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[jpeg-tensor] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[jpeg_cuda-str] SKIPPED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[jpeg_cuda-bytes] SKIPPED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[jpeg_cuda-tensor] SKIPPED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[png-str] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[png-bytes] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[png-tensor] PASSED [ 43%] test/test_decoders.py::TestImageDecoder::test_source_kinds[webp-str] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[webp-bytes] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[webp-tensor] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[gif-str] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[gif-bytes] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[gif-tensor] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[avif-str] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[avif-bytes] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[avif-tensor] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[heic-str] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[heic-bytes] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_source_kinds[heic-tensor] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_bad_source_type_raises[jpeg] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_bad_source_type_raises[png] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_bad_source_type_raises[webp] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_bad_source_type_raises[gif] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_bad_source_type_raises[avif] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_bad_source_type_raises[heic] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-UNCHANGED-path] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-UNCHANGED-str] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-UNCHANGED-bytes] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-UNCHANGED-tensor] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-RGB-path] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-RGB-str] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-RGB-bytes] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-RGB-tensor] PASSED [ 44%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-GRAY_ALPHA-path] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-GRAY_ALPHA-str] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-GRAY_ALPHA-bytes] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[jpeg-GRAY_ALPHA-tensor] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-UNCHANGED-path] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-UNCHANGED-str] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-UNCHANGED-bytes] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-UNCHANGED-tensor] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-RGB-path] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-RGB-str] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-RGB-bytes] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-RGB-tensor] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-GRAY_ALPHA-path] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-GRAY_ALPHA-str] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-GRAY_ALPHA-bytes] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[png-GRAY_ALPHA-tensor] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-UNCHANGED-path] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-UNCHANGED-str] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-UNCHANGED-bytes] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-UNCHANGED-tensor] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-RGB-path] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-RGB-str] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-RGB-bytes] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-RGB-tensor] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-GRAY_ALPHA-path] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-GRAY_ALPHA-str] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-GRAY_ALPHA-bytes] PASSED [ 45%] test/test_decoders.py::TestImageDecoder::test_decode_image[webp-GRAY_ALPHA-tensor] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-UNCHANGED-path] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-UNCHANGED-str] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-UNCHANGED-bytes] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-UNCHANGED-tensor] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-RGB-path] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-RGB-str] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-RGB-bytes] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-RGB-tensor] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-GRAY_ALPHA-path] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-GRAY_ALPHA-str] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-GRAY_ALPHA-bytes] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[gif-GRAY_ALPHA-tensor] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-UNCHANGED-path] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-UNCHANGED-str] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-UNCHANGED-bytes] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-UNCHANGED-tensor] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-RGB-path] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-RGB-str] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-RGB-bytes] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-RGB-tensor] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-GRAY_ALPHA-path] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-GRAY_ALPHA-str] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-GRAY_ALPHA-bytes] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[avif-GRAY_ALPHA-tensor] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-UNCHANGED-path] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-UNCHANGED-str] PASSED [ 46%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-UNCHANGED-bytes] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-UNCHANGED-tensor] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-RGB-path] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-RGB-str] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-RGB-bytes] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-RGB-tensor] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-GRAY_ALPHA-path] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-GRAY_ALPHA-str] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-GRAY_ALPHA-bytes] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image[heic-GRAY_ALPHA-tensor] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[jpeg-output_dtype0] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[jpeg-output_dtype1] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[jpeg-auto] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[png-output_dtype0] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[png-output_dtype1] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[png-auto] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[webp-output_dtype0] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[webp-output_dtype1] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[webp-auto] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[gif-output_dtype0] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[gif-output_dtype1] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[gif-auto] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[avif-output_dtype0] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[avif-output_dtype1] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[avif-auto] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[heic-output_dtype0] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[heic-output_dtype1] PASSED [ 47%] test/test_decoders.py::TestImageDecoder::test_decode_image_output_dtype[heic-auto] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_decode_image_unrecognized_format_raises PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_decode_image_rgba_alias[RGBA] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_decode_image_rgba_alias[ImageReadMode.RGB_ALPHA] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-jpeg0] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-jpeg1] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-jpeg2] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-png0] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-png1] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-png2] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-png3] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-png4] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-webp0] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-webp1] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-gif0] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-gif1] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-gif2] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[UNCHANGED-None-None-avif] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-jpeg0] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-jpeg1] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-jpeg2] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-png0] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-png1] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-png2] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-png3] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-png4] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-webp0] PASSED [ 48%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-webp1] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-gif0] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-gif1] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-gif2] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY-L-1-avif] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-jpeg0] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-jpeg1] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-jpeg2] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-png0] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-png1] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-png2] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-png3] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-png4] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-webp0] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-webp1] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-gif0] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-gif1] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-gif2] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[GRAY_ALPHA-LA-2-avif] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-jpeg0] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-jpeg1] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-jpeg2] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-png0] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-png1] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-png2] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-png3] PASSED [ 49%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-png4] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-webp0] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-webp1] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-gif0] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-gif1] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-gif2] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB-RGB-3-avif] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-jpeg0] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-jpeg1] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-jpeg2] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-png0] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-png1] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-png2] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-png3] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-png4] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-webp0] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-webp1] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-gif0] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-gif1] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-gif2] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_all_source_to_all_output_modes[RGB_ALPHA-RGBA-4-avif] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[UNCHANGED-jpeg] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[UNCHANGED-jpeg_cuda] SKIPPED [ 50%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[UNCHANGED-png] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[UNCHANGED-webp] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[UNCHANGED-gif] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[UNCHANGED-avif] PASSED [ 50%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[UNCHANGED-heic] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY-jpeg] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY-jpeg_cuda] SKIPPED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY-png] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY-webp] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY-gif] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY-avif] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY-heic] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY_ALPHA-jpeg] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY_ALPHA-jpeg_cuda] SKIPPED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY_ALPHA-png] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY_ALPHA-webp] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY_ALPHA-gif] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY_ALPHA-avif] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[GRAY_ALPHA-heic] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB-jpeg] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB-jpeg_cuda] SKIPPED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB-png] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB-webp] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB-gif] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB-avif] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB-heic] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB_ALPHA-jpeg] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB_ALPHA-jpeg_cuda] SKIPPED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB_ALPHA-png] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB_ALPHA-webp] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB_ALPHA-gif] PASSED [ 51%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB_ALPHA-avif] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_8bit_source[RGB_ALPHA-heic] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype0-jpeg] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype0-png] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype0-webp] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype0-gif] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype0-avif] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype0-heic] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype1-jpeg] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype1-png] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype1-webp] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype1-gif] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype1-avif] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[bad_dtype1-heic] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[uint8-jpeg] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[uint8-png] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[uint8-webp] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[uint8-gif] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[uint8-avif] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_output_dtype_invalid[uint8-heic] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[0-jpeg] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[0-png] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[0-webp] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[0-avif] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[1-jpeg] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[1-png] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[1-webp] PASSED [ 52%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[1-avif] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[2-jpeg] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[2-png] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[2-webp] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[2-avif] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[3-jpeg] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[3-png] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[3-webp] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[3-avif] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[4-jpeg] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[4-png] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[4-webp] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[4-avif] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[5-jpeg] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[5-png] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[5-webp] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[5-avif] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[6-jpeg] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[6-png] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[6-webp] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[6-avif] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[7-jpeg] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[7-png] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[7-webp] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[7-avif] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[8-jpeg] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[8-png] PASSED [ 53%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[8-webp] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_exif_orientation[8-avif] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[65533-jpeg] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[65533-png] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[65533-webp] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[1-jpeg] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[1-png] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[1-webp] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[7-jpeg] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[7-png] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[7-webp] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[10-jpeg] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[10-png] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[10-webp] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[23-jpeg] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[23-png] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[23-webp] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[33-jpeg] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[33-png] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_invalid_exif[33-webp] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_heic_orientation[asset0-6] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_heic_orientation[asset1-2] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_not_an_image_raises[jpeg] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_not_an_image_raises[png] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_not_an_image_raises[webp] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_not_an_image_raises[gif] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_not_an_image_raises[avif] PASSED [ 54%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[2-jpeg] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[2-png] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[2-webp] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[2-gif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[2-avif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[3-jpeg] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[3-png] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[3-webp] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[3-gif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[3-avif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[4-jpeg] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[4-png] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[4-webp] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[4-gif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_truncated_raises[4-avif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-1-dimensional-jpeg] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-1-dimensional-png] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-1-dimensional-webp] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-1-dimensional-gif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-1-dimensional-avif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-uint8-jpeg] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-uint8-png] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-uint8-webp] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-uint8-gif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-uint8-avif] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-non-empty-jpeg] PASSED [ 55%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-non-empty-png] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-non-empty-webp] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-non-empty-gif] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_bad_encoded_data_raises[-non-empty-avif] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_non_contiguous_encoded_data[jpeg] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_non_contiguous_encoded_data[jpeg_cuda] SKIPPED [ 56%] test/test_decoders.py::TestImageDecoder::test_non_contiguous_encoded_data[png] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_non_contiguous_encoded_data[webp] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_non_contiguous_encoded_data[gif] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_non_contiguous_encoded_data[avif] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_non_contiguous_encoded_data[heic] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_mode_str_and_enum PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[UNCHANGED-None-asset0] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[UNCHANGED-None-asset1] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[UNCHANGED-None-asset2] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[GRAY-L-asset0] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[GRAY-L-asset1] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[GRAY-L-asset2] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[GRAY_ALPHA-LA-asset0] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[GRAY_ALPHA-LA-asset1] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[GRAY_ALPHA-LA-asset2] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[RGB-RGB-asset0] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[RGB-RGB-asset1] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[RGB-RGB-asset2] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[RGB_ALPHA-RGBA-asset0] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[RGB_ALPHA-RGBA-asset1] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_against_pil[RGB_ALPHA-RGBA-asset2] PASSED [ 56%] test/test_decoders.py::TestImageDecoder::test_jpeg_batch_cpu PASSED [ 57%] test/test_decoders.py::TestImageDecoder::test_bad_huffman_decodes PASSED [ 57%] test/test_decoders.py::TestImageDecoder::test_corrupt_jpeg_raises PASSED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[0] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[1] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[2] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[3] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[4] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[5] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[6] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[7] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_exif_orientation[8] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[UNCHANGED-asset0] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[UNCHANGED-asset1] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[RGB-asset0] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[RGB-asset1] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[GRAY-asset0] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[GRAY-asset1] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[RGB_ALPHA-asset0] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[RGB_ALPHA-asset1] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[GRAY_ALPHA-asset0] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_matches_cpu[GRAY_ALPHA-asset1] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_batch[UNCHANGED] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_batch[GRAY] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_batch[RGB] SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_single_vs_list_return_type SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_errors SKIPPED [ 57%] test/test_decoders.py::TestImageDecoder::test_cuda_jpeg_multithreaded SKIPPED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[UNCHANGED-None-asset0] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[UNCHANGED-None-asset1] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[UNCHANGED-None-asset2] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[UNCHANGED-None-asset3] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[GRAY-L-asset0] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[GRAY-L-asset1] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[GRAY-L-asset2] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[GRAY-L-asset3] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[GRAY_ALPHA-LA-asset0] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[GRAY_ALPHA-LA-asset1] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[GRAY_ALPHA-LA-asset2] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[GRAY_ALPHA-LA-asset3] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[RGB-RGB-asset0] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[RGB-RGB-asset1] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[RGB-RGB-asset2] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[RGB-RGB-asset3] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[RGB_ALPHA-RGBA-asset0] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[RGB_ALPHA-RGBA-asset1] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[RGB_ALPHA-RGBA-asset2] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_png_against_pil[RGB_ALPHA-RGBA-asset3] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[UNCHANGED-asset0] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[UNCHANGED-asset1] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[GRAY-asset0] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[GRAY-asset1] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[GRAY_ALPHA-asset0] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[GRAY_ALPHA-asset1] PASSED [ 58%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[RGB-asset0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[RGB-asset1] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[RGB_ALPHA-asset0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_output_dtype_16bit_png[RGB_ALPHA-asset1] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_png_trns_transparency[GRAY_ALPHA-LA-rgb] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_png_trns_transparency[GRAY_ALPHA-LA-gray] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_png_trns_transparency[GRAY_ALPHA-LA-palette] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_png_trns_transparency[RGB_ALPHA-RGBA-rgb] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_png_trns_transparency[RGB_ALPHA-RGBA-gray] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_png_trns_transparency[RGB_ALPHA-RGBA-palette] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_1bit_png[shape0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_1bit_png[shape1] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_1bit_png[shape2] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_interlaced_png[UNCHANGED-None] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_interlaced_png[RGB-RGB] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_corrupt_png_raises PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_corrupt_png_out_of_bound_read_raises[asset0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_corrupt_png_out_of_bound_read_raises[asset1] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[UNCHANGED-None-asset0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[UNCHANGED-None-asset1] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[GRAY-L-asset0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[GRAY-L-asset1] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[GRAY_ALPHA-LA-asset0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[GRAY_ALPHA-LA-asset1] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[RGB-RGB-asset0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[RGB-RGB-asset1] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[RGB_ALPHA-RGBA-asset0] PASSED [ 59%] test/test_decoders.py::TestImageDecoder::test_webp_against_pil[RGB_ALPHA-RGBA-asset1] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_animated_webp[UNCHANGED-None] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_animated_webp[GRAY-L] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_animated_webp[GRAY_ALPHA-LA] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_animated_webp[RGB-RGB] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_animated_webp[RGB_ALPHA-RGBA] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_animated_webp_transparency PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_against_pil[UNCHANGED-None] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_against_pil[GRAY-L] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_against_pil[GRAY_ALPHA-LA] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_against_pil[RGB-RGB] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_against_pil[RGB_ALPHA-RGBA] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_animated_gif PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_disposal_methods[1] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_disposal_methods[2] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_disposal_methods[3] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_transparency PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_gif_first_frame_larger_than_canvas PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[UNCHANGED-None-asset0] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[UNCHANGED-None-asset1] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[GRAY-L-asset0] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[GRAY-L-asset1] SKIPPED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[GRAY_ALPHA-LA-asset0] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[GRAY_ALPHA-LA-asset1] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[RGB-RGB-asset0] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[RGB-RGB-asset1] SKIPPED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[RGB_ALPHA-RGBA-asset0] PASSED [ 60%] test/test_decoders.py::TestImageDecoder::test_avif_against_pil[RGB_ALPHA-RGBA-asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[UNCHANGED-asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[UNCHANGED-asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[GRAY-asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[GRAY-asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[GRAY_ALPHA-asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[GRAY_ALPHA-asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[RGB-asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[RGB-asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[RGB_ALPHA-asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_avif[RGB_ALPHA-asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_avif_num_threads PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_animated_avif[UNCHANGED-None] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_animated_avif[GRAY-L] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_animated_avif[GRAY_ALPHA-LA] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_animated_avif[RGB-RGB] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_animated_avif[RGB_ALPHA-RGBA] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[UNCHANGED-heic_asset0-png_asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[UNCHANGED-heic_asset1-png_asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[GRAY-heic_asset0-png_asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[GRAY-heic_asset1-png_asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[GRAY_ALPHA-heic_asset0-png_asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[GRAY_ALPHA-heic_asset1-png_asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[RGB-heic_asset0-png_asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[RGB-heic_asset1-png_asset1] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[RGB_ALPHA-heic_asset0-png_asset0] PASSED [ 61%] test/test_decoders.py::TestImageDecoder::test_heic_against_png[RGB_ALPHA-heic_asset1-png_asset1] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_heic[UNCHANGED] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_heic[GRAY] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_heic[GRAY_ALPHA] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_heic[RGB] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_output_dtype_high_bit_depth_heic[RGB_ALPHA] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_animated_heic[UNCHANGED-RGB] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_animated_heic[GRAY-L] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_animated_heic[GRAY_ALPHA-LA] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_animated_heic[RGB-RGB] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_animated_heic[RGB_ALPHA-RGBA] PASSED [ 62%] test/test_decoders.py::TestImageDecoder::test_heic_missing_libheif_raises_import_error PASSED [ 62%] test/test_encoders.py::TestAudioEncoder::test_bad_input PASSED [ 62%] test/test_encoders.py::TestAudioEncoder::test_equivalence_with_encoder PASSED [ 62%] test/test_encoders.py::TestAudioEncoder::test_to_tensor_no_warning PASSED [ 62%] test/test_encoders.py::TestVideoEncoder::test_bad_input PASSED [ 62%] test/test_encoders.py::TestVideoEncoder::test_equivalence_with_encoder PASSED [ 62%] test/test_encoders.py::TestVideoEncoder::test_to_tensor_no_warning PASSED [ 62%] test/test_encoders.py::TestEncoder::test_double_close[to_file] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_double_close[to_file_like] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_context_manager[to_file] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_context_manager[to_file_like] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cpu-to_file-mp4] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cpu-to_file-mov] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cpu-to_file-mkv] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cpu-to_file_like-mp4] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cpu-to_file_like-mov] PASSED [ 62%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cpu-to_file_like-mkv] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cuda-to_file-mp4] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cuda-to_file-mov] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cuda-to_file-mkv] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cuda-to_file_like-mp4] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cuda-to_file_like-mov] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_add_video_and_encode_frames[cuda-to_file_like-mkv] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_open_invalid_path PASSED [ 63%] test/test_encoders.py::TestEncoder::test_open_invalid_format[to_file] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_open_invalid_format[to_file_like] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_fragmented_mp4[cpu-to_file-mp4] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_fragmented_mp4[cpu-to_file-mov] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_fragmented_mp4[cpu-to_file_like-mp4] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_fragmented_mp4[cpu-to_file_like-mov] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_fragmented_mp4[cuda-to_file-mp4] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_fragmented_mp4[cuda-to_file-mov] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_fragmented_mp4[cuda-to_file_like-mp4] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_fragmented_mp4[cuda-to_file_like-mov] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_write_frames_mismatched_dimensions_errors[cpu-to_file] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_write_frames_mismatched_dimensions_errors[cpu-to_file_like] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_write_frames_mismatched_dimensions_errors[cuda-to_file] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_write_frames_mismatched_dimensions_errors[cuda-to_file_like] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_write_frames_different_devices_errors[to_file] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_write_frames_different_devices_errors[to_file_like] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_device_None_respects_default_device[to_file] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_device_None_respects_default_device[to_file_like] SKIPPED [ 63%] test/test_encoders.py::TestEncoder::test_device_torch_device_object[to_file] PASSED [ 63%] test/test_encoders.py::TestEncoder::test_device_torch_device_object[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_device_cuda_0_string[to_file] SKIPPED [ 64%] test/test_encoders.py::TestEncoder::test_device_cuda_0_string[to_file_like] SKIPPED [ 64%] test/test_encoders.py::TestEncoder::test_write_samples_on_cuda_errors[to_file] SKIPPED [ 64%] test/test_encoders.py::TestEncoder::test_write_samples_on_cuda_errors[to_file_like] SKIPPED [ 64%] test/test_encoders.py::TestEncoder::test_write_frames_without_open_errors[cpu-to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_frames_without_open_errors[cpu-to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_frames_without_open_errors[cuda-to_file] SKIPPED [ 64%] test/test_encoders.py::TestEncoder::test_write_frames_without_open_errors[cuda-to_file_like] SKIPPED [ 64%] test/test_encoders.py::TestEncoder::test_write_samples_without_open_errors[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_samples_without_open_errors[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_samples_mismatched_channels_errors[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_samples_mismatched_channels_errors[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_open_without_stream_errors[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_open_without_stream_errors[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_open_twice_errors[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_open_twice_errors[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_open_after_close_errors[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_open_after_close_errors[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_frames_after_close_errors[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_frames_after_close_errors[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_samples_after_close_errors[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_write_samples_after_close_errors[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_add_audio_invalid_bit_rate_errors[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_add_audio_invalid_bit_rate_errors[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_add_audio_and_encode_samples[to_file] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_add_audio_and_encode_samples[to_file_like] PASSED [ 64%] test/test_encoders.py::TestEncoder::test_add_audio_and_video_and_encode[to_file-mp4] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_add_audio_and_video_and_encode[to_file-mkv] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_add_audio_and_video_and_encode[to_file-mov] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_add_audio_and_video_and_encode[to_file_like-mp4] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_add_audio_and_video_and_encode[to_file_like-mkv] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_add_audio_and_video_and_encode[to_file_like-mov] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_cuda_video_with_cpu_video_and_cpu_audio[to_file] SKIPPED [ 65%] test/test_encoders.py::TestEncoder::test_cuda_video_with_cpu_video_and_cpu_audio[to_file_like] SKIPPED [ 65%] test/test_encoders.py::TestEncoder::test_multiple_video_streams_and_audio[to_file] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_multiple_video_streams_and_audio[to_file_like] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_add_audio_out_num_channels[to_file] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_add_audio_out_num_channels[to_file_like] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params0-mov] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params0-mp4] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params0-avi] SKIPPED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params0-mkv] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params0-flv] SKIPPED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params1-mov] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params1-mp4] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params1-avi] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params1-mkv] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params1-flv] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params2-mov] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params2-mp4] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params2-avi] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params2-mkv] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params2-flv] PASSED [ 65%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params3-mov] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params3-mp4] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params3-avi] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params3-mkv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file-encode_params3-flv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params0-mov] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params0-mp4] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params0-avi] SKIPPED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params0-mkv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params0-flv] SKIPPED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params1-mov] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params1-mp4] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params1-avi] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params1-mkv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params1-flv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params2-mov] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params2-mp4] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params2-avi] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params2-mkv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params2-flv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params3-mov] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params3-mp4] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params3-avi] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params3-mkv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[30-to_file_like-encode_params3-flv] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params0-mov] PASSED [ 66%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params0-mp4] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params0-avi] SKIPPED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params0-mkv] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params0-flv] SKIPPED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params1-mov] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params1-mp4] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params1-avi] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params1-mkv] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params1-flv] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params2-mov] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params2-mp4] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params2-avi] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params2-mkv] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params2-flv] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params3-mov] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params3-mp4] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params3-avi] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params3-mkv] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file-encode_params3-flv] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params0-mov] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params0-mp4] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params0-avi] SKIPPED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params0-mkv] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params0-flv] SKIPPED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params1-mov] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params1-mp4] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params1-avi] PASSED [ 67%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params1-mkv] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params1-flv] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params2-mov] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params2-mp4] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params2-avi] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params2-mkv] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params2-flv] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params3-mov] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params3-mp4] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params3-avi] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params3-mkv] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_video_against_ffmpeg_cli[29.97-to_file_like-encode_params3-flv] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-None-asset0] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-None-asset1] FAILED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-0-asset0] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-0-asset1] FAILED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-44100-asset0] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-44100-asset1] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-999999999-asset0] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-999999999-asset1] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-None-asset0] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-None-asset1] FAILED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-0-asset0] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-0-asset1] FAILED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-44100-asset0] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-44100-asset1] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-999999999-asset0] PASSED [ 68%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-999999999-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-2-None-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-2-None-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-2-0-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-2-0-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-2-44100-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-2-44100-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-2-999999999-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-2-999999999-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-None-None-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-None-None-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-None-0-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-None-0-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-None-44100-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-None-44100-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-None-999999999-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-None-999999999-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-1-None-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-1-None-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-1-0-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-1-0-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-1-44100-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-1-44100-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-1-999999999-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-1-999999999-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-None-asset0] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-None-asset1] PASSED [ 69%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-0-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-0-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-44100-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-44100-asset1] FAILED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-999999999-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-999999999-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-None-None-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-None-None-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-None-0-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-None-0-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-None-44100-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-None-44100-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-None-999999999-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-None-999999999-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-1-None-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-1-None-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-1-0-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-1-0-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-1-44100-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-1-44100-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-1-999999999-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-1-999999999-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-2-None-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-2-None-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-2-0-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-2-0-asset1] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-2-44100-asset0] PASSED [ 70%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-2-44100-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-2-999999999-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-8000-2-999999999-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-None-None-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-None-None-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-None-0-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-None-0-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-None-44100-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-None-44100-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-None-999999999-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-None-999999999-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-1-None-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-1-None-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-1-0-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-1-0-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-1-44100-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-1-44100-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-1-999999999-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-1-999999999-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-2-None-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-2-None-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-2-0-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-2-0-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-2-44100-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-2-44100-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-2-999999999-asset0] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-wav-32000-2-999999999-asset1] PASSED [ 71%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-None-None-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-None-None-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-None-0-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-None-0-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-None-44100-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-None-44100-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-None-999999999-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-None-999999999-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-1-None-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-1-None-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-1-0-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-1-0-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-1-44100-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-1-44100-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-1-999999999-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-1-999999999-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-2-None-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-2-None-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-2-0-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-2-0-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-2-44100-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-2-44100-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-2-999999999-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-8000-2-999999999-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-None-None-asset0] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-None-None-asset1] PASSED [ 72%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-None-0-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-None-0-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-None-44100-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-None-44100-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-None-999999999-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-None-999999999-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-1-None-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-1-None-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-1-0-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-1-0-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-1-44100-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-1-44100-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-1-999999999-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-1-999999999-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-2-None-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-2-None-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-2-0-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-2-0-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-2-44100-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-2-44100-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-2-999999999-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-flac-32000-2-999999999-asset1] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-None-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-None-asset1] FAILED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-0-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-0-asset1] FAILED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-44100-asset0] PASSED [ 73%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-44100-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-999999999-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-999999999-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-None-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-None-asset1] FAILED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-0-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-0-asset1] FAILED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-44100-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-44100-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-999999999-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-999999999-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-2-None-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-2-None-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-2-0-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-2-0-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-2-44100-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-2-44100-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-2-999999999-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-2-999999999-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-None-None-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-None-None-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-None-0-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-None-0-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-None-44100-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-None-44100-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-None-999999999-asset0] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-None-999999999-asset1] PASSED [ 74%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-1-None-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-1-None-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-1-0-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-1-0-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-1-44100-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-1-44100-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-1-999999999-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-1-999999999-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-None-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-None-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-0-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-0-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-44100-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-44100-asset1] FAILED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-999999999-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-999999999-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-None-None-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-None-None-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-None-0-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-None-0-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-None-44100-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-None-44100-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-None-999999999-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-None-999999999-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-1-None-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-1-None-asset1] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-1-0-asset0] PASSED [ 75%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-1-0-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-1-44100-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-1-44100-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-1-999999999-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-1-999999999-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-2-None-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-2-None-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-2-0-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-2-0-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-2-44100-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-2-44100-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-2-999999999-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-8000-2-999999999-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-None-None-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-None-None-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-None-0-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-None-0-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-None-44100-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-None-44100-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-None-999999999-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-None-999999999-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-1-None-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-1-None-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-1-0-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-1-0-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-1-44100-asset0] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-1-44100-asset1] PASSED [ 76%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-1-999999999-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-1-999999999-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-2-None-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-2-None-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-2-0-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-2-0-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-2-44100-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-2-44100-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-2-999999999-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-wav-32000-2-999999999-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-None-None-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-None-None-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-None-0-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-None-0-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-None-44100-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-None-44100-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-None-999999999-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-None-999999999-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-1-None-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-1-None-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-1-0-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-1-0-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-1-44100-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-1-44100-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-1-999999999-asset0] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-1-999999999-asset1] PASSED [ 77%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-2-None-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-2-None-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-2-0-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-2-0-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-2-44100-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-2-44100-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-2-999999999-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-8000-2-999999999-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-None-None-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-None-None-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-None-0-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-None-0-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-None-44100-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-None-44100-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-None-999999999-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-None-999999999-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-1-None-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-1-None-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-1-0-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-1-0-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-1-44100-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-1-44100-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-1-999999999-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-1-999999999-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-2-None-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-2-None-asset1] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-2-0-asset0] PASSED [ 78%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-2-0-asset1] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-2-44100-asset0] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-2-44100-asset1] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-2-999999999-asset0] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-flac-32000-2-999999999-asset1] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_round_trip[to_file-mov] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_round_trip[to_file-mp4] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_round_trip[to_file-mkv] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_round_trip[to_file_like-mov] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_round_trip[to_file_like-mp4] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_round_trip[to_file_like-mkv] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_round_trip[to_file-wav] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_round_trip[to_file-flac] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_round_trip[to_file_like-wav] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_round_trip[to_file_like-flac] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_to_file_vs_to_file_like[mov] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_to_file_vs_to_file_like[mp4] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_to_file_vs_to_file_like[avi] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_to_file_vs_to_file_like[mkv] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_to_file_vs_to_file_like[flv] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_to_file_vs_to_file_like[mp3] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_to_file_vs_to_file_like[wav] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_audio_to_file_vs_to_file_like[flac] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_contiguity[cpu-to_file] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_contiguity[cpu-to_file_like] PASSED [ 79%] test/test_encoders.py::TestEncoder::test_video_contiguity[cuda-to_file] SKIPPED [ 79%] test/test_encoders.py::TestEncoder::test_video_contiguity[cuda-to_file_like] SKIPPED [ 79%] test/test_encoders.py::TestEncoder::test_audio_contiguity[to_file] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_audio_contiguity[to_file_like] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_add_audio_out_sample_rate[to_file] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_add_audio_out_sample_rate[to_file_like] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_pixel_format_errors[to_file] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_pixel_format_errors[to_file_like] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_pixel_format_gpu_override_errors[to_file] SKIPPED [ 80%] test/test_encoders.py::TestEncoder::test_pixel_format_gpu_override_errors[to_file_like] SKIPPED [ 80%] test/test_encoders.py::TestEncoder::test_extra_options_errors[to_file-extra_options0-qp=-10 is out of valid range] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_extra_options_errors[to_file-extra_options1-Option qp expects a numeric value but got] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_extra_options_errors[to_file-extra_options2-Option direct-pred expects a numeric value but got 'a'] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_extra_options_errors[to_file-extra_options3-avcodec_open2 failed: Invalid argument] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_extra_options_errors[to_file_like-extra_options0-qp=-10 is out of valid range] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_extra_options_errors[to_file_like-extra_options1-Option qp expects a numeric value but got] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_extra_options_errors[to_file_like-extra_options2-Option direct-pred expects a numeric value but got 'a'] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_extra_options_errors[to_file_like-extra_options3-avcodec_open2 failed: Invalid argument] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_write_frames_wrong_dtype_errors[to_file] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_write_frames_wrong_dtype_errors[to_file_like] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_write_frames_wrong_ndim_errors[to_file] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_write_frames_wrong_ndim_errors[to_file_like] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_write_frames_wrong_num_channels_errors[to_file] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_write_frames_wrong_num_channels_errors[to_file_like] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_add_audio_invalid_sample_rate_errors[to_file] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_add_audio_invalid_sample_rate_errors[to_file_like] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_add_audio_invalid_num_channels_errors[to_file] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_add_audio_invalid_num_channels_errors[to_file_like] PASSED [ 80%] test/test_encoders.py::TestEncoder::test_to_file_like_custom_file_object PASSED [ 80%] test/test_encoders.py::TestEncoder::test_to_file_like_custom_file_object_audio PASSED [ 81%] test/test_encoders.py::TestEncoder::test_to_file_like_real_file_video PASSED [ 81%] test/test_encoders.py::TestEncoder::test_to_file_like_real_file_audio PASSED [ 81%] test/test_encoders.py::TestEncoder::test_to_file_like_bad_methods_video PASSED [ 81%] test/test_encoders.py::TestEncoder::test_to_file_like_bad_methods_audio PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[mp4-h264-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[mp4-h264-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[mp4-hevc-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[mp4-hevc-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[mkv-av1-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[mkv-av1-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[avi-mpeg4-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[avi-mpeg4-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[webm-vp9-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_parameter_utilized[webm-vp9-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_spec_vs_impl_equivalence[h264-libx264-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_spec_vs_impl_equivalence[h264-libx264-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_spec_vs_impl_equivalence[av1-libaom-av1-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_spec_vs_impl_equivalence[av1-libaom-av1-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_spec_vs_impl_equivalence[vp9-libvpx-vp9-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_codec_spec_vs_impl_equivalence[vp9-libvpx-vp9-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_extra_options_utilized[baseline-bt709-tv] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_extra_options_utilized[main-bt470bg-pc] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_extra_options_utilized[high-fcc-pc] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_crf_valid_values[23-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_crf_valid_values[23-to_file_like] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_crf_valid_values[23.5-to_file] PASSED [ 81%] test/test_encoders.py::TestEncoder::test_crf_valid_values[23.5-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_crf_valid_values[-0.9-to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_crf_valid_values[-0.9-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_audio_bit_rate_positive_values[None-to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_audio_bit_rate_positive_values[None-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_audio_bit_rate_positive_values[0-to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_audio_bit_rate_positive_values[0-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_audio_bit_rate_positive_values[44100-to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_audio_bit_rate_positive_values[44100-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_audio_bit_rate_positive_values[999999999-to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_audio_bit_rate_positive_values[999999999-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_multiple_audio_formats[wav-to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_multiple_audio_formats[wav-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_multiple_audio_formats[mp3-to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_multiple_audio_formats[mp3-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_multiple_audio_formats[flac-to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_multiple_audio_formats[flac-to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_non_integer_frame_rate[to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_non_integer_frame_rate[to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_preset_parameter[to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_preset_parameter[to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_invalid_codec_name_errors[to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_invalid_codec_name_errors[to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_crf_out_of_range_errors[to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_crf_out_of_range_errors[to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_invalid_preset_errors[to_file] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_invalid_preset_errors[to_file_like] PASSED [ 82%] test/test_encoders.py::TestEncoder::test_fragmented_mp4_truncation[to_file-mp4] PASSED [ 83%] test/test_encoders.py::TestEncoder::test_fragmented_mp4_truncation[to_file-mov] PASSED [ 83%] test/test_encoders.py::TestEncoder::test_fragmented_mp4_truncation[to_file_like-mp4] PASSED [ 83%] test/test_encoders.py::TestEncoder::test_fragmented_mp4_truncation[to_file_like-mov] PASSED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-mov-None-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-mov-None-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-mov-h264_nvenc-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-mov-h264_nvenc-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-avi-h264_nvenc-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-avi-h264_nvenc-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-mp4-hevc_nvenc-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-mp4-hevc_nvenc-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-mkv-av1_nvenc-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt470bg-mkv-av1_nvenc-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-mov-None-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-mov-None-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-mov-h264_nvenc-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-mov-h264_nvenc-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-avi-h264_nvenc-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-avi-h264_nvenc-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-mp4-hevc_nvenc-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-mp4-hevc_nvenc-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-mkv-av1_nvenc-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt709-mkv-av1_nvenc-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-mov-None-to_file] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-mov-None-to_file_like] SKIPPED [ 83%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-mov-h264_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-mov-h264_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-avi-h264_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-avi-h264_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-mp4-hevc_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-mp4-hevc_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-mkv-av1_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-bt2020nc-mkv-av1_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-mov-None-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-mov-None-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-mov-h264_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-mov-h264_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-avi-h264_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-avi-h264_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-mp4-hevc_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-mp4-hevc_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-mkv-av1_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[pc-None-mkv-av1_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-mov-None-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-mov-None-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-mov-h264_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-mov-h264_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-avi-h264_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-avi-h264_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-mp4-hevc_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-mp4-hevc_nvenc-to_file_like] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-mkv-av1_nvenc-to_file] SKIPPED [ 84%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt470bg-mkv-av1_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-mov-None-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-mov-None-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-mov-h264_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-mov-h264_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-avi-h264_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-avi-h264_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-mp4-hevc_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-mp4-hevc_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-mkv-av1_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt709-mkv-av1_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-mov-None-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-mov-None-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-mov-h264_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-mov-h264_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-avi-h264_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-avi-h264_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-mp4-hevc_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-mp4-hevc_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-mkv-av1_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-bt2020nc-mkv-av1_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-mov-None-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-mov-None-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-mov-h264_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-mov-h264_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-avi-h264_nvenc-to_file] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-avi-h264_nvenc-to_file_like] SKIPPED [ 85%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-mp4-hevc_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-mp4-hevc_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-mkv-av1_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[tv-None-mkv-av1_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-mov-None-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-mov-None-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-mov-h264_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-mov-h264_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-avi-h264_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-avi-h264_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-mp4-hevc_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-mp4-hevc_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-mkv-av1_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt470bg-mkv-av1_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-mov-None-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-mov-None-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-mov-h264_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-mov-h264_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-avi-h264_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-avi-h264_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-mp4-hevc_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-mp4-hevc_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-mkv-av1_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt709-mkv-av1_nvenc-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-mov-None-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-mov-None-to_file_like] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-mov-h264_nvenc-to_file] SKIPPED [ 86%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-mov-h264_nvenc-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-avi-h264_nvenc-to_file] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-avi-h264_nvenc-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-mp4-hevc_nvenc-to_file] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-mp4-hevc_nvenc-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-mkv-av1_nvenc-to_file] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-bt2020nc-mkv-av1_nvenc-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-mov-None-to_file] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-mov-None-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-mov-h264_nvenc-to_file] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-mov-h264_nvenc-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-avi-h264_nvenc-to_file] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-avi-h264_nvenc-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-mp4-hevc_nvenc-to_file] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-mp4-hevc_nvenc-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-mkv-av1_nvenc-to_file] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_nvenc_against_ffmpeg_cli[None-None-mkv-av1_nvenc-to_file_like] SKIPPED [ 87%] test/test_encoders.py::TestEncoder::test_write_samples_wrong_dtype_errors[to_file] PASSED [ 87%] test/test_encoders.py::TestEncoder::test_write_samples_wrong_dtype_errors[to_file_like] PASSED [ 87%] test/test_encoders.py::TestEncoder::test_write_samples_wrong_ndim_errors[to_file] PASSED [ 87%] test/test_encoders.py::TestEncoder::test_write_samples_wrong_ndim_errors[to_file_like] PASSED [ 87%] test/test_encoders.py::TestEncoder::test_add_audio_unsupported_num_channels_errors[to_file] PASSED [ 87%] test/test_encoders.py::TestEncoder::test_add_audio_unsupported_num_channels_errors[to_file_like] PASSED [ 87%] test/test_encoders.py::TestEncoder::test_add_audio_invalid_out_sample_rate_errors[to_file] PASSED [ 87%] test/test_encoders.py::TestEncoder::test_add_audio_invalid_out_sample_rate_errors[to_file_like] PASSED [ 87%] test/test_encoders.py::TestImageEncoders::test_dest_variants_match[png] PASSED [ 87%] test/test_encoders.py::TestImageEncoders::test_dest_variants_match[jpeg] PASSED [ 87%] test/test_encoders.py::TestImageEncoders::test_dest_variants_match[jpeg_cuda] SKIPPED [ 88%] test/test_encoders.py::TestImageEncoders::test_dest_str_and_pathlib[png] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_dest_str_and_pathlib[jpeg] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_dest_str_and_pathlib[jpeg_cuda] SKIPPED [ 88%] test/test_encoders.py::TestImageEncoders::test_dest_open_file_object[png] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_dest_open_file_object[jpeg] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_dest_open_file_object[jpeg_cuda] SKIPPED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_png[0-asset0-RGB] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_png[0-asset1-GRAY] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_png[6-asset0-RGB] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_png[6-asset1-GRAY] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_png[9-asset0-RGB] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_png[9-asset1-GRAY] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_against_pil_png PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_compression_level_affects_size_png PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_default_compression_level_png PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_bad_compression_level_png[-1] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_bad_compression_level_png[10] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_to_tensor_png PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg[25-35-cpu] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg[25-35-cuda] SKIPPED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg[75-40-cpu] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg[75-40-cuda] SKIPPED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg[95-42-cpu] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg[95-42-cuda] SKIPPED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg_grayscale[25-35] PASSED [ 88%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg_grayscale[75-40] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_round_trip_jpeg_grayscale[95-42] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_quality_affects_size_jpeg[cpu] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_quality_affects_size_jpeg[cuda] SKIPPED [ 89%] test/test_encoders.py::TestImageEncoders::test_to_tensor_jpeg[cpu] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_to_tensor_jpeg[cuda] SKIPPED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_quality_jpeg[-1] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_quality_jpeg[101] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_grayscale_jpeg_cuda_errors SKIPPED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_dtype[png] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_dtype[jpeg] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_dtype[jpeg_cuda] SKIPPED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_ndim[shape0-png] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_ndim[shape0-jpeg] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_ndim[shape0-jpeg_cuda] SKIPPED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_ndim[shape1-png] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_ndim[shape1-jpeg] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_ndim[shape1-jpeg_cuda] SKIPPED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_num_channels[2-png] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_num_channels[2-jpeg] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_num_channels[2-jpeg_cuda] SKIPPED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_num_channels[4-png] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_num_channels[4-jpeg] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_num_channels[4-jpeg_cuda] SKIPPED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_file_like[png] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_file_like[jpeg] PASSED [ 89%] test/test_encoders.py::TestImageEncoders::test_bad_file_like[jpeg_cuda] SKIPPED [ 89%] test/test_ffmpeg_optional.py::test_ffmpeg_is_really_absent SKIPPEDilable.) [ 90%] test/test_ffmpeg_optional.py::test_image_decoders_work_without_ffmpeg[jpeg] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_image_decoders_work_without_ffmpeg[png] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_image_decoders_work_without_ffmpeg[webp] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_image_decoders_work_without_ffmpeg[gif] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_image_decoders_work_without_ffmpeg[avif] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_image_decoders_work_without_ffmpeg[image] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_ffmpeg_entry_points_raise_clear_error[VideoDecoder] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_ffmpeg_entry_points_raise_clear_error[AudioDecoder] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_ffmpeg_entry_points_raise_clear_error[WavDecoder] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_ffmpeg_entry_points_raise_clear_error[VideoEncoder] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_ffmpeg_entry_points_raise_clear_error[AudioEncoder] SKIPPEDe.) [ 90%] test/test_ffmpeg_optional.py::test_ffmpeg_entry_points_raise_clear_error[Encoder] SKIPPEDe.) [ 90%] test/test_frame_dataclasses.py::test_unpacking PASSED [ 90%] test/test_frame_dataclasses.py::test_frame_error PASSED [ 90%] test/test_frame_dataclasses.py::test_framebatch_error PASSED [ 90%] test/test_frame_dataclasses.py::test_framebatch_iteration PASSED [ 90%] test/test_frame_dataclasses.py::test_framebatch_indexing PASSED [ 90%] test/test_frame_dataclasses.py::test_audio_samples_error PASSED [ 90%] test/test_logging.py::TestLogging::test_cpp_logger[ALL] SKIPPED (CUDA not available.) [ 90%] test/test_logging.py::TestLogging::test_cpp_logger[OFF] SKIPPED (CUDA not available.) [ 90%] test/test_logging.py::TestLogging::test_cpp_logger[default] SKIPPED [ 90%] test/test_logging.py::TestLogging::test_python_logger[ALL] PASSED [ 90%] test/test_logging.py::TestLogging::test_python_logger[OFF] PASSED [ 90%] test/test_logging.py::TestLogging::test_get_set_log_level PASSED [ 90%] test/test_logging.py::TestLogging::test_bad_log_level PASSED [ 90%] test/test_metadata.py::test_get_metadata[get_container_metadata_from_header] PASSED [ 90%] test/test_metadata.py::test_get_metadata[metadata_getter1] PASSED [ 91%] test/test_metadata.py::test_get_metadata[metadata_getter2] PASSED [ 91%] test/test_metadata.py::test_get_metadata[metadata_getter3] PASSED [ 91%] test/test_metadata.py::test_get_metadata_audio_file[get_container_metadata_from_header] PASSED [ 91%] test/test_metadata.py::test_get_metadata_audio_file[metadata_getter1] PASSED [ 91%] test/test_metadata.py::test_rotation_metadata PASSED [ 91%] test/test_metadata.py::test_color_metadata PASSED [ 91%] test/test_metadata.py::test_repr PASSED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_seek_and_next[cpu] PASSED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_seek_and_next[cuda] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_seek_and_next[cuda:ffmpeg] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_seek_to_negative_pts[cpu] PASSED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_seek_to_negative_pts[cuda] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_seek_to_negative_pts[cuda:ffmpeg] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_at_pts[cpu] PASSED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_at_pts[cuda] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_at_pts[cuda:ffmpeg] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_at_index[cpu] PASSED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_at_index[cuda] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_at_index[cuda:ffmpeg] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_with_info_at_index[cpu] PASSED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_with_info_at_index[cuda] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frame_with_info_at_index[cuda:ffmpeg] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices[cpu] PASSED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices[cuda] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices[cuda:ffmpeg] SKIPPED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_unsorted_indices[cpu] PASSED [ 91%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_unsorted_indices[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_unsorted_indices[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_negative_indices[cpu] PASSED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_negative_indices[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_negative_indices[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_fail_on_invalid_negative_indices[cpu] PASSED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_fail_on_invalid_negative_indices[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_at_indices_fail_on_invalid_negative_indices[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_by_pts[cpu] PASSED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_by_pts[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_by_pts[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_pts_apis_against_index_ref[cpu] PASSED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_pts_apis_against_index_ref[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_pts_apis_against_index_ref[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_in_range[cpu] PASSED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_in_range[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_get_frames_in_range[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_throws_exception_at_eof[cpu] PASSED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_throws_exception_at_eof[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_throws_exception_at_eof[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_throws_exception_if_seek_too_far[cpu] PASSED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_throws_exception_if_seek_too_far[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_throws_exception_if_seek_too_far[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_compile_seek_and_next[cpu] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_compile_seek_and_next[cuda] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_compile_seek_and_next[cuda:ffmpeg] SKIPPED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file-cpu] PASSED [ 92%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file-cuda] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file-cuda:ffmpeg] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[tensor-cpu] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[tensor-cuda] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[tensor-cuda:ffmpeg] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[bytes-cpu] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[bytes-cuda] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[bytes-cuda:ffmpeg] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file_like_rawio-cpu] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file_like_rawio-cuda] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file_like_rawio-cuda:ffmpeg] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file_like_bufferedio-cpu] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file_like_bufferedio-cuda] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_create_decoder[file_like_bufferedio-cuda:ffmpeg] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_video_get_json_metadata PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_video_get_json_metadata_with_stream PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_get_ffmpeg_version PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_frame_pts_equality PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_seek_mode_custom_frame_mappings_fails PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_seek_mode_custom_frame_mappings[cpu] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_seek_mode_custom_frame_mappings[cuda] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_seek_mode_custom_frame_mappings[cuda:ffmpeg] SKIPPED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_color_conversion_library[filtergraph] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_color_conversion_library[swscale] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_color_conversion_library_with_dimension_order[filtergraph-NHWC] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_color_conversion_library_with_dimension_order[filtergraph-NCHW] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_color_conversion_library_with_dimension_order[swscale-NHWC] PASSED [ 93%] test/test_ops.py::TestVideoDecoderOps::test_color_conversion_library_with_dimension_order[swscale-NCHW] PASSED [ 94%] test/test_ops.py::TestVideoDecoderOps::test_cuda_decoder SKIPPED (CUDA not available.) [ 94%] test/test_ops.py::TestAudioDecoderOps::test_audio_bad_method[method0] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_audio_bad_method[method1] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_audio_bad_method[method2] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_audio_bad_method[method3] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_audio_bad_method[method4] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_audio_bad_method[method5] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_audio_bad_seek_mode PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_next[asset0] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_next[asset1] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset0-begin_to_end] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset0-begin_to_None] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset0-begin_to_beyond_end] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset0-at_frame_boundaries] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset0-not_at_frame_boundaries] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset1-begin_to_end] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset1-begin_to_None] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset1-begin_to_beyond_end] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset1-at_frame_boundaries] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_get_frames_by_pts_in_range_audio[asset1-not_at_frame_boundaries] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_decode_epsilon_range[asset0] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_decode_epsilon_range[asset1] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_decode_just_one_frame_at_boundaries[asset0] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_decode_just_one_frame_at_boundaries[asset1] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_decode_start_equal_stop[asset0] PASSED [ 94%] test/test_ops.py::TestAudioDecoderOps::test_decode_start_equal_stop[asset1] PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_multiple_calls[asset0] PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_multiple_calls[asset1] PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_pts[asset0] PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_pts[asset1] PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_sample_rate_conversion PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_decoding[cpu-0] PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_decoding[cpu-1024] PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_decoding[cuda-0] SKIPPED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_decoding[cuda-1024] SKIPPED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_decoding[cuda:ffmpeg-0] SKIPPED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_decoding[cuda:ffmpeg-1024] SKIPPED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_method_check_fails PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_read_fails PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_read_less_than_requested[half] PASSED [ 95%] test/test_ops.py::TestAudioDecoderOps::test_file_like_read_less_than_requested[minus_10] PASSED [ 95%] test/test_policy.py::test_policy[repeat_last-frame_indices0-expected_frame_indices0] PASSED [ 95%] test/test_policy.py::test_policy[repeat_last-frame_indices1-expected_frame_indices1] PASSED [ 95%] test/test_policy.py::test_policy[wrap-frame_indices2-expected_frame_indices2] PASSED [ 95%] test/test_policy.py::test_policy[wrap-frame_indices3-expected_frame_indices3] PASSED [ 95%] test/test_policy.py::test_error_policy PASSED [ 95%] test/test_samplers.py::test_index_based_sampler[1-clips_at_random_indices] PASSED [ 95%] test/test_samplers.py::test_index_based_sampler[1-clips_at_regular_indices] PASSED [ 95%] test/test_samplers.py::test_index_based_sampler[5-clips_at_random_indices] PASSED [ 95%] test/test_samplers.py::test_index_based_sampler[5-clips_at_regular_indices] PASSED [ 95%] test/test_samplers.py::test_time_based_sampler[None-sampler0] PASSED [ 95%] test/test_samplers.py::test_time_based_sampler[None-sampler1] PASSED [ 95%] test/test_samplers.py::test_time_based_sampler[3-sampler0] PASSED [ 96%] test/test_samplers.py::test_time_based_sampler[3-sampler1] PASSED [ 96%] test/test_samplers.py::test_against_ref[sampler0] PASSED [ 96%] test/test_samplers.py::test_against_ref[sampler1] PASSED [ 96%] test/test_samplers.py::test_against_ref[sampler2] PASSED [ 96%] test/test_samplers.py::test_against_ref[sampler3] PASSED [ 96%] test/test_samplers.py::test_sampling_range[sampler0-10-11-True] PASSED [ 96%] test/test_samplers.py::test_sampling_range[sampler1-10-12-False] PASSED [ 96%] test/test_samplers.py::test_sampling_range[sampler2-10-11-True] PASSED [ 96%] test/test_samplers.py::test_sampling_range[sampler3-10-12-False] PASSED [ 96%] test/test_samplers.py::test_sampling_range[sampler4-10.0-11.0-True] PASSED [ 96%] test/test_samplers.py::test_sampling_range[sampler5-10.0-12.0-False] PASSED [ 96%] test/test_samplers.py::test_sampling_range[sampler6-10-11-True] PASSED [ 96%] test/test_samplers.py::test_sampling_range[sampler7-10-12-False] PASSED [ 96%] test/test_samplers.py::test_sampling_range_negative[clips_at_random_indices] PASSED [ 96%] test/test_samplers.py::test_sampling_range_negative[clips_at_regular_indices] PASSED [ 96%] test/test_samplers.py::test_sampling_range_default_behavior_random_sampler[clips_at_random_indices] PASSED [ 96%] test/test_samplers.py::test_sampling_range_default_behavior_random_sampler[clips_at_random_timestamps] PASSED [ 96%] test/test_samplers.py::test_sampling_range_default_regular_sampler[sampler0] PASSED [ 96%] test/test_samplers.py::test_sampling_range_default_regular_sampler[sampler1] PASSED [ 96%] test/test_samplers.py::test_sampling_range_error_policy[sampler0] PASSED [ 96%] test/test_samplers.py::test_sampling_range_error_policy[sampler1] PASSED [ 96%] test/test_samplers.py::test_sampling_range_error_policy[sampler2] PASSED [ 96%] test/test_samplers.py::test_sampling_range_error_policy[sampler3] PASSED [ 96%] test/test_samplers.py::test_random_sampler_randomness[clips_at_random_indices] PASSED [ 96%] test/test_samplers.py::test_random_sampler_randomness[clips_at_random_timestamps] PASSED [ 96%] test/test_samplers.py::test_sample_at_regular_indices_num_clips_large[10-10] PASSED [ 96%] test/test_samplers.py::test_sample_at_regular_indices_num_clips_large[50-10] PASSED [ 97%] test/test_samplers.py::test_sampler_errors[clips_at_random_indices] PASSED [ 97%] test/test_samplers.py::test_sampler_errors[clips_at_regular_indices] PASSED [ 97%] test/test_samplers.py::test_sampler_errors[sampler2] PASSED [ 97%] test/test_samplers.py::test_sampler_errors[clips_at_random_timestamps] PASSED [ 97%] test/test_samplers.py::test_index_based_samplers_errors[clips_at_random_indices] PASSED [ 97%] test/test_samplers.py::test_index_based_samplers_errors[clips_at_regular_indices] PASSED [ 97%] test/test_samplers.py::test_time_based_sampler_errors[clips_at_random_timestamps] PASSED [ 97%] test/test_samplers.py::test_time_based_sampler_errors[sampler1] PASSED [ 97%] test/test_samplers.py::test_build_all_clips_indices[clip_start_indices0-1-repeat_last-expected_all_clips_indices0] PASSED [ 97%] test/test_samplers.py::test_build_all_clips_indices[clip_start_indices1-2-repeat_last-expected_all_clips_indices1] PASSED [ 97%] test/test_samplers.py::test_build_all_clips_indices[clip_start_indices2-1-wrap-expected_all_clips_indices2] PASSED [ 97%] test/test_samplers.py::test_build_all_clips_indices[clip_start_indices3-2-wrap-expected_all_clips_indices3] PASSED [ 97%] test/test_samplers.py::test_build_all_clips_timestamps[clip_start_seconds0-1.5-repeat_last-expected_all_clips_timestamps0] PASSED [ 97%] test/test_samplers.py::test_build_all_clips_timestamps[clip_start_seconds1-1.5-wrap-expected_all_clips_timestamps1] PASSED [ 97%] test/test_samplers.py::test_floating_point_precision_in_clips_at_regular_timestamps[repeat_last] PASSED [ 97%] test/test_samplers.py::test_floating_point_precision_in_clips_at_regular_timestamps[wrap] PASSED [ 97%] test/test_samplers.py::test_floating_point_precision_in_clips_at_regular_timestamps[error] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video0-1.5-1.31] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video0-0.5-0.71] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video0-0.7-1.31] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video0-1.5-0.71] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video0-1.0-1.0] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video0-2.0-2.0] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video1-1.5-1.31] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video1-0.5-0.71] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video1-0.7-1.31] PASSED [ 97%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video1-1.5-0.71] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video1-1.0-1.0] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_torchvision[video1-2.0-2.0] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_fails PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_resize_non_32_aligned_input_width PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_torchvision[video0-0.5-0.5] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_torchvision[video0-0.25-0.1] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_torchvision[video0-1.0-1.0] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_torchvision[video0-0.15-0.75] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_torchvision[video1-0.5-0.5] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_torchvision[video1-0.25-0.1] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_torchvision[video1-1.0-1.0] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_torchvision[video1-0.15-0.75] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_center_crop_fails PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[0-video0-0.5-0.5] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[0-video0-0.25-0.1] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[0-video0-1.0-1.0] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[0-video0-0.15-0.75] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[0-video1-0.5-0.5] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[0-video1-0.25-0.1] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[0-video1-1.0-1.0] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[0-video1-0.15-0.75] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[1234-video0-0.5-0.5] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[1234-video0-0.25-0.1] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[1234-video0-1.0-1.0] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[1234-video0-0.15-0.75] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[1234-video1-0.5-0.5] PASSED [ 98%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[1234-video1-0.25-0.1] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[1234-video1-1.0-1.0] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_torchvision[1234-video1-0.15-0.75] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_nhwc[0.25-0.1] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_nhwc[0.25-0.25] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_fails[must not specify padding-params0] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_fails[must not specify pad_if_needed-params1] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_fails[fill must be 0-params2] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_fails[padding_mode must be constant-params3] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_reusable_objects[0] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_random_crop_reusable_objects[314] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_transform_pipeline[Resize-RandomCrop0] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_transform_pipeline[Resize-RandomCrop1] PASSED [ 99%] test/test_transform_ops.py::TestPublicVideoDecoderTransformOps::test_transform_fails PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_color_conversion_library[video0] PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_color_conversion_library[video1] PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_color_conversion_library[video2] PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_color_conversion_library_with_generated_videos[128-30] PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_color_conversion_library_with_generated_videos[128-32] PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_color_conversion_library_with_generated_videos[128-300] PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_scaling_on_cuda_fails SKIPPED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_transform_fails PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_resize_ffmpeg PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_resize_transform_fails PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_crop_transform PASSED [ 99%] test/test_transform_ops.py::TestCoreVideoDecoderTransformOps::test_crop_transform_fails PASSED [ 99%] test/test_version.py::test_version PASSED [100%] =================================== FAILURES =================================== ____ TestEncoder.test_audio_against_cli[to_file-mp3-8000-None-None-asset1] _____ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = None, num_channels = None, sample_rate = 8000, format = 'mp3' method = 'to_file' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file0') capfd = <_pytest.capture.CaptureFixture object at 0x7fb75a07b9d0> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 317 / 32000 (1.0%) E Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) E Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [AVFormatContext @ 0x7fb6c82178d0] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file0/test.mp3' for reading [file @ 0x7fb75b06dd60] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb6c82178d0] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb6c82178d0] pad 576 832 [mp3 @ 0x7fb6c82178d0] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb6c82178d0] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb6c82178d0] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae21fc0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae21fc0] skip whole frame, skip left: 529 [mp3 @ 0x7fb6c82178d0] All info found [mp3 @ 0x7fb6c82178d0] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae21fc0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae21fc0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae21fc0] skip 529/576 samples [mp3 @ 0x7fb6c82178d0] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae21fc0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae21fc0] discard 303/576 samples [AVIOContext @ 0x7fb74b49e960] Statistics: 4436 bytes read, 0 seeks [AVFormatContext @ 0x7fb6c82178d0] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file0/ffmpeg_output.mp3' for reading [file @ 0x7fb75b471d90] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb6c82178d0] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb6c82178d0] pad 576 832 [mp3 @ 0x7fb6c82178d0] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb6c82178d0] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb6c82178d0] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3 @ 0x7fb6c82178d0] All info found [mp3 @ 0x7fb6c82178d0] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae5f3f0] skip 529/576 samples [mp3 @ 0x7fb6c82178d0] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae5f3f0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae5f3f0] discard 303/576 samples [AVIOContext @ 0x7fb74b49e960] Statistics: 4436 bytes read, 0 seeks ______ TestEncoder.test_audio_against_cli[to_file-mp3-8000-None-0-asset1] ______ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = 0, num_channels = None, sample_rate = 8000, format = 'mp3' method = 'to_file' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file1') capfd = <_pytest.capture.CaptureFixture object at 0x7fb752e2fce0> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 317 / 32000 (1.0%) E Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) E Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [AVFormatContext @ 0x7fb7581d9890] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file1/test.mp3' for reading [file @ 0x7fb750533610] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb7581d9890] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb7581d9890] pad 576 832 [mp3 @ 0x7fb7581d9890] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb7581d9890] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb7581d9890] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae21fc0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae21fc0] skip whole frame, skip left: 529 [mp3 @ 0x7fb7581d9890] All info found [mp3 @ 0x7fb7581d9890] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae21fc0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae21fc0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae21fc0] skip 529/576 samples [mp3 @ 0x7fb7581d9890] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae21fc0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae21fc0] discard 303/576 samples [AVIOContext @ 0x7fb753179310] Statistics: 4436 bytes read, 0 seeks [AVFormatContext @ 0x7fb7581d9890] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file1/ffmpeg_output.mp3' for reading [file @ 0x7fb75b471c80] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb7581d9890] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb7581d9890] pad 576 832 [mp3 @ 0x7fb7581d9890] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb7581d9890] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb7581d9890] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3 @ 0x7fb7581d9890] All info found [mp3 @ 0x7fb7581d9890] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae5f3f0] skip 529/576 samples [mp3 @ 0x7fb7581d9890] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae5f3f0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae5f3f0] discard 303/576 samples [AVIOContext @ 0x7fb753179310] Statistics: 4436 bytes read, 0 seeks ______ TestEncoder.test_audio_against_cli[to_file-mp3-8000-1-None-asset1] ______ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = None, num_channels = 1, sample_rate = 8000, format = 'mp3' method = 'to_file' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file2') capfd = <_pytest.capture.CaptureFixture object at 0x7fb752d9cc50> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 317 / 32000 (1.0%) E Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) E Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [AVFormatContext @ 0x7fb7589c5c10] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file2/test.mp3' for reading [file @ 0x7fb75b064340] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb7589c5c10] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb7589c5c10] pad 576 832 [mp3 @ 0x7fb7589c5c10] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb7589c5c10] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb7589c5c10] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae21fc0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae21fc0] skip whole frame, skip left: 529 [mp3 @ 0x7fb7589c5c10] All info found [mp3 @ 0x7fb7589c5c10] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae21fc0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae21fc0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae21fc0] skip 529/576 samples [mp3 @ 0x7fb7589c5c10] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae21fc0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae21fc0] discard 303/576 samples [AVIOContext @ 0x7fb753179310] Statistics: 4436 bytes read, 0 seeks [AVFormatContext @ 0x7fb7589c5c10] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file2/ffmpeg_output.mp3' for reading [file @ 0x7fb75b4aa120] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb7589c5c10] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb7589c5c10] pad 576 832 [mp3 @ 0x7fb7589c5c10] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb7589c5c10] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb7589c5c10] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3 @ 0x7fb7589c5c10] All info found [mp3 @ 0x7fb7589c5c10] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae5f3f0] skip 529/576 samples [mp3 @ 0x7fb7589c5c10] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae5f3f0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae5f3f0] discard 303/576 samples [AVIOContext @ 0x7fb753179310] Statistics: 4436 bytes read, 0 seeks _______ TestEncoder.test_audio_against_cli[to_file-mp3-8000-1-0-asset1] ________ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = 0, num_channels = 1, sample_rate = 8000, format = 'mp3' method = 'to_file' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file3') capfd = <_pytest.capture.CaptureFixture object at 0x7fb752ee2990> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 317 / 32000 (1.0%) E Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) E Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [AVFormatContext @ 0x7fb75ade9720] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file3/test.mp3' for reading [file @ 0x7fb7507e0910] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb75ade9720] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb75ade9720] pad 576 832 [mp3 @ 0x7fb75ade9720] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb75ade9720] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb75ade9720] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3 @ 0x7fb75ade9720] All info found [mp3 @ 0x7fb75ade9720] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae5f3f0] skip 529/576 samples [mp3 @ 0x7fb75ade9720] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae5f3f0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae5f3f0] discard 303/576 samples [AVIOContext @ 0x7fb753179310] Statistics: 4436 bytes read, 0 seeks [AVFormatContext @ 0x7fb75ade9720] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file3/ffmpeg_output.mp3' for reading [file @ 0x7fb662382d10] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb75ade9720] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb75ade9720] pad 576 832 [mp3 @ 0x7fb75ade9720] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb75ade9720] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb75ade9720] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb74be64c70] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74be64c70] skip whole frame, skip left: 529 [mp3 @ 0x7fb75ade9720] All info found [mp3 @ 0x7fb75ade9720] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb74be64c70] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74be64c70] skip whole frame, skip left: 529 [mp3float @ 0x7fb74be64c70] skip 529/576 samples [mp3 @ 0x7fb75ade9720] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb74be64c70] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb74be64c70] discard 303/576 samples [AVIOContext @ 0x7fb753179310] Statistics: 4436 bytes read, 0 seeks _____ TestEncoder.test_audio_against_cli[to_file-mp3-32000-2-44100-asset1] _____ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = 44100, num_channels = 2, sample_rate = 32000, format = 'mp3' method = 'to_file' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file4') capfd = <_pytest.capture.CaptureFixture object at 0x7fb752886bd0> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 330 / 256000 (0.1%) E Greatest absolute difference: 0.002061620354652405 at index (0, 116394) (up to 0.001 allowed) E Greatest relative difference: 0.7102214097976685 at index (0, 116418) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [AVFormatContext @ 0x7fb759584ba0] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file4/test.mp3' for reading [file @ 0x7fb7589c6470] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb759584ba0] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb759584ba0] pad 576 1600 [mp3 @ 0x7fb759584ba0] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb759584ba0] Before avformat_find_stream_info() pos: 260 bytes read:20600 seeks:0 nb_streams:1 [mp3 @ 0x7fb759584ba0] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb7505366b0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb7505366b0] skip 1105/1152 samples [mp3 @ 0x7fb759584ba0] All info found [mp3 @ 0x7fb759584ba0] After avformat_find_stream_info() pos: 9476 bytes read:20600 seeks:0 frames:50 [mp3float @ 0x7fb7505366b0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb7505366b0] skip 1105/1152 samples [mp3 @ 0x7fb759584ba0] demuxer injecting skip 0 / discard 1071 [mp3float @ 0x7fb7505366b0] skip 0 / discard 1071 samples due to side data [mp3float @ 0x7fb7505366b0] discard 1071/1152 samples [AVIOContext @ 0x7fb75b4016a0] Statistics: 20600 bytes read, 0 seeks [AVFormatContext @ 0x7fb759584ba0] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file4/ffmpeg_output.mp3' for reading [file @ 0x7fb7589c3540] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb759584ba0] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb759584ba0] pad 576 1600 [mp3 @ 0x7fb759584ba0] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb759584ba0] Before avformat_find_stream_info() pos: 260 bytes read:20600 seeks:0 nb_streams:1 [mp3 @ 0x7fb759584ba0] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip 1105/1152 samples [mp3 @ 0x7fb759584ba0] All info found [mp3 @ 0x7fb759584ba0] After avformat_find_stream_info() pos: 9476 bytes read:20600 seeks:0 frames:50 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip 1105/1152 samples [mp3 @ 0x7fb759584ba0] demuxer injecting skip 0 / discard 1071 [mp3float @ 0x7fb75ae5f3f0] skip 0 / discard 1071 samples due to side data [mp3float @ 0x7fb75ae5f3f0] discard 1071/1152 samples [AVIOContext @ 0x7fb75b4016a0] Statistics: 20600 bytes read, 0 seeks __ TestEncoder.test_audio_against_cli[to_file_like-mp3-8000-None-None-asset1] __ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = None, num_channels = None, sample_rate = 8000, format = 'mp3' method = 'to_file_like' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file5') capfd = <_pytest.capture.CaptureFixture object at 0x7fb7509688d0> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 317 / 32000 (1.0%) E Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) E Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [mp3 @ 0x7fb75b4e8340] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb75b4e8340] pad 576 832 [mp3 @ 0x7fb75b4e8340] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb75b4e8340] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb75b4e8340] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3 @ 0x7fb75b4e8340] All info found [mp3 @ 0x7fb75b4e8340] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae5f3f0] skip 529/576 samples [mp3 @ 0x7fb75b4e8340] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae5f3f0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae5f3f0] discard 303/576 samples [AVFormatContext @ 0x7fb75b4e8340] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file5/ffmpeg_output.mp3' for reading [file @ 0x7fb74b212fe0] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb75b4e8340] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb75b4e8340] pad 576 832 [mp3 @ 0x7fb75b4e8340] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb75b4e8340] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb75b4e8340] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb74be64c70] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74be64c70] skip whole frame, skip left: 529 [mp3 @ 0x7fb75b4e8340] All info found [mp3 @ 0x7fb75b4e8340] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb74be64c70] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74be64c70] skip whole frame, skip left: 529 [mp3float @ 0x7fb74be64c70] skip 529/576 samples [mp3 @ 0x7fb75b4e8340] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb74be64c70] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb74be64c70] discard 303/576 samples [AVIOContext @ 0x7fb75adfdb00] Statistics: 4436 bytes read, 0 seeks ___ TestEncoder.test_audio_against_cli[to_file_like-mp3-8000-None-0-asset1] ____ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = 0, num_channels = None, sample_rate = 8000, format = 'mp3' method = 'to_file_like' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file6') capfd = <_pytest.capture.CaptureFixture object at 0x7fb6daa96250> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 317 / 32000 (1.0%) E Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) E Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [mp3 @ 0x7fb65f1beae0] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb65f1beae0] pad 576 832 [mp3 @ 0x7fb65f1beae0] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb65f1beae0] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb65f1beae0] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae09550] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae09550] skip whole frame, skip left: 529 [mp3 @ 0x7fb65f1beae0] All info found [mp3 @ 0x7fb65f1beae0] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae09550] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae09550] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae09550] skip 529/576 samples [mp3 @ 0x7fb65f1beae0] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae09550] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae09550] discard 303/576 samples [AVFormatContext @ 0x7fb65f1beae0] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file6/ffmpeg_output.mp3' for reading [file @ 0x7fb65f1c04f0] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb65f1beae0] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb65f1beae0] pad 576 832 [mp3 @ 0x7fb65f1beae0] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb65f1beae0] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb65f1beae0] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3 @ 0x7fb65f1beae0] All info found [mp3 @ 0x7fb65f1beae0] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb75ae5f3f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75ae5f3f0] skip whole frame, skip left: 529 [mp3float @ 0x7fb75ae5f3f0] skip 529/576 samples [mp3 @ 0x7fb65f1beae0] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb75ae5f3f0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb75ae5f3f0] discard 303/576 samples [AVIOContext @ 0x7fb74b2bde80] Statistics: 4436 bytes read, 0 seeks ___ TestEncoder.test_audio_against_cli[to_file_like-mp3-8000-1-None-asset1] ____ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = None, num_channels = 1, sample_rate = 8000, format = 'mp3' method = 'to_file_like' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file7') capfd = <_pytest.capture.CaptureFixture object at 0x7fb6daa96cd0> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 317 / 32000 (1.0%) E Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) E Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [mp3 @ 0x7fb66c44c050] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb66c44c050] pad 576 832 [mp3 @ 0x7fb66c44c050] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb66c44c050] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb66c44c050] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb7506839f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb7506839f0] skip whole frame, skip left: 529 [mp3 @ 0x7fb66c44c050] All info found [mp3 @ 0x7fb66c44c050] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb7506839f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb7506839f0] skip whole frame, skip left: 529 [mp3float @ 0x7fb7506839f0] skip 529/576 samples [mp3 @ 0x7fb66c44c050] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb7506839f0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb7506839f0] discard 303/576 samples [AVFormatContext @ 0x7fb66c44c050] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file7/ffmpeg_output.mp3' for reading [file @ 0x7fb74b04a6b0] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb66c44c050] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb66c44c050] pad 576 832 [mp3 @ 0x7fb66c44c050] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb66c44c050] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb66c44c050] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb74b56f020] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74b56f020] skip whole frame, skip left: 529 [mp3 @ 0x7fb66c44c050] All info found [mp3 @ 0x7fb66c44c050] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb74b56f020] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74b56f020] skip whole frame, skip left: 529 [mp3float @ 0x7fb74b56f020] skip 529/576 samples [mp3 @ 0x7fb66c44c050] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb74b56f020] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb74b56f020] discard 303/576 samples [AVIOContext @ 0x7fb66236f160] Statistics: 4436 bytes read, 0 seeks _____ TestEncoder.test_audio_against_cli[to_file_like-mp3-8000-1-0-asset1] _____ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = 0, num_channels = 1, sample_rate = 8000, format = 'mp3' method = 'to_file_like' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file8') capfd = <_pytest.capture.CaptureFixture object at 0x7fb6daa97350> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 317 / 32000 (1.0%) E Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) E Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [mp3 @ 0x7fb74b40e190] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb74b40e190] pad 576 832 [mp3 @ 0x7fb74b40e190] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb74b40e190] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb74b40e190] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb74b56f020] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74b56f020] skip whole frame, skip left: 529 [mp3 @ 0x7fb74b40e190] All info found [mp3 @ 0x7fb74b40e190] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb74b56f020] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74b56f020] skip whole frame, skip left: 529 [mp3float @ 0x7fb74b56f020] skip 529/576 samples [mp3 @ 0x7fb74b40e190] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb74b56f020] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb74b56f020] discard 303/576 samples [AVFormatContext @ 0x7fb74b40e190] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file8/ffmpeg_output.mp3' for reading [file @ 0x7fb74b04a6b0] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb74b40e190] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb74b40e190] pad 576 832 [mp3 @ 0x7fb74b40e190] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb74b40e190] Before avformat_find_stream_info() pos: 260 bytes read:4436 seeks:0 nb_streams:1 [mp3 @ 0x7fb74b40e190] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb74b2ad8b0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74b2ad8b0] skip whole frame, skip left: 529 [mp3 @ 0x7fb74b40e190] All info found [mp3 @ 0x7fb74b40e190] After avformat_find_stream_info() pos: 4356 bytes read:4436 seeks:0 frames:50 [mp3float @ 0x7fb74b2ad8b0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74b2ad8b0] skip whole frame, skip left: 529 [mp3float @ 0x7fb74b2ad8b0] skip 529/576 samples [mp3 @ 0x7fb74b40e190] demuxer injecting skip 0 / discard 303 [mp3float @ 0x7fb74b2ad8b0] skip 0 / discard 303 samples due to side data [mp3float @ 0x7fb74b2ad8b0] discard 303/576 samples [AVIOContext @ 0x7fb75af3b4b0] Statistics: 4436 bytes read, 0 seeks __ TestEncoder.test_audio_against_cli[to_file_like-mp3-32000-2-44100-asset1] ___ self = asset = TestAudio(filename='sine_mono_s32.wav', default_stream_index=0, stream_infos={0: TestAudioStreamInfo(sample_rate=16000, num_channels=1, duration_seconds=4, num_frames=63, sample_format='s32')}, frames={0: {0: TestFrameInfo(pts_seconds=0.0, duration_seconds=0.064), 1: TestFrameInfo(pts_seconds=0.064, duration_seconds=0.064), 2: TestFrameInfo(pts_seconds=0.128, duration_seconds=0.064), 3: TestFrameInfo(pts_seconds=0.192, duration_seconds=0.064), 4: TestFrameInfo(pts_seconds=0.256, duration_seconds=0.064), 5: TestFrameInfo(pts_seconds=0.32, duration_seconds=0.064), 6: TestFrameInfo(pts_seconds=0.384, duration_seconds=0.064), 7: TestFrameInfo(pts_seconds=0.448, duration_seconds=0.064), 8: TestFrameInfo(pts_seconds=0.512, duration_seconds=0.064), 9: TestFrameInfo(pts_seconds=0.576, duration_seconds=0.064), 10: TestFrameInfo(pts_seconds=0.64, duration_seconds=0.064), 11: TestFrameInfo(pts_seconds=0.704, duration_seconds=0.064), 12: TestFrameInfo(pts_seconds=0.768, duration_seconds=0.064), 13: TestFrameInfo(pts_seconds=0.832, duration_seconds=0.064), 14: TestFrameInfo(pts_seconds=0.896, duration_seconds=0.064), 15: TestFrameInfo(pts_seconds=0.96, duration_seconds=0.064), 16: TestFrameInfo(pts_seconds=1.024, duration_seconds=0.064), 17: TestFrameInfo(pts_seconds=1.088, duration_seconds=0.064), 18: TestFrameInfo(pts_seconds=1.152, duration_seconds=0.064), 19: TestFrameInfo(pts_seconds=1.216, duration_seconds=0.064), 20: TestFrameInfo(pts_seconds=1.28, duration_seconds=0.064), 21: TestFrameInfo(pts_seconds=1.344, duration_seconds=0.064), 22: TestFrameInfo(pts_seconds=1.408, duration_seconds=0.064), 23: TestFrameInfo(pts_seconds=1.472, duration_seconds=0.064), 24: TestFrameInfo(pts_seconds=1.536, duration_seconds=0.064), 25: TestFrameInfo(pts_seconds=1.6, duration_seconds=0.064), 26: TestFrameInfo(pts_seconds=1.664, duration_seconds=0.064), 27: TestFrameInfo(pts_seconds=1.728, duration_seconds=0.064), 28: TestFrameInfo(pts_seconds=1.792, duration_seconds=0.064), 29: TestFrameInfo(pts_seconds=1.856, duration_seconds=0.064), 30: TestFrameInfo(pts_seconds=1.92, duration_seconds=0.064), 31: TestFrameInfo(pts_seconds=1.984, duration_seconds=0.064), 32: TestFrameInfo(pts_seconds=2.048, duration_seconds=0.064), 33: TestFrameInfo(pts_seconds=2.112, duration_seconds=0.064), 34: TestFrameInfo(pts_seconds=2.176, duration_seconds=0.064), 35: TestFrameInfo(pts_seconds=2.24, duration_seconds=0.064), 36: TestFrameInfo(pts_seconds=2.304, duration_seconds=0.064), 37: TestFrameInfo(pts_seconds=2.368, duration_seconds=0.064), 38: TestFrameInfo(pts_seconds=2.432, duration_seconds=0.064), 39: TestFrameInfo(pts_seconds=2.496, duration_seconds=0.064), 40: TestFrameInfo(pts_seconds=2.56, duration_seconds=0.064), 41: TestFrameInfo(pts_seconds=2.624, duration_seconds=0.064), 42: TestFrameInfo(pts_seconds=2.688, duration_seconds=0.064), 43: TestFrameInfo(pts_seconds=2.752, duration_seconds=0.064), 44: TestFrameInfo(pts_seconds=2.816, duration_seconds=0.064), 45: TestFrameInfo(pts_seconds=2.88, duration_seconds=0.064), 46: TestFrameInfo(pts_seconds=2.944, duration_seconds=0.064), 47: TestFrameInfo(pts_seconds=3.008, duration_seconds=0.064), 48: TestFrameInfo(pts_seconds=3.072, duration_seconds=0.064), 49: TestFrameInfo(pts_seconds=3.136, duration_seconds=0.064), 50: TestFrameInfo(pts_seconds=3.2, duration_seconds=0.064), 51: TestFrameInfo(pts_seconds=3.264, duration_seconds=0.064), 52: TestFrameInfo(pts_seconds=3.328, duration_seconds=0.064), 53: TestFrameInfo(pts_seconds=3.392, duration_seconds=0.064), 54: TestFrameInfo(pts_seconds=3.456, duration_seconds=0.064), 55: TestFrameInfo(pts_seconds=3.52, duration_seconds=0.064), 56: TestFrameInfo(pts_seconds=3.584, duration_seconds=0.064), 57: TestFrameInfo(pts_seconds=3.648, duration_seconds=0.064), 58: TestFrameInfo(pts_seconds=3.712, duration_seconds=0.064), 59: TestFrameInfo(pts_seconds=3.776, duration_seconds=0.064), 60: TestFrameInfo(pts_seconds=3.84, duration_seconds=0.064), 61: TestFrameInfo(pts_seconds=3.904, duration_seconds=0.064), 62: TestFrameInfo(pts_seconds=3.968, duration_seconds=0.032)}}, _custom_frame_mappings_data={}, _reference_frames={0: [tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2019]]), tensor([[ 0.1607, 0.1148, 0.0654, ..., 0.0235, -0.0282, -0.0792]]), tensor([[-0.1277, -0.1725, -0.2121, ..., -0.2399, -0.2673, -0.2867]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0608, -0.0094, 0.0423]]), tensor([[0.0927, 0.1404, 0.1839, ..., 0.2154, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1801, 0.1362, ..., 0.0971, 0.0469, -0.0047]]), tensor([[-0.0562, -0.1061, -0.1527, ..., -0.1876, -0.2250, -0.2558]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2427, -0.2088, -0.1686, ..., -0.1320, -0.0837, -0.0330]]), tensor([[0.0189, 0.0701, 0.1192, ..., 0.1568, 0.1984, 0.2341]]), tensor([[0.2629, 0.2838, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2629, 0.2341, 0.1984, ..., 0.1647, 0.1191, 0.0700]]), tensor([[ 0.0188, -0.0329, -0.0837, ..., -0.1235, -0.1687, -0.2088]]), tensor([[-0.2427, -0.2694, -0.2881, ..., -0.2970, -0.2999, -0.2938]]), tensor([[-0.2789, -0.2558, -0.2250, ..., -0.1948, -0.1527, -0.1060]]), tensor([[-0.0562, -0.0047, 0.0469, ..., 0.0882, 0.1362, 0.1801]]), tensor([[0.2187, 0.2508, 0.2754, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2906, 0.2734, 0.2481, ..., 0.2219, 0.1839, 0.1403]]), tensor([[ 0.0927, 0.0423, -0.0094, ..., -0.0515, -0.1016, -0.1487]]), tensor([[-0.1913, -0.2282, -0.2582, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2673, ..., -0.2454, -0.2121, -0.1725]]), tensor([[-0.1277, -0.0791, -0.0281, ..., 0.0143, 0.0655, 0.1147]]), tensor([[0.1608, 0.2019, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2823, ..., 0.2651, 0.2370, 0.2018]]), tensor([[ 0.1608, 0.1147, 0.0654, ..., 0.0236, -0.0283, -0.0793]]), tensor([[-0.1277, -0.1725, -0.2122, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2582, -0.2281]]), tensor([[-0.1912, -0.1486, -0.1015, ..., -0.0607, -0.0094, 0.0422]]), tensor([[0.0928, 0.1403, 0.1840, ..., 0.2156, 0.2481, 0.2734]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2187, 0.1800, 0.1362, ..., 0.0972, 0.0468, -0.0048]]), tensor([[-0.0562, -0.1062, -0.1527, ..., -0.1875, -0.2251, -0.2559]]), tensor([[-0.2789, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1685, ..., -0.1319, -0.0837, -0.0329]]), tensor([[0.0189, 0.0700, 0.1192, ..., 0.1569, 0.1984, 0.2342]]), tensor([[0.2629, 0.2839, 0.2963, ..., 0.3000, 0.2963, 0.2838]]), tensor([[0.2628, 0.2341, 0.1984, ..., 0.1645, 0.1191, 0.0699]]), tensor([[ 0.0189, -0.0330, -0.0837, ..., -0.1234, -0.1688, -0.2089]]), tensor([[-0.2427, -0.2695, -0.2881, ..., -0.2970, -0.2998, -0.2938]]), tensor([[-0.2789, -0.2559, -0.2250, ..., -0.1947, -0.1526, -0.1059]]), tensor([[-0.0560, -0.0047, 0.0471, ..., 0.0883, 0.1362, 0.1803]]), tensor([[0.2187, 0.2507, 0.2753, ..., 0.2894, 0.2987, 0.2991]]), tensor([[0.2905, 0.2734, 0.2481, ..., 0.2218, 0.1838, 0.1403]]), tensor([[ 0.0926, 0.0422, -0.0094, ..., -0.0515, -0.1017, -0.1486]]), tensor([[-0.1912, -0.2281, -0.2583, ..., -0.2772, -0.2928, -0.2997]]), tensor([[-0.2976, -0.2867, -0.2672, ..., -0.2454, -0.2123, -0.1726]]), tensor([[-0.1276, -0.0790, -0.0283, ..., 0.0143, 0.0656, 0.1150]]), tensor([[0.1609, 0.2021, 0.2370, ..., 0.2607, 0.2823, 0.2955]]), tensor([[0.3000, 0.2955, 0.2822, ..., 0.2652, 0.2369, 0.2020]]), tensor([[ 0.1606, 0.1146, 0.0652, ..., 0.0234, -0.0284, -0.0791]]), tensor([[-0.1277, -0.1725, -0.2123, ..., -0.2399, -0.2673, -0.2868]]), tensor([[-0.2976, -0.2997, -0.2928, ..., -0.2806, -0.2581, -0.2279]]), tensor([[-0.1912, -0.1486, -0.1016, ..., -0.0609, -0.0094, 0.0423]]), tensor([[0.0930, 0.1404, 0.1839, ..., 0.2154, 0.2483, 0.2735]]), tensor([[0.2906, 0.2991, 0.2987, ..., 0.2917, 0.2753, 0.2507]]), tensor([[ 0.2186, 0.1801, 0.1361, ..., 0.0972, 0.0469, -0.0048]]), tensor([[-0.0563, -0.1061, -0.1528, ..., -0.1878, -0.2251, -0.2558]]), tensor([[-0.2790, -0.2938, -0.2999, ..., -0.2982, -0.2881, -0.2694]]), tensor([[-0.2426, -0.2087, -0.1687, ..., -0.1316, -0.0836, -0.0328]]), tensor([[0.0190, 0.0702, 0.1190, ..., 0.1568, 0.1985, 0.2340]]), tensor([[ 2.6297e-01, 2.8389e-01, 2.9634e-01, 2.9996e-01, 2.9470e-01, 2.8064e-01, 2.5823e-01, 2.2793e-01, 1.9098e-01, 1.4834e-01, 1.0156e-01, 5.1493e-02, -1.0579e-04, -5.1413e-02, -1.0176e-01, -1.4878e-01, -1.9137e-01, -2.2806e-01, -2.5819e-01, -2.8061e-01, -2.9468e-01, -2.9996e-01, -2.9626e-01, -2.8372e-01, -2.6287e-01, -2.3409e-01, -1.9833e-01, -1.5641e-01, -1.1033e-01, -6.0700e-02, -9.2651e-03, 4.2446e-02, 9.2613e-02, 1.4031e-01, 1.8406e-01, 2.2186e-01, 2.5329e-01, 2.7716e-01, 2.9284e-01, 2.9967e-01, 2.9763e-01, 2.8663e-01, 2.6726e-01, 2.3984e-01, 2.0527e-01, 1.6458e-01, 1.1926e-01, 7.0132e-02, 1.8627e-02, -3.3149e-02, -8.3655e-02, -1.3196e-01, -1.7633e-01, -2.1545e-01, -2.4814e-01, -2.7356e-01, -2.9067e-01, -2.9908e-01, -2.9866e-01, -2.8933e-01, -2.7139e-01, -2.4552e-01, -2.1200e-01, -1.7233e-01, -1.2753e-01, -7.9209e-02, -2.8262e-02, 2.3527e-02, 7.4615e-02, 1.2348e-01, 1.6866e-01, 2.0903e-01, 2.4276e-01, 2.6945e-01, 2.8812e-01, 2.9820e-01, 2.9940e-01, 2.9167e-01, 2.7525e-01, 2.5078e-01, 2.1873e-01, 1.8015e-01, 1.3595e-01, 8.8209e-02, 3.7578e-02, -1.4174e-02, -6.5503e-02, -1.1488e-01, -1.6083e-01, -2.0221e-01, -2.3713e-01, -2.6520e-01, -2.8537e-01, -2.9703e-01, -2.9985e-01, -2.9378e-01, -2.7884e-01, -2.5580e-01, -2.2503e-01, -1.8756e-01, -1.4449e-01, -9.7399e-02, -4.6856e-02, 5.0994e-03, 5.6326e-02, 1.0617e-01, 1.5284e-01, 1.9496e-01, 2.3109e-01, 2.6069e-01, 2.8234e-01, 2.9558e-01, 3.0000e-01, 2.9553e-01, 2.8226e-01, 2.6057e-01, 2.3112e-01, 1.9478e-01, 1.5264e-01, 1.0594e-01, 5.6089e-02, 4.5655e-03, -4.7094e-02, -9.7350e-02, -1.4471e-01, -1.8775e-01, -2.2500e-01, -2.5578e-01, -2.7893e-01, -2.9377e-01, -2.9985e-01, -2.9700e-01, -2.8530e-01, -2.6509e-01, -2.3716e-01, -2.0181e-01, -1.6038e-01, -1.1466e-01, -6.5267e-02, -1.3933e-02, 3.7817e-02, 8.8159e-02, 1.3616e-01, 1.8035e-01, 2.1889e-01, 2.5075e-01, 2.7534e-01, 2.9172e-01, 2.9939e-01, 2.9821e-01, 2.8806e-01, 2.6922e-01, 2.4261e-01, 2.0865e-01, 1.6846e-01, 1.2353e-01, 7.4666e-02, 2.3287e-02, -2.8502e-02, -7.9159e-02, -1.2775e-01, -1.7253e-01, -2.1217e-01, -2.4532e-01, -2.7149e-01, -2.8940e-01, -2.9868e-01, -2.9909e-01, -2.9053e-01, -2.7334e-01, -2.4801e-01, -2.1528e-01, -1.7614e-01, -1.3174e-01, -8.3705e-02, -3.2909e-02, 1.8867e-02, 7.0082e-02, 1.1921e-01, 1.6478e-01, 2.0544e-01, 2.3981e-01, 2.6723e-01, 2.8670e-01, 2.9766e-01, 2.9966e-01, 2.9273e-01, 2.7707e-01, 2.5332e-01, 2.2190e-01, 1.8387e-01, 1.4010e-01, 9.2663e-02, 4.2207e-02, -9.5059e-03, -6.0936e-02, -1.1028e-01, -1.5662e-01, -1.9851e-01, -2.3424e-01, -2.6299e-01, -2.8390e-01, -2.9634e-01, -2.9996e-01, -2.9463e-01, -2.8053e-01, -2.5806e-01, -2.2810e-01, -1.9118e-01, -1.4857e-01, -1.0181e-01, -5.1464e-02, 1.3519e-04, 5.1731e-02, 1.0151e-01, 1.4855e-01, 1.9139e-01, 2.2808e-01, 2.5835e-01, 2.8073e-01, 2.9474e-01, 2.9996e-01, 2.9630e-01, 2.8381e-01, 2.6286e-01, 2.3407e-01, 1.9831e-01, 1.5664e-01, 1.1030e-01, 6.0958e-02, 9.5285e-03, -4.2185e-02, -9.2920e-02, -1.4060e-01, -1.8408e-01, -2.2208e-01, -2.5330e-01, -2.7717e-01, -2.9285e-01, -2.9967e-01, -2.9762e-01, -2.8671e-01, -2.6725e-01, -2.3999e-01, -2.0546e-01, -1.6455e-01, -1.1896e-01, -7.0104e-02, -1.8598e-02, 3.3178e-02, 8.3683e-02, 1.3199e-01, 1.7659e-01, 2.1567e-01, 2.4816e-01, 2.7345e-01, 2.9060e-01, 2.9908e-01, 2.9868e-01, 2.8933e-01, 2.7137e-01, 2.4550e-01, 2.1219e-01, 1.7255e-01, 1.2750e-01, 7.9181e-02, 2.7941e-02, -2.3848e-02, -7.4644e-02, -1.2351e-01, -1.6869e-01, -2.0884e-01, -2.4260e-01, -2.6947e-01, -2.8813e-01, -2.9821e-01, -2.9941e-01, -2.9173e-01, -2.7535e-01, -2.5061e-01, -2.1871e-01, -1.7990e-01, -1.3592e-01, -8.8181e-02, -3.7548e-02, 1.4203e-02, 6.5817e-02, 1.1491e-01, 1.6086e-01, 2.0201e-01, 2.3715e-01, 2.6508e-01, 2.8529e-01, 2.9704e-01, 2.9985e-01, 2.9377e-01, 2.7894e-01, 2.5563e-01, 2.2501e-01, 1.8754e-01, 1.4421e-01, 9.7095e-02, 4.6827e-02, -4.8358e-03, -5.6355e-02, -1.0592e-01, -1.5262e-01, -1.9499e-01, -2.3129e-01, -2.6056e-01, -2.8225e-01, -2.9553e-01, -3.0000e-01, -2.9548e-01, -2.8215e-01, -2.6041e-01, -2.3110e-01, -1.9476e-01, -1.5261e-01, -1.0591e-01, -5.6060e-02, -4.5361e-03, 4.7123e-02, 9.7101e-02, 1.4447e-01, 1.8754e-01, 2.2502e-01, 2.5579e-01, 2.7894e-01, 2.9383e-01, 2.9985e-01, 2.9700e-01, 2.8529e-01, 2.6508e-01, 2.3697e-01, 2.0179e-01, 1.6060e-01, 1.1463e-01, 6.5525e-02, 1.4196e-02, -3.7555e-02, -8.8467e-02, -1.3619e-01, -1.8014e-01, -2.1871e-01, -2.5077e-01, -2.7535e-01, -2.9180e-01, -2.9943e-01, -2.9817e-01, -2.8805e-01, -2.6934e-01, -2.4277e-01, -2.0884e-01, -1.6844e-01, -1.2323e-01, -7.4637e-02, -2.3550e-02, 2.8240e-02, 7.9187e-02, 1.2751e-01, 1.7279e-01, 2.1240e-01, 2.4550e-01, 2.7150e-01, 2.8940e-01, 2.9868e-01, 2.9908e-01, 2.9053e-01, 2.7333e-01, 2.4799e-01, 2.1546e-01, 1.7635e-01, 1.3198e-01, 8.3958e-02, 3.2880e-02, -1.8897e-02, -7.0395e-02, -1.1923e-01, -1.6480e-01, -2.0546e-01, -2.4000e-01, -2.6738e-01, -2.8679e-01, -2.9766e-01, -2.9967e-01, -2.9278e-01, -2.7717e-01, -2.5314e-01, -2.2188e-01, -1.8384e-01, -1.4033e-01, -9.2635e-02, -4.2468e-02, 9.5353e-03, 6.1252e-02, 1.1058e-01, 1.5689e-01, 1.9854e-01, 2.3426e-01, 2.6286e-01, 2.8381e-01, 2.9635e-01, 2.9996e-01, 2.9468e-01, 2.8062e-01, 2.5820e-01, 2.2827e-01, 1.9139e-01, 1.4854e-01, 1.0150e-01, 5.1435e-02, -1.6459e-04, -5.1760e-02, -1.0154e-01, -1.4883e-01, -1.9141e-01, -2.2829e-01, -2.5822e-01, -2.8064e-01, -2.9469e-01, -2.9996e-01, -2.9630e-01, -2.8380e-01, -2.6284e-01, -2.3405e-01, -1.9829e-01, -1.5661e-01, -1.1027e-01, -6.0642e-02, -9.2063e-03, 4.2504e-02, 9.2948e-02, 1.4036e-01, 1.8387e-01, 2.2190e-01, 2.5332e-01, 2.7719e-01, 2.9279e-01, 2.9967e-01, 2.9766e-01, 2.8678e-01, 2.6723e-01, 2.3980e-01, 2.0522e-01, 1.6453e-01, 1.1893e-01, 7.0075e-02, 1.8861e-02, -3.3207e-02, -8.3993e-02, -1.3201e-01, -1.7638e-01, -2.1549e-01, -2.4818e-01, -2.7335e-01, -2.9061e-01, -2.9909e-01, -2.9865e-01, -2.8932e-01, -2.7136e-01, -2.4531e-01, -2.1217e-01, -1.7229e-01, -1.2748e-01, -7.9152e-02, -2.8204e-02, 2.3586e-02, 7.4672e-02, 1.2327e-01, 1.6871e-01, 2.0886e-01, 2.4279e-01, 2.6935e-01, 2.8814e-01, 2.9821e-01, 2.9941e-01, 2.9165e-01, 2.7522e-01, 2.5059e-01, 2.1869e-01, 1.8011e-01, 1.3616e-01, 8.7873e-02, 3.7519e-02, -1.4232e-02, -6.5560e-02, -1.1466e-01, -1.6063e-01, -2.0182e-01, -2.3735e-01, -2.6523e-01, -2.8539e-01, -2.9704e-01, -2.9985e-01, -2.9377e-01, -2.7893e-01, -2.5562e-01, -2.2500e-01, -1.8751e-01, -1.4444e-01, -9.7067e-02, -4.7087e-02, 4.5723e-03, 5.6384e-02, 1.0622e-01, 1.5264e-01, 1.9501e-01, 2.3131e-01, 2.6058e-01, 2.8226e-01, 2.9559e-01]])]}) bit_rate = 44100, num_channels = 2, sample_rate = 32000, format = 'mp3' method = 'to_file_like' tmp_path = PosixPath('/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file9') capfd = <_pytest.capture.CaptureFixture object at 0x7fb750961850> with_ffmpeg_debug_logs = None @needs_ffmpeg_cli @pytest.mark.parametrize("asset", (NASA_AUDIO_MP3, SINE_MONO_S32)) @pytest.mark.parametrize("bit_rate", (None, 0, 44_100, 999_999_999)) @pytest.mark.parametrize("num_channels", (None, 1, 2)) @pytest.mark.parametrize("sample_rate", (8_000, 32_000)) @pytest.mark.parametrize( "format", [ # TODO: https://github.com/pytorch/torchcodec/issues/837 pytest.param( "mp3", marks=pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version <= 5, reason="Encoding mp3 on Windows is weirdly buggy", ), ), pytest.param( "wav", marks=pytest.mark.skipif( ffmpeg_major_version == 4, reason="Swresample with FFmpeg 4 doesn't work on wav files", ), ), "flac", ], ) @pytest.mark.parametrize("method", ("to_file", "to_file_like")) @pytest.mark.skipif( IS_WINDOWS and ffmpeg_major_version >= 8, reason="against_cli tests fail on Windows with FFmpeg 8", ) def test_audio_against_cli( self, asset, bit_rate, num_channels, sample_rate, format, method, tmp_path, capfd, with_ffmpeg_debug_logs, ): # Encodes samples with our encoder and with the FFmpeg CLI, and checks # that both decoded outputs are equal source_audio = AudioDecoder(str(asset.path)).get_all_samples() source_samples = source_audio.data in_sample_rate = source_audio.sample_rate in_num_channels = source_samples.shape[0] out_num_channels = num_channels if num_channels is not None else in_num_channels # Encode with FFmpeg CLI encoded_by_ffmpeg = tmp_path / f"ffmpeg_output.{format}" subprocess.run( ["ffmpeg", "-i", str(asset.path)] + (["-b:a", f"{bit_rate}"] if bit_rate is not None else []) + (["-ac", f"{out_num_channels}"] if num_channels is not None else []) + ["-ar", f"{sample_rate}"] + [str(encoded_by_ffmpeg)], capture_output=True, check=True, ) # Encode with Encoder enc, encoder_output, open_kwargs = self._create_encoder( method, tmp_path, format ) audio = enc.add_audio( sample_rate=in_sample_rate, num_channels=in_num_channels, bit_rate=bit_rate, out_num_channels=num_channels, out_sample_rate=sample_rate, ) self._open_encoder(enc, open_kwargs) audio.add_samples(source_samples) enc.close() captured = capfd.readouterr() if format == "wav": assert "Timestamps are unset in a packet" not in captured.err if format == "mp3": assert "Queue input is backward in time" not in captured.err if format in ("flac", "wav"): assert "Encoder did not produce proper pts" not in captured.err if format in ("flac", "mp3"): assert "Application provided invalid" not in captured.err if IS_WINDOWS_WITH_FFMPEG_LE_70 and format == "mp3": # We're getting a "Could not open input file" on Windows mp3 # files when decoding. # TODO: https://github.com/pytorch/torchcodec/issues/837 return samples_by_us = AudioDecoder( self._get_decoder_source(encoder_output) ).get_all_samples() samples_by_ffmpeg = AudioDecoder(str(encoded_by_ffmpeg)).get_all_samples() assert_close = torch.testing.assert_close if sample_rate != in_sample_rate: if platform.machine().lower() == "aarch64": rtol, atol = 0, 1e-2 else: rtol, atol = 0, 1e-3 if sys.platform == "darwin": assert_close = partial(assert_tensor_close_on_at_least, percentage=99) elif format == "wav": rtol, atol = 0, 1e-4 elif format == "mp3" and asset is SINE_MONO_S32 and num_channels == 2: # Not sure why, this one needs slightly higher tol. With default # tolerances, the check fails on ~1% of the samples, so that's # probably fine. It might be that the FFmpeg CLI doesn't rely on # libswresample for converting channels? rtol, atol = 0, 1e-3 else: rtol, atol = None, None > assert_close( samples_by_us.data, samples_by_ffmpeg.data, rtol=rtol, atol=atol, ) E AssertionError: Tensor-likes are not close! E E Mismatched elements: 330 / 256000 (0.1%) E Greatest absolute difference: 0.002061620354652405 at index (0, 116394) (up to 0.001 allowed) E Greatest relative difference: 0.7102214097976685 at index (0, 116418) (up to 0 allowed) test/test_encoders.py:1190: AssertionError ----------------------------- Captured stderr call ----------------------------- [mp3 @ 0x7fb75b537b20] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb75b537b20] pad 576 1600 [mp3 @ 0x7fb75b537b20] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb75b537b20] Before avformat_find_stream_info() pos: 260 bytes read:20600 seeks:0 nb_streams:1 [mp3 @ 0x7fb75b537b20] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb75905a7f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75905a7f0] skip 1105/1152 samples [mp3 @ 0x7fb75b537b20] All info found [mp3 @ 0x7fb75b537b20] After avformat_find_stream_info() pos: 9476 bytes read:20600 seeks:0 frames:50 [mp3float @ 0x7fb75905a7f0] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb75905a7f0] skip 1105/1152 samples [mp3 @ 0x7fb75b537b20] demuxer injecting skip 0 / discard 1071 [mp3float @ 0x7fb75905a7f0] skip 0 / discard 1071 samples due to side data [mp3float @ 0x7fb75905a7f0] discard 1071/1152 samples [AVFormatContext @ 0x7fb75b537b20] Opening '/tmp/pytest-of-builduser/pytest-0/test_audio_against_cli_to_file9/ffmpeg_output.mp3' for reading [file @ 0x7fb74b49f000] Setting default whitelist 'file,crypto,data' [mp3 @ 0x7fb75b537b20] Format mp3 probed with size=2048 and score=52 id3v2 ver:4 flags:00 len:34 [mp3 @ 0x7fb75b537b20] pad 576 1600 [mp3 @ 0x7fb75b537b20] Skipping 0 bytes of junk at 260. [mp3 @ 0x7fb75b537b20] Before avformat_find_stream_info() pos: 260 bytes read:20600 seeks:0 nb_streams:1 [mp3 @ 0x7fb75b537b20] demuxer injecting skip 1105 / discard 0 [mp3float @ 0x7fb74be60530] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74be60530] skip 1105/1152 samples [mp3 @ 0x7fb75b537b20] All info found [mp3 @ 0x7fb75b537b20] After avformat_find_stream_info() pos: 9476 bytes read:20600 seeks:0 frames:50 [mp3float @ 0x7fb74be60530] skip 1105 / discard 0 samples due to side data [mp3float @ 0x7fb74be60530] skip 1105/1152 samples [mp3 @ 0x7fb75b537b20] demuxer injecting skip 0 / discard 1071 [mp3float @ 0x7fb74be60530] skip 0 / discard 1071 samples due to side data [mp3float @ 0x7fb74be60530] discard 1071/1152 samples [AVIOContext @ 0x7fb65f1c04f0] Statistics: 20600 bytes read, 0 seeks =============================== warnings summary =============================== test/test_decoders.py::TestImageDecoder::test_torchscript[jpeg] test/test_decoders.py::TestImageDecoder::test_torchscript[png] test/test_decoders.py::TestImageDecoder::test_torchscript[webp] test/test_decoders.py::TestImageDecoder::test_torchscript[gif] test/test_decoders.py::TestImageDecoder::test_torchscript[avif] /usr/lib/python3.14/site-packages/torch/jit/_script.py:1485: FutureWarning: `torch.jit.script` is not supported in Python 3.14+ and may break. Please switch to `torch.compile` or `torch.export`. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-None-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 317 / 32000 (1.0%) Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-None-0-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 317 / 32000 (1.0%) Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-None-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 317 / 32000 (1.0%) Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-8000-1-0-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 317 / 32000 (1.0%) Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file-mp3-32000-2-44100-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 330 / 256000 (0.1%) Greatest absolute difference: 0.002061620354652405 at index (0, 116394) (up to 0.001 allowed) Greatest relative difference: 0.7102214097976685 at index (0, 116418) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-None-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 317 / 32000 (1.0%) Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-None-0-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 317 / 32000 (1.0%) Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-None-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 317 / 32000 (1.0%) Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-8000-1-0-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 317 / 32000 (1.0%) Greatest absolute difference: 0.016788050532341003 at index (0, 31912) (up to 0.001 allowed) Greatest relative difference: 3.311636209487915 at index (0, 31950) (up to 0 allowed) FAILED test/test_encoders.py::TestEncoder::test_audio_against_cli[to_file_like-mp3-32000-2-44100-asset1] - AssertionError: Tensor-likes are not close! Mismatched elements: 330 / 256000 (0.1%) Greatest absolute difference: 0.002061620354652405 at index (0, 116394) (up to 0.001 allowed) Greatest relative difference: 0.7102214097976685 at index (0, 116418) (up to 0 allowed) = 10 failed, 1935 passed, 737 skipped, 1 deselected, 5 warnings in 3624.60s (1:00:24) = ==> ERROR:(B A failure occurred in check().(B  Aborting...(B ]3008;end=9c9ddc6d3ae941379a4a8971bba9f311\[!p]104\[?7h]3008;end=b5273042fcaa43b1b7d1b442b07c88de\==> ERROR:(B Build failed, check /var/lib/archbuild/extra-riscv64/felix-0/build(B [?12l[?25h[?12l[?25h]3008;end=2e31a2a19c314ada9195a955895f3a40\[?12l[?25hreceiving incremental file list python-torchcodec-0.16.0-1-riscv64-build.log python-torchcodec-0.16.0-1-riscv64-check.log python-torchcodec-0.16.0-1-riscv64-prepare.log sent 81 bytes received 29,232 bytes 19,542.00 bytes/sec total size is 531,721 speedup is 18.14