Skip to content

Commit

Permalink
COM-12602-Replace erroneous h266 reference decoder in fluster: (#215)
Browse files Browse the repository at this point in the history
Replace erroneous h266 reference decoder:
* add h266_reference_decoder (VVCSoftware_VTM-H266)
* Maintain h266_vvdec_decoder (VVdeC, the Fraunhofer Versatile Video Decoder)
* update README.md
  • Loading branch information
rsanchez87 authored Nov 22, 2024
1 parent 51e533f commit ad83df2
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 4 deletions.
8 changes: 8 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ create_dirs=mkdir -p $(CONTRIB_DIR) $(DECODERS_DIR)
all_reference_decoders: h264_reference_decoder h265_reference_decoder h266_reference_decoder mpeg_2_aac_reference_decoder mpeg_4_aac_reference_decoder ## build all reference decoders

h266_reference_decoder: ## build H.266 reference decoder
$(create_dirs)
cd $(CONTRIB_DIR) && git clone https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM.git --depth=1 || true
cd $(CONTRIB_DIR)/VVCSoftware_VTM && git pull --autostash || true
cd $(CONTRIB_DIR)/VVCSoftware_VTM && mkdir -p build && cd build && cmake -DCMAKE_BUILD_TYPE=Release ..
$(MAKE) -C $(CONTRIB_DIR)/VVCSoftware_VTM/build
find $(CONTRIB_DIR)/VVCSoftware_VTM/bin/ -name "DecoderApp" -type f -exec cp {} $(DECODERS_DIR)/ \;

h266_vvdec_decoder: ## build H.266 VVdeC, the Fraunhofer Versatile Video Decoder
$(create_dirs)
cd $(CONTRIB_DIR) && git clone https://github.com/fraunhoferhhi/vvdec.git --depth=1 || true
cd $(CONTRIB_DIR)/vvdec && git pull --autostash || true
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,8 @@ AAC
ISO-MPEG4-AAC: ISO MPEG4 AAC reference decoder... ✔️

H266
GStreamer-H.266-VVdeC-Gst1.0: GStreamer H.266 VVdeC decoder for GStreamer 1.0... ✔
GStreamer-H.266-VVdeC-Gst1.0: GStreamer H.266 VVdeC decoder for GStreamer 1.0... ✔️
VVCSoftware_VTM-H266: VVCSoftware_VTM H.266/VVC reference decoder... ✔️
VVdeC-H266: VVdeC H.266/VVC reference decoder... ✔️

```
Expand Down
48 changes: 48 additions & 0 deletions fluster/decoders/h266_vvc_vtm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Fluster - testing framework for decoders conformance
# Copyright (C) 2024, Fluendo, S.A.
# Author: Ruben Sanchez <[email protected]>, Fluendo, S.A.
#
# 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


@register_decoder
class H266VVCVTMDecoder(Decoder):
"""VTM H.266/VVC reference decoder implementation"""

name = "VVCSoftware_VTM-H266"
description = "VVCSoftware_VTM H.266/VVC reference decoder"
codec = Codec.H266
binary = "DecoderApp"

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"""
# pylint: disable=unused-argument
run_command(
[self.binary, "-b", input_filepath, "-o", output_filepath],
timeout=timeout,
verbose=verbose,
)
return file_checksum(output_filepath)
6 changes: 3 additions & 3 deletions fluster/decoders/h266_vvdec.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@


@register_decoder
class H266JCTVTDecoder(Decoder):
"""VVdeC H.266/VVC reference decoder implementation"""
class H266VVCDecoder(Decoder):
"""VVdeC H.266/VVC decoder implementation"""

name = "VVdeC-H266"
description = "VVdeC H.266/VVC reference decoder"
description = "VVdeC H.266/VVC decoder"
codec = Codec.H266
binary = "vvdecapp"

Expand Down

0 comments on commit ad83df2

Please sign in to comment.