Skip to content

Commit

Permalink
Merge branch 'master' into CS-2376-Functional-testing-with-fluster-h2…
Browse files Browse the repository at this point in the history
…66dec
  • Loading branch information
rsanchez87 authored Oct 15, 2024
2 parents 39e938c + 3f87022 commit 1b193bf
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 3 deletions.
10 changes: 9 additions & 1 deletion .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ jobs:
- name: Check
run: |
make check
- name: Test Build the wheel
run: |
pip wheel .
linux:
runs-on: ubuntu-22.04
Expand All @@ -44,7 +47,9 @@ jobs:
- name: Check
run: |
make check
- name: Test Build the wheel
run: |
pip wheel .
windows:
runs-on: windows-latest
Expand All @@ -61,3 +66,6 @@ jobs:
- name: Check
run: |
make check
- name: Test Build the wheel
run: |
pip wheel .
8 changes: 8 additions & 0 deletions fluster/decoders/ffmpeg.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ def check(self, verbose: bool) -> bool:
codec_mapping = {
Codec.H264: "h264",
Codec.H265: "hevc",
Codec.H266: "vvc",
Codec.VP8: "vp8",
Codec.VP9: "vp9",
Codec.AV1: "av1",
Expand Down Expand Up @@ -191,6 +192,13 @@ class FFmpegH265Decoder(FFmpegDecoder):
codec = Codec.H265


@register_decoder
class FFmpegH266Decoder(FFmpegDecoder):
"""FFmpeg SW decoder for H.266"""

codec = Codec.H266


@register_decoder
class FFmpegVP8Decoder(FFmpegDecoder):
"""FFmpeg SW decoder for VP8"""
Expand Down
9 changes: 9 additions & 0 deletions fluster/decoders/gstreamer.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,15 @@ class GStreamerLibavH265(GStreamer10Video):
api = "Libav"


@register_decoder
class GStreamerLibavH266(GStreamer10Video):
"""GStreamer H.266 Libav decoder implementation for GStreamer 1.0"""

codec = Codec.H266
decoder_bin = " avdec_h266 "
api = "Libav"


@register_decoder
class GStreamerLibavVP8(GStreamer10Video):
"""GStreamer VP8 Libav decoder implementation for GStreamer 1.0"""
Expand Down
84 changes: 84 additions & 0 deletions fluster/decoders/vk_video_decoder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Fluster - testing framework for decoders conformance
# Copyright (C) 2024, Igalia.
# Author: Stephane Cerveau
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation, either version 3
# of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <https://www.gnu.org/licenses/>.

from fluster.codec import Codec, OutputFormat
from fluster.decoder import Decoder, register_decoder
from fluster.utils import file_checksum, run_command


class VKVSDecoder(Decoder):
"""NVidia vk_video_samples decoder implementation"""

binary = "vk-video-dec-test"

def __init__(self) -> None:
super().__init__()
self.name = f"VKVS-{self.codec.value}"
self.description = f"Vulkan Video Samples {self.codec.value} decoder"

def decode(
self,
input_filepath: str,
output_filepath: str,
output_format: OutputFormat,
timeout: int,
verbose: bool,
keep_files: bool,
) -> str:
"""Decodes input_filepath in output_filepath"""
codec_mapping = {
Codec.H264: "avc",
Codec.H265: "hevc",
Codec.AV1: "av1",
}
# pylint: disable=unused-argument
run_command(
[
self.binary,
"-i",
input_filepath,
"-o",
output_filepath,
"--codec",
codec_mapping[self.codec],
"--noPresent",
],
timeout=timeout,
verbose=verbose,
)
return file_checksum(output_filepath)


@register_decoder
class VKVSH264Decoder(VKVSDecoder):
"""Vulkan Video Samples decoder for H.264"""

codec = Codec.H264


@register_decoder
class VKVSH265Decoder(VKVSDecoder):
"""Vulkan Video Samples decoder for H.265"""

codec = Codec.H265


@register_decoder
class VKVSAV1Decoder(VKVSDecoder):
"""Vulkan Video Samples decoder for AV1"""

codec = Codec.AV1
1 change: 0 additions & 1 deletion fluster/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

APPNAME = "fluster"
TEST_SUITES_DIR = "test_suites"
TEST_SUITES_DIR_SYS = "/usr/share/fluster/test_suites"
DECODERS_DIR = "decoders"
RESOURCES_DIR = "resources"
OUTPUT_DIR = "fluster_output"
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ packages = ["fluster", "fluster.decoders"]
]
"share/fluster/test_suites/h265" = [
"test_suites/h265/JCT-VC-3D-HEVC.json",
"test_suites/h265/JCT-VC-HEVC-V1.json",
"test_suites/h265/JCT-VC-HEVC_V1.json",
"test_suites/h265/JCT-VC-MV-HEVC.json",
"test_suites/h265/JCT-VC-RExt.json",
"test_suites/h265/JCT-VC-SCC.json",
Expand Down

0 comments on commit 1b193bf

Please sign in to comment.