Dirac - A Video Codec

Created by the British Broadcasting Corporation.


enc_queue.h
Go to the documentation of this file.
1 /* ***** BEGIN LICENSE BLOCK *****
2 *
3 * $Id: enc_queue.h,v 1.3 2008/08/14 02:30:50 asuraparaju 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 _ENC_QUEUE_H_
40 #define _ENC_QUEUE_H_
41 
42 #include <vector>
43 #include <map>
45 #include <libdirac_common/common.h>
46 
47 namespace dirac
48 {
50 
59  class EncQueue{
60  public:
62  EncQueue();
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  EncQueue(const EncQueue& cpy);
119 
121 
124  EncQueue& operator=(const EncQueue& rhs);
125 
127  ~EncQueue();
128 
130  EncPicture& GetPicture(const unsigned int pnum );
131 
133  const EncPicture& GetPicture(const unsigned int pnum) const;
134 
136  EncPicture& GetPicture(const unsigned int pnum, bool& is_present);
137 
139  const EncPicture& 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  int Size() const { return m_pic_data.size(); }
149 
151 
156  void PushPicture(const PictureParams& pp);
157 
159 
162  void CopyPicture( const EncPicture& picture );
163 
165 
172  void SetRetiredPictureNum(const int show_pnum, const int current_coded_pnum);
173 
175 
182  void CleanAll(const int show_pnum, const int current_coded_pnum);
183 
185 
191  void CleanRetired(const int show_pnum, const int current_coded_pnum);
192 
194 
198  void Remove(int pnum);
199 
200  private:
202 
205  void ClearSlot(const unsigned int pos);
206 
207  private:
208 
209 // //! the count of the number of reference pictures in the buffer
210 // int m_ref_count;
211 
213  std::vector<EncPicture*> m_pic_data;
214 
216  std::map<unsigned int,unsigned int> m_pnum_map;
217 
218  };
219 
220 } // namespace dirac
221 
222 #endif
void PushPicture(const PictureParams &pp)
Put a new picture into the top of the buffer.
Definition: enc_picture.h:64
void SetRetiredPictureNum(const int show_pnum, const int current_coded_pnum)
Sets the reference picture number that will be cleaned.
std::map< unsigned int, unsigned int > m_pnum_map
the map from picture numbers to position in the buffer
Definition: enc_queue.h:216
EncQueue & operator=(const EncQueue &rhs)
Operator=.
void ClearSlot(const unsigned int pos)
Clear internal data slot number pos.
void CleanRetired(const int show_pnum, const int current_coded_pnum)
Delete retired reference pictures and expired non-ref pictures.
int Size() const
Returns the size of the queue.
Definition: enc_queue.h:148
void CopyPicture(const EncPicture &picture)
Put a copy of a new picture into the buffer.
void CleanAll(const int show_pnum, const int current_coded_pnum)
Delete all expired pictures.
ChromaFormat
Definition: common_types.h:58
EncQueue()
Default Constructor.
Parameters for initialising picture class objects.
Definition: common.h:532
std::vector< EncPicture * > m_pic_data
the buffer storing all the values
Definition: enc_queue.h:213
EncPicture & GetPicture(const unsigned int pnum)
Get picture with a given picture number (NOT with a given position in the buffer) ...
std::vector< int > Members() const
Returns a list of member pictures.
Definition of class SequenceHeaderByteIO.
Definition: accessunit_byteio.h:51
bool IsPictureAvail(const unsigned int pnum) const
Return true if picture with the particular picture number is available else return false...
Holds pictures both for reference and to overcome reordering delay.
Definition: enc_queue.h:59
void Remove(int pnum)
Delete picture.
~EncQueue()
Destructor.

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