33 #ifndef PTLIB_CONVERT_H
34 #define PTLIB_CONVERT_H
42 #include <ptbuildopts.h>
61 const PString & srcColourFormat,
62 const PString & destColourFormat
87 const PString & srcColourFormat,
88 const PString & dstColourFormat,
218 const BYTE * srcFrameBuffer,
219 BYTE * dstFrameBuffer,
220 PINDEX * bytesReturned = NULL
224 const BYTE * srcFrameBuffer,
225 BYTE * dstFrameBuffer,
226 unsigned int srcFrameBytes,
227 PINDEX * bytesReturned = NULL
248 PINDEX * bytesReturned = NULL,
249 PBoolean noIntermediateFrame =
false
262 const PString & srcColourFormat,
263 const PString & destColourFormat,
290 PVideoFrameInfo::ResizeMode mode
291 ) {
if (mode < PVideoFrameInfo::eMaxResizeMode)
m_resizeMode = mode; }
300 unsigned r,
unsigned g,
unsigned b,
301 unsigned & y,
unsigned & u,
unsigned & v
304 unsigned r,
unsigned g,
unsigned b,
305 BYTE & y, BYTE & u, BYTE & v
312 unsigned srcX,
unsigned srcY,
unsigned srcWidth,
unsigned srcHeight,
313 unsigned srcFrameWidth,
unsigned srcFrameHeight,
const BYTE * srcYUV,
314 unsigned dstX,
unsigned dstY,
unsigned dstWidth,
unsigned dstHeight,
315 unsigned dstFrameWidth,
unsigned dstFrameHeight, BYTE * dstYUV,
316 PVideoFrameInfo::ResizeMode resizeMode
326 int angle,
unsigned width,
unsigned height, BYTE * srcYUV, BYTE * dstYUV = NULL
332 unsigned x,
unsigned y,
unsigned width,
unsigned height,
333 unsigned frameWidth,
unsigned frameHeight, BYTE * yuv,
334 unsigned r,
unsigned g,
unsigned b
368 #define PCOLOUR_CONVERTER2(cls,ancestor,srcFmt,dstFmt) \
369 class cls : public ancestor { \
371 cls(const PVideoFrameInfo & src, const PVideoFrameInfo & dst) \
372 : ancestor(src, dst) { } \
373 virtual PBoolean Convert(const BYTE *, BYTE *, PINDEX * = NULL); \
374 virtual PBoolean Convert(const BYTE *, BYTE *, unsigned int , PINDEX * = NULL); \
376 static class cls##_Registration : public PColourConverterRegistration { \
377 public: cls##_Registration() \
378 : PColourConverterRegistration(srcFmt,dstFmt) { } \
379 protected: virtual PColourConverter * Create(const PVideoFrameInfo & src, const PVideoFrameInfo & dst) const; \
380 } p_##cls##_registration_instance; \
381 PColourConverter * cls##_Registration::Create(const PVideoFrameInfo & src, const PVideoFrameInfo & dst) const \
382 { return new cls(src, dst); } \
383 PBoolean cls::Convert(const BYTE *srcFrameBuffer, BYTE *dstFrameBuffer, unsigned int srcFrameBytes, PINDEX * bytesReturned) \
384 { m_srcFrameBytes = srcFrameBytes;return Convert(srcFrameBuffer, dstFrameBuffer, bytesReturned); } \
385 PBoolean cls::Convert(const BYTE *srcFrameBuffer, BYTE *dstFrameBuffer, PINDEX * bytesReturned)
393 #define PCOLOUR_CONVERTER(cls,src,dst) \
394 PCOLOUR_CONVERTER2(cls,PColourConverter,src,dst)
409 virtual PBoolean Convert(
const BYTE *, BYTE *,
unsigned int , PINDEX * = NULL);
433 #define PSYNONYM_COLOUR_CONVERTER(from,to) \
434 static PSynonymColourRegistration p_##from##_##to##_registration_instance(#from,#to)
439 #endif // PTLIB_CONVERT_H