All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PColourConverter Class Referenceabstract

This class defines a means to convert an image from one colour format to another. More...

`#include <vconvert.h>`

Inheritance diagram for PColourConverter:

## Public Member Functions

| PColourConverter (const PString &srcColourFormat, const PString &dstColourFormat, unsigned width, unsigned height)
| Create a new converter. More...
| PColourConverter (const PVideoFrameInfo &src, const PVideoFrameInfo &dst)
virtual void | PrintOn (ostream &strm) const
| Print description of converter. More...
PBoolean | GetVFlipState ()
| Get the video conversion vertical flip state. More...
void | SetVFlipState (PBoolean vFlipState)
| Set the video conversion vertical flip state. More...
virtual PBoolean | SetFrameSize (unsigned width, unsigned height)
| Set the frame size to be used. More...
virtual PBoolean | SetSrcFrameInfo (const PVideoFrameInfo &info)
| Set the source frame info to be used. More...
virtual PBoolean | SetDstFrameInfo (const PVideoFrameInfo &info)
| Set the destination frame info to be used. More...
virtual void | GetSrcFrameInfo (PVideoFrameInfo &info)
| Get the source frame info to be used. More...
virtual void | GetDstFrameInfo (PVideoFrameInfo &info)
| Get the destination frame info to be used. More...
virtual PBoolean | SetSrcFrameSize (unsigned width, unsigned height)
| Set the source frame size to be used. More...
virtual PBoolean | SetDstFrameSize (unsigned width, unsigned height)
| Set the destination frame size to be used. More...
virtual PBoolean | SetDstFrameSize (unsigned width, unsigned height, PBoolean bScale)
const PString & | GetSrcColourFormat ()
| Get the source colour format. More...
const PString & | GetDstColourFormat ()
| Get the destination colour format. More...
PINDEX | GetMaxSrcFrameBytes ()
| Get the maximum frame size in bytes for source frames. More...
PINDEX | GetMaxDstFrameBytes ()
| Get the maximum frame size in bytes for destination frames. More...
virtual PBoolean | Convert (const BYTE *srcFrameBuffer, BYTE *dstFrameBuffer, PINDEX *bytesReturned=NULL)=0
| Convert from one colour format to another. More...
virtual PBoolean | Convert (const BYTE *srcFrameBuffer, BYTE *dstFrameBuffer, unsigned int srcFrameBytes, PINDEX *bytesReturned=NULL)=0
virtual PBoolean | ConvertInPlace (BYTE *frameBuffer, PINDEX *bytesReturned=NULL, PBoolean noIntermediateFrame=false)
| Convert from one colour format to another. More...
PBoolean | GetDstFrameSize (unsigned &width, unsigned &height) const
| Get the output frame size. More...
PBoolean | GetSrcFrameSize (unsigned &width, unsigned &height) const
| Get the input frame size. More...
unsigned | GetSrcFrameWidth () const
unsigned | GetSrcFrameHeight () const
unsigned | GetDstFrameWidth () const
unsigned | GetDstFrameHeight () const
void | SetResizeMode (PVideoFrameInfo::ResizeMode mode)
| Set the resize mode to be used. More...
PVideoFrameInfo::ResizeMode | GetResizeMode () const
| Get the resize mode to be used. More...
Public Member Functions inherited from PObject
virtual | ~PObject ()
virtual PObject * | Clone () const
| Create a copy of the class on the heap. More...
virtual PINDEX | HashFunction () const
| This function yields a hash value required by the `PDictionary` class. More...
virtual Comparison | Compare (const PObject &obj) const
| Compare the two objects and return their relative rank. More...
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const
| Determine the byte wise comparison of two objects. More...
bool | operator== (const PObject &obj) const
| Compare the two objects. More...
bool | operator!= (const PObject &obj) const
| Compare the two objects. More...
bool | operator< (const PObject &obj) const
| Compare the two objects. More...
bool | operator> (const PObject &obj) const
| Compare the two objects. More...
bool | operator<= (const PObject &obj) const
| Compare the two objects. More...
bool | operator>= (const PObject &obj) const
| Compare the two objects. More...
virtual const char * | GetClass (unsigned ancestor=0) const
| Get the current dynamic type of the object instance. More...
PBoolean | IsClass (const char *cls) const
virtual PBoolean | InternalIsDescendant (const char *clsName) const
| Determine if the dynamic type of the current instance is a descendent of the specified class. More...
virtual void | ReadFrom (istream &strm)
| Input the contents of the object from the stream. More...

## Static Public Member Functions

static PColourConverter * | Create (const PVideoFrameInfo &src, const PVideoFrameInfo &dst)
| Create an instance of a colour conversion function. More...
static PColourConverter * | Create (const PString &srcColourFormat, const PString &destColourFormat, unsigned width, unsigned height)
static void | RGBtoYUV (unsigned r, unsigned g, unsigned b, unsigned &y, unsigned &u, unsigned &v)
| Convert RGB to YUV. More...
static void | RGBtoYUV (unsigned r, unsigned g, unsigned b, BYTE &y, BYTE &u, BYTE &v)
static bool | CopyYUV420P (unsigned srcX, unsigned srcY, unsigned srcWidth, unsigned srcHeight, unsigned srcFrameWidth, unsigned srcFrameHeight, const BYTE *srcYUV, unsigned dstX, unsigned dstY, unsigned dstWidth, unsigned dstHeight, unsigned dstFrameWidth, unsigned dstFrameHeight, BYTE *dstYUV, PVideoFrameInfo::ResizeMode resizeMode)
| Copy a section of the source frame to a section of the destination frame with scaling/cropping as required. More...
static bool | FillYUV420P (unsigned x, unsigned y, int width, int height, unsigned frameWidth, unsigned frameHeight, BYTE *yuv, unsigned r, unsigned g, unsigned b)
Static Public Member Functions inherited from PObject
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
| Internal function caled from CompareObjectMemoryDirect() More...
static const char * | Class ()
| Get the name of the class as a C string. More...

## Protected Member Functions

void | Construct (const PVideoFrameInfo &src, const PVideoFrameInfo &dst)
Protected Member Functions inherited from PObject
| PObject ()
| Constructor for PObject, made protected so cannot ever create one on its own. More...

## Protected Attributes

PString | srcColourFormat
PString | dstColourFormat
unsigned | srcFrameWidth
unsigned | srcFrameHeight
unsigned | srcFrameBytes
unsigned | dstFrameWidth
unsigned | dstFrameHeight
unsigned | dstFrameBytes
PVideoFrameInfo::ResizeMode | resizeMode
PBoolean | verticalFlip
PBYTEArray | intermediateFrameStore
struct jdec_private * | jdec

## Detailed Description

This class defines a means to convert an image from one colour format to another.

It is an ancestor class for the individual formatting functions.

## Constructor & Destructor Documentation

PColourConverter::PColourConverter | ( | const PString & | srcColourFormat,
|  | const PString & | dstColourFormat,
|  | unsigned | width,
|  | unsigned | height
| ) |  |

Create a new converter.

Parameters

  srcColourFormat | Name of source colour format
  dstColourFormat | Name of destination colour format
  width | Width of frame
  height | Height of frame

PColourConverter::PColourConverter | ( | const PVideoFrameInfo & | src,
|  | const PVideoFrameInfo & | dst
| ) |  |

Parameters

  src | Source frame info (colour formet, size etc)
  dst | Destination frame info

## Member Function Documentation

void PColourConverter::Construct | ( | const PVideoFrameInfo & | src,
|  | const PVideoFrameInfo & | dst
| ) |  |

protected

Parameters

  src | Source frame info (colour formet, size etc)
  dst | Destination frame info

virtual PBoolean PColourConverter::Convert | ( | const BYTE * | srcFrameBuffer,
|  | BYTE * | dstFrameBuffer,
|  | PINDEX * | bytesReturned = `NULL`
| ) |  |

pure virtual

Convert from one colour format to another.

This version will copy the data from one frame buffer to another. An implementation of this function should allow for the case of where srcFrameBuffer and dstFrameBuffer are the same, if the conversion algorithm allows for that to occur without an intermediate frame store.

The function should return false if srcFrameBuffer and dstFrameBuffer are the same and that form pf conversion is not allowed

Parameters

  srcFrameBuffer | Frame store for source pixels
  dstFrameBuffer | Frame store for destination pixels
  bytesReturned | Bytes written to dstFrameBuffer

Implemented in PSynonymColour.

virtual PBoolean PColourConverter::Convert | ( | const BYTE * | srcFrameBuffer,
|  | BYTE * | dstFrameBuffer,
|  | unsigned int | srcFrameBytes,
|  | PINDEX * | bytesReturned = `NULL`
| ) |  |

pure virtual

Parameters

  srcFrameBuffer | Frame store for source pixels
  dstFrameBuffer | Frame store for destination pixels
  srcFrameBytes | Bytes used in source frame buffer
  bytesReturned | Bytes written to dstFrameBuffer

Implemented in PSynonymColour.

virtual PBoolean PColourConverter::ConvertInPlace | ( | BYTE * | frameBuffer,
|  | PINDEX * | bytesReturned = `NULL`,
|  | PBoolean | noIntermediateFrame = `false`
| ) |  |

virtual

Convert from one colour format to another.

This version will copy the data from one frame buffer to the same frame buffer. Not all conversions can do this so an intermediate store and copy may be required. If the noIntermediateFrame parameter is true and the conversion cannot be done in place then the function returns false. If the in place conversion can be done then that parameter is ignored.

Note that the frame should be large enough to take the destination pixels.

Default behaviour calls Convert() from the frameBuffer to itself, and if that returns false then calls it again (provided noIntermediateFrame is false) using an intermediate store, copying the intermediate store back to the original frame store.

Parameters

  frameBuffer | Frame buffer to translate data
  bytesReturned | Bytes written to frameBuffer
  noIntermediateFrame | Flag to use intermediate store

static bool PColourConverter::CopyYUV420P | ( | unsigned | srcX,
|  | unsigned | srcY,
|  | unsigned | srcWidth,
|  | unsigned | srcHeight,
|  | unsigned | srcFrameWidth,
|  | unsigned | srcFrameHeight,
|  | const BYTE * | srcYUV,
|  | unsigned | dstX,
|  | unsigned | dstY,
|  | unsigned | dstWidth,
|  | unsigned | dstHeight,
|  | unsigned | dstFrameWidth,
|  | unsigned | dstFrameHeight,
|  | BYTE * | dstYUV,
|  | PVideoFrameInfo::ResizeMode | resizeMode
| ) |  |

static

Copy a section of the source frame to a section of the destination frame with scaling/cropping as required.

static PColourConverter* PColourConverter::Create | ( | const PVideoFrameInfo & | src,
|  | const PVideoFrameInfo & | dst
| ) |  |

static

Create an instance of a colour conversion function.

Returns NULL if there is no registered colour converter between the two named formats.

Parameters

  src | Source frame info (colour formet, size etc)
  dst | Destination frame info

static PColourConverter* PColourConverter::Create | ( | const PString & | srcColourFormat,
|  | const PString & | destColourFormat,
|  | unsigned | width,
|  | unsigned | height
| ) |  |

static

static bool PColourConverter::FillYUV420P | ( | unsigned | x,
|  | unsigned | y,
|  | int | width,
|  | int | height,
|  | unsigned | frameWidth,
|  | unsigned | frameHeight,
|  | BYTE * | yuv,
|  | unsigned | r,
|  | unsigned | g,
|  | unsigned | b
| ) |  |

static

const PString& PColourConverter::GetDstColourFormat | ( |  | ) |

inline

Get the destination colour format.

References dstColourFormat.

unsigned PColourConverter::GetDstFrameHeight | ( |  | ) | const

inline

References dstFrameHeight.

virtual void PColourConverter::GetDstFrameInfo | ( | PVideoFrameInfo & | info | ) |

virtual

Get the destination frame info to be used.

Parameters

  info | New info for frame

PBoolean PColourConverter::GetDstFrameSize | ( | unsigned & | width,
|  | unsigned & | height
| ) |  | const

Get the output frame size.

Parameters

  width | Width of destination frame
  height | Height of destination frame

unsigned PColourConverter::GetDstFrameWidth | ( |  | ) | const

inline

References dstFrameWidth.

PINDEX PColourConverter::GetMaxDstFrameBytes | ( |  | ) |

inline

Get the maximum frame size in bytes for destination frames.

Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames.

References dstFrameBytes.

PINDEX PColourConverter::GetMaxSrcFrameBytes | ( |  | ) |

inline

Get the maximum frame size in bytes for source frames.

Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames.

References srcFrameBytes.

PVideoFrameInfo::ResizeMode PColourConverter::GetResizeMode | ( |  | ) | const

inline

Get the resize mode to be used.

References resizeMode.

const PString& PColourConverter::GetSrcColourFormat | ( |  | ) |

inline

Get the source colour format.

References srcColourFormat.

unsigned PColourConverter::GetSrcFrameHeight | ( |  | ) | const

inline

References srcFrameHeight.

virtual void PColourConverter::GetSrcFrameInfo | ( | PVideoFrameInfo & | info | ) |

virtual

Get the source frame info to be used.

Parameters

  info | New info for frame

PBoolean PColourConverter::GetSrcFrameSize | ( | unsigned & | width,
|  | unsigned & | height
| ) |  | const

Get the input frame size.

Parameters

  width | Width of source frame
  height | Height of source frame

unsigned PColourConverter::GetSrcFrameWidth | ( |  | ) | const

inline

References srcFrameWidth.

PBoolean PColourConverter::GetVFlipState | ( |  | ) |

inline

Get the video conversion vertical flip state.

References verticalFlip.

virtual void PColourConverter::PrintOn | ( | ostream & | strm | ) | const

virtual

Print description of converter.

Reimplemented from PObject.

static void PColourConverter::RGBtoYUV | ( | unsigned | r,
|  | unsigned | g,
|  | unsigned | b,
|  | unsigned & | y,
|  | unsigned & | u,
|  | unsigned & | v
| ) |  |

static

Convert RGB to YUV.

static void PColourConverter::RGBtoYUV | ( | unsigned | r,
|  | unsigned | g,
|  | unsigned | b,
|  | BYTE & | y,
|  | BYTE & | u,
|  | BYTE & | v
| ) |  |

static

virtual PBoolean PColourConverter::SetDstFrameInfo | ( | const PVideoFrameInfo & | info | ) |

virtual

Set the destination frame info to be used.

Default behaviour sets the dstFrameWidth and dstFrameHeight variables, and the scale / crop preference. It then recalculates the frame buffer size in bytes then returns true if the size was calculated correctly.

Returns false if the colour formats do not agree.

Parameters

  info | New info for frame

virtual PBoolean PColourConverter::SetDstFrameSize | ( | unsigned | width,
|  | unsigned | height
| ) |  |

virtual

Set the destination frame size to be used.

Default behaviour sets the dstFrameWidth and dstFrameHeight variables, and the scale / crop preference. It then recalculates the frame buffer size in bytes then returns true if the size was calculated correctly.

Parameters

  width | New width of target frame
  height | New height of target frame

virtual PBoolean PColourConverter::SetDstFrameSize | ( | unsigned | width,
|  | unsigned | height,
|  | PBoolean | bScale
| ) |  |

virtual

Parameters

  width | New width of target frame
  height | New height of target frame
  bScale | Indicate if scaling or cropping is to be used

virtual PBoolean PColourConverter::SetFrameSize | ( | unsigned | width,
|  | unsigned | height
| ) |  |

virtual

Set the frame size to be used.

Default behaviour calls SetSrcFrameSize() and SetDstFrameSize().

Parameters

  width | New width of frame
  height | New height of frame

void PColourConverter::SetResizeMode | ( | PVideoFrameInfo::ResizeMode | mode | ) |

inline

Set the resize mode to be used.

References PVideoFrameInfo::eMaxResizeMode, and resizeMode.

virtual PBoolean PColourConverter::SetSrcFrameInfo | ( | const PVideoFrameInfo & | info | ) |

virtual

Set the source frame info to be used.

Default behaviour sets the srcFrameWidth and srcFrameHeight variables and recalculates the frame buffer size in bytes then returns true if the size was calculated correctly.

Returns false if the colour formats do not agree.

Parameters

  info | New info for frame

virtual PBoolean PColourConverter::SetSrcFrameSize | ( | unsigned | width,
|  | unsigned | height
| ) |  |

virtual

Set the source frame size to be used.

Default behaviour sets the srcFrameWidth and srcFrameHeight variables and recalculates the frame buffer size in bytes then returns true if the size was calculated correctly.

Parameters

  width | New width of frame
  height | New height of frame

void PColourConverter::SetVFlipState | ( | PBoolean | vFlipState | ) |

inline

Set the video conversion vertical flip state.

Parameters

  vFlipState | New state for flipping images

References verticalFlip.

## Member Data Documentation

PString PColourConverter::dstColourFormat

protected

Referenced by GetDstColourFormat().

unsigned PColourConverter::dstFrameBytes

protected

Referenced by GetMaxDstFrameBytes().

unsigned PColourConverter::dstFrameHeight

protected

Referenced by GetDstFrameHeight().

unsigned PColourConverter::dstFrameWidth

protected

Referenced by GetDstFrameWidth().

PBYTEArray PColourConverter::intermediateFrameStore

protected

struct jdec_private* PColourConverter::jdec

protected

PVideoFrameInfo::ResizeMode PColourConverter::resizeMode

protected

Referenced by GetResizeMode(), and SetResizeMode().

PString PColourConverter::srcColourFormat

protected

Referenced by GetSrcColourFormat().

unsigned PColourConverter::srcFrameBytes

protected

Referenced by GetMaxSrcFrameBytes().

unsigned PColourConverter::srcFrameHeight

protected

Referenced by GetSrcFrameHeight().

unsigned PColourConverter::srcFrameWidth

protected

Referenced by GetSrcFrameWidth().

PBoolean PColourConverter::verticalFlip

protected

Referenced by GetVFlipState(), and SetVFlipState().

The documentation for this class was generated from the following file:

- vconvert.h