{"id":27918500,"url":"https://github.com/motionspell/lldash-srd-packager","last_synced_at":"2026-03-06T11:31:52.040Z","repository":{"id":274839022,"uuid":"920471631","full_name":"MotionSpell/lldash-srd-packager","owner":"MotionSpell","description":"EncodingEncapsulation repository ","archived":false,"fork":false,"pushed_at":"2025-09-10T18:43:03.000Z","size":240,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-10T19:46:03.913Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MotionSpell.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"license","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,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-22T08:00:10.000Z","updated_at":"2025-09-10T18:43:06.000Z","dependencies_parsed_at":"2025-05-27T21:21:16.721Z","dependency_job_id":"4407a3ab-8336-4a41-8759-ccb557c36479","html_url":"https://github.com/MotionSpell/lldash-srd-packager","commit_stats":null,"previous_names":["motionspell/lldash-srd-packager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MotionSpell/lldash-srd-packager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2Flldash-srd-packager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2Flldash-srd-packager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2Flldash-srd-packager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2Flldash-srd-packager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MotionSpell","download_url":"https://codeload.github.com/MotionSpell/lldash-srd-packager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MotionSpell%2Flldash-srd-packager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30173694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2025-05-06T18:22:52.121Z","updated_at":"2026-03-06T11:31:52.022Z","avatar_url":"https://github.com/MotionSpell.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EncodingEncapsulation repository\n\n## Tools\n\nThis repository contains the tools used to stream Point Clouds and TVMs. The repository contains the following applications:\n - ```bin2dash```: dynamic-libraryfication of the encoding/streaming part of ```pcl2dash```.\n - ```bin2dash_app```: a sample app looping on compressed data using the bin2dash DLL. This is a demo app: it does not expose all parameters and is not intended to be used on production.\n - ```pcl2dash```: capture point cloud ((device or watermelon stub) or uncompressed file), encode (CWI encoder), package (fMP4) and stream (MPEG-DASH). Used for Pilot#1.\n \nThese tools are available both for Windows 64 bits and Linux 64 bits.\n\nBuilding this repository is not possible. Contact Motion Spell.\n\n## Transmission chain (MPEG-DASH)\n\nThe transmission chain includes 3 components:\n - A streamer (this repository).\n - A HTTP server (a node.js script for Pilot#1, the lldash-relay SFU for Pilot#2: https://baltig.viaccess-orca.com:8443/VRT/deliverymcu-group/DeliveryMCU/releases).\n - A client (the SUB (Signals Unity Bridge) for Pilot#2: https://baltig.viaccess-orca.com:8443/VRT/nativeclient-group/SUB/releases)\n\n\n\n\n# How to setup your pilot: easy as 1-2-3!\n\n## Pilots constraints reminder\n\nPilot#1: two users. Local origin which requires to open ports locally.\n\n## Pilot #1 live from capture or raw PLY\n\n 1. Capture: automatic fake content, plug your hardware, or download some PLY samples (see above).\n 2. HTTP server. Please install the low latency HTTP node.js server (https://github.com/gpac/node-gpac-dash + ```node gpac-dash.js -segment-marker eods -no-marker-write -chunk-media-segments```).\n 3. Launch ```pcl2dash``` (cf below for details) e.g. ```./pcl2dash.exe -t 1 -n -1 -s 10000 -p cwi.json folder/to/loot-ply-uncompressed```. If you give no folder or URL, the capture will start from the camera.\n \n/!\\ Don't use ```pcl2dash``` with compressed data!\n\n/!\\ ```pcl2dash``` sleeps 100ms between two PLY readings to avoid I/O saturation. ```bin2dash_app``` exposes customs parameters for regulation.\n\n## Pilot #2 live from capture or raw PLY\n\n 1. Capture: automatic fake content, plug your hardware, or download some PLY samples (see above).\n 2. HTTP server. Please install SFU (https://baltig.viaccess-orca.com:8443/VRT/deliverymcu-group/DeliveryMCU/releases) ; you can install it locally or remotely.\n 3. Launch ```pcl2dash``` (cf below for details) e.g. ```./pcl2dash.exe -t 1 -n -1 -s 10000 -p cwi.json folder/to/loot-ply-uncompressed -u http://localhost:9000/```. If you give no folder or URL, the capture will start from the camera.\n \n/!\\ Don't user node-gpac-dash with multiple users, this will generate delays!\n\n/!\\ Don't use ```pcl2dash``` with compressed data!\n\n/!\\ ```pcl2dash``` sleeps 100ms between two PLY readings to avoid I/O saturation. ```bin2dash_app``` exposes customs parameters for regulation.\n\n## Pilot #1 and #2 live from encoded CWIPC data\n\n 1. HTTP server depending on your Pilot (node-gpac-http for Pilot#1 or Evanescent for Pilot#2).\n 2. Launch ```bin2dash_app``` e.g. ```./bin2dash_app.exe -s 100 folder/to/cwipc_loot-compressed```. If you give no folder (all pilots) or URL (Pilot#2), the capture will start from the camera.\n\n\n\n\n\n# Developer tools and information\n\n## Test content\n\nCompressed (cwipc) and uncompressed (PLY) point cloud data can be found at https://baltig.viaccess-orca.com:8443/VRT/nativeclient-group/cwipc_test/releases\n\n```pcl2dash``` is able to generate live content from a connected Realsense2 or from some fake content if you do not have a Realsense2 connected. See below for command-line usage.\n\n## Replay a MPEG-DASH session (pcl2dash only)\n\n 1. Generate a capture session (e.g. 1234 frames): ```./pcl2dash.exe -t 1 -n 1234 -s 10000 -p cwi.json folder/to/ply_uncompressed```. If you want to stop the capture, press ctrl-c once and wait for the tool to exit.\n 2. HTTP server for replay: ```node gpac-dash.js```. Omit the low latency paremeters as they will stuck your downloads.\n\n## Developers: convert a MPEG-DASH session into a file and replay\n\nThe SUB supports playback from both HTTP for MPEG-DASH and from MP4 files.\n\nTo generate a MP4 file from a DASH session, concatenate the initialization segment with your media segment e.g. ```cat `ls *init.mp4` `ls -v *.m4s` \u003e session.mp4```.\n\n# How to use bin2dash_app.exe (standalone)\n\n```\nUsage: bin2dash_app [options, see below] [file_pattern]\n    -d, --durationInMs                      0: segmentTimeline, otherwise SegmentNumber [default=10000]\n    -s, --sleepAfterFrameInMs               Sleep time in ms after each frame, used for regulation [default=0]\n    -u, --publishURL                        Publish URL ending with a separator. If empty files are written and the node-gpac-http server should be used, otherwise use the Evanescent SFU. [default=\"\"]\n```\n\n```./bin2dash_app.exe -s 30 -u http://vrt-pcl2dash.viaccess-orca.com/ folder/to/cwipc_loot-compressed```\n\n## API\n\nSee https://baltig.viaccess-orca.com:8443/VRT/nativeclient-group/EncodingEncapsulation/blob/dev/src/apps/bin2dash/bin2dash.hpp.\n\n# How to use pcl2dash (standalone)\n\nThis is useful when you want to generate data ready to be streamed (e.g. to be copied on the HTTP server). When one closes a ```pcl2dash``` session cleanly (i.e. no more frames or ctrl-c, not by killing the process or windows), the live session is automatically transformed into an on-demande session ready to replay.\n\n## Capture source\n\nIf you give ```pcl2dash``` a URL, ```pcl2dash``` will open this URL. Otherwise it will try to get the data from the capture device (```MultiFrame.dll``` from CWI) which contains the \"watermelon\" fallback.\n\n## Examples\n\nOnly 10 frames:\n```./pcl2dash.exe -t 1 -n 10```\n\nInfinite frames:\n```./pcl2dash.exe -t 1 -n -1```\n\nSegment duration of 10 seconds:\n```./pcl2dash.exe -t 1 -n -1 -s 10000```\n\nFake delay in seconds (to avoir clock-instability near realtime):\n```./pcl2dash.exe -t 1 -n -1 -s 10000 -d 1```\n\nCustom encoding parameters:\n```./pcl2dash.exe -t 1 -n -1 -s 10000 -p cwi.json```\n\nwith cwi.json\n```\n{\n  \"do_inter_frame\": false,\n  \"gop_size\": 1,\n  \"exp_factor\": 0.0,\n  \"octree_bits\": 7,\n  \"jpeg_quality\": 85,\n  \"macroblock_size\": 16\n  \"tilenumber\": 0,\n  \"voxelsize\": 0.0,\n}\n```\n\nStream a custom folder:\n```./pcl2dash.exe -t 1 -n -1 -s 10000 -p cwi.json folder/to/ply_uncompressed```\n\nStream to a server:\n```./pcl2dash.exe -t 1 -n -1 -s 10000 -p cwi.json -u http://vrt-pcl2dash.viaccess-orca.com:9000/ folder/to/ply_uncompressed```\n\n# Stubbing\n\nThe ```pcl2dash``` capture (Signals user-module) is stubbed twice. If the multiFrame.dll is found, then it is used either with a capture device when found or with the watermelon sample. If multiFrame.dll is not found then the capture will use the path pattern from the command-line.\n\n```bin2dash``` allows to easily stub the capture and encoding.\n\n# Current limitations, legacy, and perspective\n\nMulti-threaded works on Signals' side but needs to be tested with the CWI libraries.\n\nThe program holds on a specific cwi branch of Signals that contains non-conformant DASH modifications for compatibility with the i2cat GUB software. Not needed anymore but requires additional work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmotionspell%2Flldash-srd-packager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmotionspell%2Flldash-srd-packager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmotionspell%2Flldash-srd-packager/lists"}