Imported Upstream version 1.4
[deb_x265.git] / source / common / piclist.h
CommitLineData
72b9787e
JB
1/*****************************************************************************
2 * Copyright (C) 2013 x265 project
3 *
4 * Authors: Gopu Govindaswamy <gopu@multicorewareinc.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
19 *
20 * This program is also available under a commercial proprietary license.
21 * For more information, contact us at license @ x265.com.
22 *****************************************************************************/
23
24#ifndef X265_PICLIST_H
25#define X265_PICLIST_H
26
27#include <cstdlib>
28
29namespace x265 {
30class Frame;
31
32class PicList
33{
34protected:
35
36 Frame* m_start;
37 Frame* m_end;
38 int m_count;
39
40public:
41
42 PicList()
43 {
44 m_start = NULL;
45 m_end = NULL;
46 m_count = 0;
47 }
48
49 /** Push picture to end of the list */
50 void pushBack(Frame& pic);
51
52 /** Push picture to beginning of the list */
53 void pushFront(Frame& pic);
54
55 /** Pop picture from end of the list */
56 Frame* popBack();
57
58 /** Pop picture from beginning of the list */
59 Frame* popFront();
60
61 /** Find frame with specified POC */
62 Frame* getPOC(int poc);
63
64 /** Remove picture from list */
65 void remove(Frame& pic);
66
67 Frame* first() { return m_start; }
68
69 Frame* last() { return m_end; }
70
71 int size() { return m_count; }
72
73 bool empty() const { return !m_count; }
74
75 operator bool() const { return !!m_count; }
76};
77}
78
79#endif // ifndef X265_PICLIST_H