obs-studio/build_dependencies/aja/include/ajalibraries/ajabase/common/timecodeburn.h

70 lines
2.6 KiB
C
Raw Normal View History

2023-03-04 18:33:16 +01:00
/* SPDX-License-Identifier: MIT */
/**
@file timecodeburn.h
@brief Declares the AJATimeCodeBurn class.
@copyright (C) 2012-2021 AJA Video Systems, Inc. All rights reserved.
**/
#ifndef AJA_TIMECODEBURN_H
#define AJA_TIMECODEBURN_H
#include "public.h"
//#include "ajabase/common/types.h"
#include "ajabase/common/videotypes.h"
/**
* Class to support burning a simple timecode over raster.
* @ingroup AJATimeCodeBurn
*/
class AJATimeCodeBurn
{
public:
AJA_EXPORT AJATimeCodeBurn(void);
AJA_EXPORT virtual ~AJATimeCodeBurn(void);
/**
* Render a small set of characters for timecode ahead of time...This needs to be called before
* BurnTimeCode or BurnTimeCode will fail.
*
* @param[in] pixelFormat Specifies the pixel format of the rendering buffer.
* @param[in] numPixels Specifies the raster bitmap width.
* @param[in] numLines Specifies the raster bitmap height.
*/
AJA_EXPORT bool RenderTimeCodeFont (AJA_PixelFormat pixelFormat, uint32_t numPixels, uint32_t numLines);
/**
* Burns a timecode in with simple font 00:00:00;00.
*
*
* @param[in] pBaseVideoAddress Base address of Raster
* @param[in] inTimeCodeStr A string containing something like "00:00:00:00"
* @param[in] inYPercent Percent down the screen. If 0, will make it 80.
* @returns True if successful; otherwise false.
*/
AJA_EXPORT bool BurnTimeCode (void * pBaseVideoAddress, const std::string & inTimeCodeStr, const uint32_t inYPercent);
/**
* DEPRECATED: Use std::string version of this function.
*/
AJA_EXPORT bool BurnTimeCode (char * pBaseVideoAddress, const char * pTimeCodeString, const uint32_t percentY);
protected:
void CopyDigit (int digitOffset,char *pFrameBuff);
void writeV210Pixel (char **pBytePtr, int x, int c, int y);
void writeYCbCr10PackedPlanerPixel (char **pBytePtr, int x, int y);
private:
bool _bRendered; // set 'true' when Burn-In character map has been rendered
char * _pCharRenderMap; // ptr to rendered Burn-In character set
AJA_PixelFormat _charRenderPixelFormat; // frame buffer format of rendered characters
int _charRenderHeight; // frame height for which rendered characters were rendered
int _charRenderWidth; // frame width for which rendered characters were rendered
int _charWidthBytes; // rendered character width in bytes
int _charHeightLines; // rendered character height in frame lines
int _charPositionX; // offset (in bytes) from left side of screen to first burn-in character
int _charPositionY; // offset (in lines) from top of screen to top of burn-in characters
int _rowBytes;
};
#endif