Dirac - A Video Codec

Created by the British Broadcasting Corporation.


Public Member Functions | Private Member Functions | Private Attributes | List of all members
dirac::PictureBuffer Class Reference

Holds pictures both for reference and to overcome reordering delay. More...

#include <picture_buffer.h>

Public Member Functions

 PictureBuffer ()
 Default Constructor. More...
 
 PictureBuffer (ChromaFormat cf, const int xlen, const int ylen, const unsigned int luma_depth, const unsigned int chroma_depth, bool using_ac)
 Constructor. More...
 
 PictureBuffer (ChromaFormat cf, const int numL1, const int L1sep, const int xlen, const int ylen, const unsigned int luma_depth, const unsigned int chroma_depth, bool interlace, bool using_ac)
 Constructor. More...
 
 PictureBuffer (const PictureBuffer &cpy)
 Copy constructor. More...
 
PictureBufferoperator= (const PictureBuffer &rhs)
 Operator=. More...
 
 ~PictureBuffer ()
 Destructor. More...
 
PictureGetPicture (const unsigned int pnum)
 Get picture with a given picture number (NOT with a given position in the buffer) More...
 
const PictureGetPicture (const unsigned int pnum) const
 Get picture with a given picture number (NOT with a given position in the buffer) More...
 
PictureGetPicture (const unsigned int pnum, bool &is_present)
 Get picture with a given picture number, setting a flag to true if it's there. More...
 
const PictureGetPicture (const unsigned int pnum, bool &is_present) const
 Get picture with a given picture number, setting a flag to true if it's there. More...
 
bool IsPictureAvail (const unsigned int pnum) const
 Return true if picture with the particular picture number is available else return false. More...
 
std::vector< int > Members () const
 Returns a list of member pictures. More...
 
void PushPicture (const PictureParams &pp)
 Put a new picture into the top of the buffer. More...
 
void CopyPicture (const Picture &picture)
 Put a copy of a new picture into the buffer. More...
 
void SetRetiredPictureNum (const int show_pnum, const int current_coded_pnum)
 Sets the reference picture number that will be cleaned. More...
 
void Remove (int pnum)
 Delete picture. More...
 

Private Member Functions

void ClearSlot (const unsigned int pos)
 Clear internal data slot number pos. More...
 

Private Attributes

std::vector< Picture * > m_pic_data
 the buffer storing all the values More...
 
std::map< unsigned int, unsigned int > m_pnum_map
 the map from picture numbers to position in the buffer More...
 

Detailed Description

The buffer holds pictures in a stack to overcome both reordering due to bi-directional prediction and use as references for subsequence motion estimation. Pictures, and components of pictures, can be accessed by their picture numbers. GOP parameters can be included in the constructors so that pictures can be given types (I picture, L1 picture or L2 picture) on being pushed onto the stack; alternatively, these parameters can be overridden.

Constructor & Destructor Documentation

◆ PictureBuffer() [1/4]

dirac::PictureBuffer::PictureBuffer ( )

◆ PictureBuffer() [2/4]

dirac::PictureBuffer::PictureBuffer ( ChromaFormat  cf,
const int  xlen,
const int  ylen,
const unsigned int  luma_depth,
const unsigned int  chroma_depth,
bool  using_ac 
)

Creates a PictureBuffer using the chroma format. Suitable for compressing when there are no L2 pictures, or when the temporal prediction structure is to be determined on the fly.

Parameters
cfthe Chroma format of pictures in the buffer
xlenthe luma width of pictures in the buffer
ylenthe luma height of pictures in the buffer
luma_depththe video depth of the luma comp in the buffer
chroma_depththe video depth of the chroma comp in the buffer
using_acTrue if using Arithmetic coding to code coefficient data

◆ PictureBuffer() [3/4]

dirac::PictureBuffer::PictureBuffer ( ChromaFormat  cf,
const int  numL1,
const int  L1sep,
const int  xlen,
const int  ylen,
const unsigned int  luma_depth,
const unsigned int  chroma_depth,
bool  interlace,
bool  using_ac 
)

Creates a PictureBuffer using the chroma format, the number of L1 pictures between I pictures and the separation in pictures between L1 pictures. Suitable for compressing when there is a full GOP structure or when the temporal prediction structure is to be determined on the fly.

Parameters
cfthe Chroma format of pictures in the buffer
numL1the number of Layer 1 pictures before the next I picture. 0 means that there is only one I picture.
L1septhe number of Layer 2 pictures between Layer 1 pictures
xlenthe luma width of pictures in the buffer
ylenthe luma height of pictures in the buffer
luma_depththe video depth of the luma comp in the buffer
chroma_depththe video depth of the chroma comp in the buffer
interlaceSet true if material is being coded in interlaced mode
using_acTrue if using Arithmetic coding to code coefficient data

◆ PictureBuffer() [4/4]

dirac::PictureBuffer::PictureBuffer ( const PictureBuffer cpy)

Copy constructor. Removes the current contents of the pictureture buffer and copies in the contents of the initialising buffer.

◆ ~PictureBuffer()

dirac::PictureBuffer::~PictureBuffer ( )

Member Function Documentation

◆ ClearSlot()

void dirac::PictureBuffer::ClearSlot ( const unsigned int  pos)
private

Clear internal data slot number pos

◆ CopyPicture()

void dirac::PictureBuffer::CopyPicture ( const Picture picture)

Put a copy of a new picture into the buffer.

◆ GetPicture() [1/4]

Picture & dirac::PictureBuffer::GetPicture ( const unsigned int  pnum)

◆ GetPicture() [2/4]

const Picture & dirac::PictureBuffer::GetPicture ( const unsigned int  pnum) const

◆ GetPicture() [3/4]

Picture & dirac::PictureBuffer::GetPicture ( const unsigned int  pnum,
bool &  is_present 
)

◆ GetPicture() [4/4]

const Picture & dirac::PictureBuffer::GetPicture ( const unsigned int  pnum,
bool &  is_present 
) const

◆ IsPictureAvail()

bool dirac::PictureBuffer::IsPictureAvail ( const unsigned int  pnum) const

◆ Members()

std::vector< int > dirac::PictureBuffer::Members ( ) const

◆ operator=()

PictureBuffer & dirac::PictureBuffer::operator= ( const PictureBuffer rhs)

Operator=. Assigns all elements of the rhs to the lhs.

◆ PushPicture()

void dirac::PictureBuffer::PushPicture ( const PictureParams pp)

Put a new picture into the top of the buffer. Picture parameters associated with the picture will be as given by the picture parameter object.

◆ Remove()

void dirac::PictureBuffer::Remove ( int  pnum)

Delete picture.

Parameters
pnumpicture number in display order to be deleted from picture buffer

◆ SetRetiredPictureNum()

void dirac::PictureBuffer::SetRetiredPictureNum ( const int  show_pnum,
const int  current_coded_pnum 
)

Indicate which picture which has been output and which is no longer required for reference. Expiry times are set in each picture's picture parameters.

Parameters
show_pnumpicture number in display order that can be output
current_coded_pnumpicture number in display order of picture currently being coded

Member Data Documentation

◆ m_pic_data

std::vector<Picture*> dirac::PictureBuffer::m_pic_data
private

◆ m_pnum_map

std::map<unsigned int,unsigned int> dirac::PictureBuffer::m_pnum_map
private

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

© 2004 British Broadcasting Corporation. Dirac code licensed under the Mozilla Public License (MPL) Version 1.1.
HTML documentation generated by Dimitri van Heesch's excellent Doxygen tool.