Embedder Library Guide

PallyCon Watermark Embedder Library is a watermark embedder implemented as a C ++ library so that it can be ported to an encoding solution. By embedding a watermark directly in the video encoding process, you can omit the re-encoding process required for watermark insertion using CLI embedder.

graph LR; subgraph Encoder/Transcoder A[Source video] -->|Frame image| B(Embedder library) B -->|Two set of frame
with 0, 1 marked| C["Encoded result
(two MP4 videos)"] end C --> D(DASH or
HLS packaging) subgraph Packager D --> E["Packaging result
(two set of streaming content)"] end

By default, porting to FFMPEG-based encoder/transcoder is supported. To apply embedder library to other commercial solutions, it is required to port the library by the solution vendor. Please contact us if you need more information or want to apply embedder library.

Contact Us

Detailed flow

PallyCon watermark embedder library can be applied to encoder/transcoder in the following steps. In the flow chart below, the portion marked in red is the process that requires porting.

Embedder library flow

  1. Initialize encoder / transcoder

  2. Initialize the embedder library

    • Execute CreateEmbedderImplement() and init() functions for ‘0’ and ‘1’ versions respectively for embedder library initialization.
  3. Load the frame to work from the source video

    • Progressively encodes and embeds watermarks from the first frame.
  4. Decode source frame to image

  5. Insert watermark into decoded image

    • Perform the following steps to produce two sets(‘0’ and ‘1’) of the video.
  6. Insert watermark

    • Embed the ‘0’ and ‘1’ marks by calling embed() function of the Embedder library.
  7. Encode the watermarked image as a video frame

  8. Write the encoded frame to the output video

  9. Finalize the embedder library

    • Call DestroyEmbedderImplement() function of the embedder library for the ‘0’ and ‘1’ versions.
  10. Finalize encoder / transcoder

Repeat step 3 to 8 of the above procedure until the last frame of the source video to create two output videos with ‘0’ and ‘1’ marks inserted. (For example, output_0.mp4 and output_1.mp4)