# Dirac - A Video Codec

Created by the British Broadcasting Corporation.

picture_buffer.h
Go to the documentation of this file.
1/* ***** BEGIN LICENSE BLOCK *****
2*
3* $Id: picture_buffer.h,v 1.4 2008/06/19 10:07:03 tjdwave Exp $ $Name: Dirac_1_0_2 $
4*
5* Version: MPL 1.1/GPL 2.0/LGPL 2.1
6*
7* The contents of this file are subject to the Mozilla Public License
8* Version 1.1 (the "License"); you may not use this file except in compliance
9* with the License. You may obtain a copy of the License at
10* http://www.mozilla.org/MPL/
11*
12* Software distributed under the License is distributed on an "AS IS" basis,
13* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
14* the specific language governing rights and limitations under the License.
15*
16* The Original Code is BBC Research and Development code.
17*
18* The Initial Developer of the Original Code is the British Broadcasting
19* Corporation.
20* Portions created by the Initial Developer are Copyright (C) 2004.
21* All Rights Reserved.
22*
23* Contributor(s): Thomas Davies (Original Author),
24* Anuradha Suraparaju
25*
26* Alternatively, the contents of this file may be used under the terms of
27* the GNU General Public License Version 2 (the "GPL"), or the GNU Lesser
28* Public License Version 2.1 (the "LGPL"), in which case the provisions of
29* the GPL or the LGPL are applicable instead of those above. If you wish to
30* allow use of your version of this file only under the terms of the either
31* the GPL or LGPL and not to allow others to use your version of this file
32* under the MPL, indicate your decision by deleting the provisions above
33* and replace them with the notice and other provisions required by the GPL
34* or LGPL. If you do not delete the provisions above, a recipient may use
35* your version of this file under the terms of any one of the MPL, the GPL
36* or the LGPL.
37* ***** END LICENSE BLOCK ***** */
38
39#ifndef _PICTURE_BUFFER_H_
40#define _PICTURE_BUFFER_H_
41
42#include <vector>
43#include <map>
44#include <libdirac_common/picture.h>
45#include <libdirac_common/common.h>
46
47 namespace dirac
48{
50
59 class PictureBuffer{
60 public:
62 PictureBuffer();
63
65
78 PictureBuffer(ChromaFormat cf,
79 const int xlen,
80 const int ylen,
81 const unsigned int luma_depth,
82 const unsigned int chroma_depth,
83 bool using_ac);
84
86
103 PictureBuffer(ChromaFormat cf,
104 const int numL1,
105 const int L1sep,
106 const int xlen,
107 const int ylen,
108 const unsigned int luma_depth,
109 const unsigned int chroma_depth,
110 bool interlace,
111 bool using_ac);
112
114
118 PictureBuffer(const PictureBuffer& cpy);
119
121
124 PictureBuffer& operator=(const PictureBuffer& rhs);
125
127 ~PictureBuffer();
128
130 Picture& GetPicture(const unsigned int pnum );
131
133 const Picture& GetPicture(const unsigned int pnum) const;
134
136 Picture& GetPicture(const unsigned int pnum, bool& is_present);
137
139 const Picture& GetPicture(const unsigned int pnum, bool& is_present) const;
140
142 bool IsPictureAvail(const unsigned int pnum) const;
143
145 std::vector<int> Members() const;
146
148
153 void PushPicture(const PictureParams& pp);
154
156
159 void CopyPicture( const Picture& picture );
160
162
169 void SetRetiredPictureNum(const int show_pnum, const int current_coded_pnum);
170
172
176 void Remove(int pnum);
177
178 private:
180
183 void ClearSlot(const unsigned int pos);
184
185// //! the count of the number of reference pictures in the buffer
186// int m_ref_count;
187
189 std::vector<Picture*> m_pic_data;
190
192 std::map<unsigned int,unsigned int> m_pnum_map;
193
194 };
195
196} // namespace dirac
197
198#endif
ChromaFormat
ChromaFormat
Definition: common_types.h:58
picture.h
common.h
dirac
Definition of class SequenceHeaderByteIO.
Definition: accessunit_byteio.h:52
dirac::PictureParams
Parameters for initialising picture class objects.
Definition: common.h:533
dirac::Picture
A class for encapsulating all the data relating to a picture.
Definition: picture.h:52
dirac::PictureBuffer
Holds pictures both for reference and to overcome reordering delay.
Definition: picture_buffer.h:59
dirac::PictureBuffer::PushPicture
void PushPicture(const PictureParams &pp)
Put a new picture into the top of the buffer.
dirac::PictureBuffer::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)
Constructor.
dirac::PictureBuffer::~PictureBuffer
~PictureBuffer()
Destructor.
dirac::PictureBuffer::GetPicture
const Picture & GetPicture(const unsigned int pnum) const
Get picture with a given picture number (NOT with a given position in the buffer)
dirac::PictureBuffer::m_pic_data
std::vector< Picture * > m_pic_data
the buffer storing all the values
Definition: picture_buffer.h:189
dirac::PictureBuffer::GetPicture
const Picture & GetPicture(const unsigned int pnum, bool &is_present) const
Get picture with a given picture number, setting a flag to true if it's there.
dirac::PictureBuffer::PictureBuffer
PictureBuffer(ChromaFormat cf, const int xlen, const int ylen, const unsigned int luma_depth, const unsigned int chroma_depth, bool using_ac)
Constructor.
dirac::PictureBuffer::GetPicture
Picture & GetPicture(const unsigned int pnum)
Get picture with a given picture number (NOT with a given position in the buffer)
dirac::PictureBuffer::SetRetiredPictureNum
void SetRetiredPictureNum(const int show_pnum, const int current_coded_pnum)
Sets the reference picture number that will be cleaned.
dirac::PictureBuffer::GetPicture
Picture & GetPicture(const unsigned int pnum, bool &is_present)
Get picture with a given picture number, setting a flag to true if it's there.
dirac::PictureBuffer::IsPictureAvail
bool IsPictureAvail(const unsigned int pnum) const
Return true if picture with the particular picture number is available else return false.
dirac::PictureBuffer::PictureBuffer
PictureBuffer()
Default Constructor.
dirac::PictureBuffer::m_pnum_map
std::map< unsigned int, unsigned int > m_pnum_map
the map from picture numbers to position in the buffer
Definition: picture_buffer.h:192
dirac::PictureBuffer::PictureBuffer
PictureBuffer(const PictureBuffer &cpy)
Copy constructor.
dirac::PictureBuffer::operator=
PictureBuffer & operator=(const PictureBuffer &rhs)
Operator=.
dirac::PictureBuffer::Remove
void Remove(int pnum)
Delete picture.
dirac::PictureBuffer::ClearSlot
void ClearSlot(const unsigned int pos)
Clear internal data slot number pos.
dirac::PictureBuffer::Members
std::vector< int > Members() const
Returns a list of member pictures.
dirac::PictureBuffer::CopyPicture
void CopyPicture(const Picture &picture)
Put a copy of a new picture into the buffer.

© 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.