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>
45 #include <libdirac_common/common.h>
46 
47 namespace dirac
48 {
50 
60  public:
62  PictureBuffer();
63 
65 
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 
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 
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
bool IsPictureAvail(const unsigned int pnum) const
Return true if picture with the particular picture number is available else return false...
void ClearSlot(const unsigned int pos)
Clear internal data slot number pos.
Picture & GetPicture(const unsigned int pnum)
Get picture with a given picture number (NOT with a given position in the buffer) ...
PictureBuffer & operator=(const PictureBuffer &rhs)
Operator=.
void Remove(int pnum)
Delete picture.
PictureBuffer()
Default Constructor.
~PictureBuffer()
Destructor.
ChromaFormat
Definition: common_types.h:58
Parameters for initialising picture class objects.
Definition: common.h:532
void SetRetiredPictureNum(const int show_pnum, const int current_coded_pnum)
Sets the reference picture number that will be cleaned.
void PushPicture(const PictureParams &pp)
Put a new picture into the top of the buffer.
void CopyPicture(const Picture &picture)
Put a copy of a new picture into the buffer.
Definition of class SequenceHeaderByteIO.
Definition: accessunit_byteio.h:51
Holds pictures both for reference and to overcome reordering delay.
Definition: picture_buffer.h:59
std::vector< Picture * > m_pic_data
the buffer storing all the values
Definition: picture_buffer.h:189
std::vector< int > Members() const
Returns a list of member pictures.
std::map< unsigned int, unsigned int > m_pnum_map
the map from picture numbers to position in the buffer
Definition: picture_buffer.h:192
A class for encapsulating all the data relating to a picture.
Definition: picture.h:51

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