Real-time video watermarking approaches are implemented to provide security to broadcasting content which needs to be distributed with high efficiency. They offer an additional protection to premium DRM protected content from malicious attacks. Dedicated hardware such as an FPGA (Filed Programmable Gate Array) or media preprocessors have been developed for real-time embedding of watermarks in high resolution videos. Due to the intensive computing volumes for multimedia data, applications are used to be implemented with ASICs (Application Specific Integrated Circuits) or digital signal processors.
The following optimizations can also be implemented along with these applications:
- Usage of a current generation compiler that will produce an optimized application: This helps regenerate good codes from the beginning.
- Maximizing memory access performance which includes minimizing memory references, maximizing register usages, prefetching data, and arranging code to minimize instruction cache misses and optimize prefetch.
- Minimizing branching penalties:
- Minimizing branching instructions such as unrolling of small loops
- Arranging code in order to minimize the misprediction in the branch prediction algorithm (for e.g.: forward conditional branches are usually not taken whereas backward conditional branches are).
- Using software pipelining to schedule latencies and functional units.
- Starting optimizations from the most computationally-intensive components in the real-time watermark embedding process.
- Understanding which algorithm is the best for multimedia extension (MMX) technology. This helps in extracting the best performance. After identifying the computationally intensive sections, the video watermarking algorithm should be evaluated to see if any modification will result in a better performance. Many algorithms can be used for the same application and changing the types of operations in the algorithm can also help improve performance.
- Understanding where data values in the application can be converted to integer (ﬁxed-point) (while maintaining the required range and precision if the data values are not originally of an integer type): The MMX instructions offer great support for 8-bit and 16-bit integer data types. While DSP in the integer domain is possible, some must be done in the floating point domain. MMX can provide significant speedup in certain DSP and multimedia applications, even over hand-optimized floating-point assembly codes. The large amount of contiguous, 8-bit data to process, and precision requirements that rarely extend beyond 8 bits make MMX well-suited for image processing applications.