{"id":13829362,"url":"https://github.com/MPEGGroup/mpeg-pcc-tmc2","last_synced_at":"2025-07-09T09:33:16.804Z","repository":{"id":43340917,"uuid":"194936485","full_name":"MPEGGroup/mpeg-pcc-tmc2","owner":"MPEGGroup","description":"Video codec based point cloud compression (V-PCC) test model","archived":false,"fork":false,"pushed_at":"2024-03-22T15:28:07.000Z","size":38936,"stargazers_count":143,"open_issues_count":3,"forks_count":47,"subscribers_count":18,"default_branch":"master","last_synced_at":"2024-08-05T10:08:19.171Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MPEGGroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-07-02T21:20:59.000Z","updated_at":"2024-08-03T23:03:45.000Z","dependencies_parsed_at":"2024-01-15T17:38:47.608Z","dependency_job_id":"753b489f-02ef-4116-a49c-17753bc58b2a","html_url":"https://github.com/MPEGGroup/mpeg-pcc-tmc2","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MPEGGroup%2Fmpeg-pcc-tmc2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MPEGGroup%2Fmpeg-pcc-tmc2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MPEGGroup%2Fmpeg-pcc-tmc2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MPEGGroup%2Fmpeg-pcc-tmc2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MPEGGroup","download_url":"https://codeload.github.com/MPEGGroup/mpeg-pcc-tmc2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225533014,"owners_count":17484179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T10:00:33.809Z","updated_at":"2025-07-09T09:33:16.784Z","avatar_url":"https://github.com/MPEGGroup.png","language":"C++","funding_links":[],"categories":["Others"],"sub_categories":["2016"],"readme":"# Video-based Point Cloud Compression - V-PCC - mpeg-pcc-tmc2 test model candidate software\n\n## Building\n\nBash scripts can be use to build mpeg-pcc-tmc2 project: \n- build.sh: build solutions.  \n- clear.sh: clear solututions ( ./clear.sh all: to clear dependencies)\n \n### OSX\n- mkdir build\n- cd build\n- cmake .. \n- cmake --build . --config Release --parallel 8\n\n### Linux\n- mkdir build\n- cd build\n- cmake .. \n- cmake --build . --config Release --parallel 8\n\n### Windows\n- md build\n- cd build\n- cmake .. \n- cmake --build . --config Release --parallel 8\n\n\n### External dependencies\n\nAccording to the CMake options defined in the CMakeLists.txt, the TMC2 required some external dependencies to work: \n\n  - USE_JMAPP_VIDEO_CODEC: use JM software to encoder and decoder videos (codecId parameters must be set equal to 0 and the videoEncoderOccupancyPath, videoEncoderGeometryPath and videoEncoderAttributePath but be set the JM applications)\n  - USE_HMAPP_VIDEO_CODEC: use HM software to encoder and decoder videos (codecId parametesr must be set equal to 1 and the videoEncoderOccupancyPath, videoEncoderGeometryPath and videoEncoderAttributePath but be set the JM applications)\n  - USE_JMLIB_VIDEO_CODEC: use JM library to encoder and decoder videos (codecId parameter must be set equal to 2)\n  - USE_HMLIB_VIDEO_CODEC: use HM library to encoder and decoder videos (codecId parameter must be set equal to 3)\n  - USE_VTMLIB_VIDEO_CODEC: use VTM library to encoder and decoder videos (codecId parameter must be set equal to 4)\n  - USE_FFMPEG_VIDEO_CODEC: use FFMPEG library to encoder and decoder videos (codecId parameter must be set equal to 5). This mode is only available in the FFMPEG branch. \n  - USE_SHMAPP_VIDEO_CODEC: use SHM software to encoder and decoder videos (codecId parametesr must be set equal to 6, the videoEncoderGeometryPath and videoEncoderAttributePath using the SHM application, and the videoEncoderOccupancyPath using the HM application)\n  - USE_HDRTOOLS: use HDRTools to convert the raw video files.\n\nThe video encoder softwares and libraries can be found in the corresponding repositories: \n\n  - JM: https://vcgit.hhi.fraunhofer.de/jct-vc/JM.git\n  - HM: https://vcgit.hhi.fraunhofer.de/jvet/HM.git\n  - VTM: https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM.git\n  - SHM: https://vcgit.hhi.fraunhofer.de/jvet/SHM.git\n\nSome changes have been made on these libraries to allow to use the three libraries at the same time and to increase the codec efficiencies for the V3C contents. the three codecs must be patch with the files:\n\n  - JM: dependencies/jm-modification/PCC_JM.patch\n  - HM: dependencies/hm-modification/pcc_me-ext_and_namespace_for_HM-16.20+SCM-8.8.patch\n  - VTM: dependencies/vtm-modification/adaptions_for_vtm_11_2.patch\n\nBy default according the the CMake options, the dependencies are cloned and patched by the cmake process. \n \nThe external dependencies could be downloaded, built and linked independenly: \n\n- JM:\n   \n   git clone checkout https://vcgit.hhi.fraunhofer.de/jct-vc/JM.git dependencies/jm19.0_lib\n   cd dependencies/jm19.0_lib\n   git patch ../jm-modification/PCC_JM.patch\n\n- HM:\n   \n   git clone checkout  https://vcgit.hhi.fraunhofer.de/jvet/HM.git dependencies/HM-16.20+SCM-8.8\n   cd dependencies/HM-16.20+SCM-8.8\n   git patch ../hm-modification/pcc_me-ext_and_namespace_for_HM-16.20+SCM-8.8.patch\n\n- VTM:\n\n   git clone checkout https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM.git dependencies/VTM-11.2    \n   cd dependencies/VTM-11.2\n   git patch ../vtm-modification/adaptions_for_vtm_11_2.patch\n \n- HDRTools\n\n    git clone -b 0.17-dev https://gitlab.com/standards/HDRTools.git dependencies/HDRTools       \n\nThe pointcloud metrics can be computed inside the TM2 encoder and decoder according to the input parameters: \n\n    - computeMetrics: Compute metrics\n    - uncompressedDataPath: Input pointcloud to encode. Multi-frame sequences may be represented by %04i\n    - normalDataPath:  Input pointcloud to encode. Multi-frame sequences may be represented by %04i\n    - resolution: Specify the intrinsic resolution\n    - dropdups: 0(detect), 1(drop), 2(average) subsequent points with same coordinates\n    - neighborsProc: 0(undefined), 1(average), 2(weighted average), 3(min), 4(max) neighbors with same geometric distance\n\nThe computations of the metrics are the same than the distances computed with the pcc_distortion software that can be found in: https://git.mpeg.expert/MPEG/3dgh/v-pcc/software/mpeg-pcc-dmetric.git.\n\n\t\n## Running\n\nConfiguration files are provided in the cfg directory to aid configuring the encoder.  The general pattern of usage is illustrated below, where\nmultiple configuration files control different aspects of the test conditions.\n\nNB: parameters set in one configuration file override the same parameter in earlier files.  ie. order matters.\n\nFurther help text describing option usage is available using \"./bin/PccAppEncoder --help\" or \"./bin/PccAppDecoder --help\".\n\n### PccAppEncoder\n\n```\n./bin/PccAppEncoder \\\n\t--configurationFolder=cfg/ \\\n\t--config=cfg/common/ctc-common.cfg \\\n\t--config=cfg/condition/ctc-all-intra.cfg \\\n\t--config=cfg/sequence/longdress_vox10.cfg \\\n\t--config=cfg/rate/ctc-r3.cfg \\\n\t--uncompressedDataFolder=~/mpeg_datasets/CfP/datasets/Dynamic_Objects/People/ \\\n\t--frameCount=1 \\\n\t--videoEncoderPath=../external/HM-16.16/bin/TAppEncoderStatic \\\n\t--colorSpaceConversionPath=../external/HDRTools/bin/HDRConvert \\\n\t--reconstructedDataPath=S26C03R03_rec_%04d.ply \\\n\t--compressedStreamPath=S26C03R03.bin \n```\n\n### PccAppDecoder\n\n```\n./bin/PccAppDecoder \\\n\t--compressedStreamPath=S26C03R03.bin \\\n\t--videoDecoderPath=../external/HM-16.16/bin/TAppDecoderStatic \\\n\t--colorSpaceConversionPath=../external/HDRTools/bin/HDRConvert \\ \n\t--inverseColorSpaceConversionConfig=cfg/hdrconvert/yuv420torgb444.cfg \\\n\t--reconstructedDataPath=S26C03R03_dec_%04d.ply \n```\n\n### Scripts\n\nMore examples of running could be found in ./test/runme_linux.sh. \n\nThese examples can be start based on your system with the following scripts:\n- ./test/runme_linux.sh\n- ./test/runme_windows.bat\n- ./test/runme_osx.sh\n\nThe V3C common test condition (CTC) command lines could be found in ./test/ctc_command_line.sh. \n\n## SHVC Information\n\nThe SHVC software used in the program can be obtained from the link below.\n\thttps://hevc.hhi.fraunhofer.de/svn/svn_SHVCSoftware/tags/SHM-12.4/\n\nThe additional Enhanced Layer will be used by SHVC codec according to the number of entries entered in the SHVCLayer in the encoder.\nSHVCRateX and SHVCRateY refer to the width and height resolution reduction rate of 2D images of additional layers.\nThe decoder uses the video corresponding to the layer entered into the SHVCLayerID. LID 0 has the lowest density, and if 3 layers are used, LID 2 has the same density as V-PCC TMC2 output.\nOccupancy Map video encode/decode using same version of HM encooder/decoder.\n\n\n### SHVC Running 3layer PccAppEncoder\n\n```\n./bin/PccAppEncoder \\\n\t--configurationFolder=cfg/ \\\n\t--config=cfg/common/ctc-common.cfg \\\n\t--config=cfg/condition/ctc-random-access-svc-3L.cfg \\\n\t--config=cfg/sequence/longdress_vox10.cfg \\\n\t--config=cfg/rate/ctc-r3.cfg \\\n\t--uncompressedDataFolder=~/mpeg_datasets/CfP/datasets/Dynamic_Objects/People/ \\\n\t--frameCount=1 \\\n\t--videoEncoderGeometryPath=..\\bin\\win\\TAppEncoder.exe \\\n\t--videoEncoderAttributePath=..\\bin\\win\\TAppEncoder.exe \\\n \t--videoEncoderOccupancyPath=..\\bin\\win\\occupancy\\TAppEncoder.exe \\\n\t--colorSpaceConversionPath=../external/HDRTools/bin/HDRConvert \\\n\t--reconstructedDataPath=S26C03R03_rec_%04d.ply \\\n\t--compressedStreamPath=S26C03R03.bin \\\n\t--SHVCLayer=2 \\\n\t--SHVCRateX=2 \\\n\t--SHVCRateY=2\n```\n\n### SHVC Running 3layer PccAppDecoder\n\n```\n./bin/PccAppDecoder \\\n\t--compressedStreamPath=S26C03R03.bin \\\n\t--videoDecoderGeometryPath=..\\bin\\win\\TAppDecoder.exe \\\n\t--videoDecoderAttributePath=..\\bin\\win\\TAppDecoder.exe \\\n\t--videoDecoderOccupancyPath=..\\bin\\win\\occupancy\\TAppDecoder.exe \\\n\t--colorSpaceConversionPath=../external/HDRTools/bin/HDRConvert \\ \n\t--inverseColorSpaceConversionConfig=cfg/hdrconvert/yuv420torgb444.cfg \\\n\t--reconstructedDataPath=S26C03R03_dec_%04d.ply \\\n\t--SHVCLayerID=2 \n```\n\n### Software manual\n\nMore informations could be found in the [user manuel](doc/mpeg-pcc-tm2-sw-manual.pdf).\n\n\n###\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMPEGGroup%2Fmpeg-pcc-tmc2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMPEGGroup%2Fmpeg-pcc-tmc2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMPEGGroup%2Fmpeg-pcc-tmc2/lists"}