Giter Site home page Giter Site logo

chalmers-revere / opendlv-video-h264-decoder Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 3.0 272 KB

OpenDLV Microservice to decode an h264 frame into a shared memory using openh264

License: GNU General Public License v3.0

CMake 1.80% C++ 97.76% Dockerfile 0.44%
libcluon cpp14 robotics docker microservice microservices openh264 h264 video decoding

opendlv-video-h264-decoder's Introduction

Moved to https://git.opendlv.org.

OpenDLV Microservice to decode video frames from h264 into a shared memory

This repository provides source code to decode broadcasted video frames into a shared memory area for the OpenDLV software ecosystem.

License: GPLv3

OpenH264 Video Codec provided by Cisco Systems, Inc.

During the Docker-ized build process for this microservice, Cisco's binary library is downloaded from Cisco's webserver and installed on the user's computer due to legal implications arising from the patents around the AVC/h264 format.

End user's notice according to AVC/H.264 Patent Portfolio License Conditions: When you are using this software and build scripts from this repository, you are agreeing to and obeying the terms under which Cisco is making the binary library available.

Table of Contents

Dependencies

You need a C++14-compliant compiler to compile this project.

The following dependency is part of the source distribution:

The following dependencies are will be downloaded and installed during the Docker-ized build:

Building and Usage

Due to legal implications arising from the patents around the AVC/h264 format, we cannot provide and distribute pre-built Docker images. Therefore, we provide the build instructions in a Dockerfile that can be easily integrated in a docker-compose.yml file.

To run this microservice using docker-compose, you can simply add the following section to your docker-compose.yml file to let Docker build this software for you:

version: '2' # Must be present exactly once at the beginning of the docker-compose.yml file
services:    # Must be present exactly once at the beginning of the docker-compose.yml file
    video-h264-decoder-amd64:
        build:
            context: https://github.com/chalmers-revere/opendlv-video-h264-decoder.git#v0.0.5
            dockerfile: Dockerfile.amd64
        restart: on-failure
        network_mode: "host"
        ipc: "host"
        volumes:
        - /tmp:/tmp
        environment:
        - DISPLAY=${DISPLAY}
        command: "--cid=111 --name=imageData"

As this microservice is connecting to an OD4Session to receive h264 frames to decode them into a shared memory area using SysV IPC, the docker-compose.yml file specifies the use of ipc:host. The parameter network_mode: "host" is necessary to receive h264 frames broadcast from other microservices running in an OD4Session from OpenDLV. The folder /tmp is shared into the Docker container to provide tokens describing the shared memory area. The parameters to the application are:

  • --cid=111: Identifier of the OD4Session to listen for h264 frames
  • --id=2: Optional identifier to listen only for those h264 frames with the matching senderStamp of the OD4Session
  • --name=XYZ: Name of the shared memory area to create for storing the ARGB image data
  • --verbose: Display decoding information and render the image to screen (requires X11; run xhost + to allow access to you X11 server)

License

  • This project is released under the terms of the GNU GPLv3 License

opendlv-video-h264-decoder's People

Contributors

chrberger avatar fannygu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.