Coverage Report

Created: 2025-07-23 08:18

/src/x265/source/common/piclist.h
Line
Count
Source (jump to first uncovered line)
1
/*****************************************************************************
2
 * Copyright (C) 2013-2020 MulticoreWare, Inc
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 "common.h"
28
29
namespace X265_NS {
30
31
class Frame;
32
33
class PicList
34
{
35
protected:
36
37
    Frame*   m_start;
38
    Frame*   m_end;
39
    int      m_count;
40
41
public:
42
43
    PicList()
44
0
    {
45
0
        m_start = NULL;
46
0
        m_end   = NULL;
47
0
        m_count = 0;
48
0
    }
49
50
    /** Push picture to end of the list */
51
    void pushBack(Frame& pic);
52
    void pushBackMCSTF(Frame& pic);
53
#if ENABLE_MULTIVIEW
54
    void pushBackSubDPB(Frame& pic);
55
#endif
56
57
    /** Push picture to beginning of the list */
58
    void pushFront(Frame& pic);
59
    void pushFrontMCSTF(Frame& pic);
60
#if ENABLE_MULTIVIEW
61
    Frame* popFrontSubDPB();
62
#endif
63
64
    /** Pop picture from end of the list */
65
    Frame* popBack();
66
    Frame* popBackMCSTF();
67
68
    /** Pop picture from beginning of the list */
69
    Frame* popFront();
70
71
    /** Find frame with specified POC */
72
    Frame* getPOC(int poc, int sLayerId = 0);
73
    /* Find next MCSTF frame with specified POC */
74
    Frame* getPOCMCSTF(int poc);
75
76
    /** Get the current Frame from the list **/
77
    Frame* getCurFrame(int sLayer);
78
79
    /** Remove picture from list */
80
    void remove(Frame& pic);
81
82
    /** Remove picture from list */
83
    Frame* removeFrame(Frame& pic);
84
    /* Remove MCSTF picture from list */
85
    void removeMCSTF(Frame& pic);
86
#if ENABLE_MULTIVIEW
87
    /** Remove picture from Sub list */
88
    void removeSubDPB(Frame& pic);
89
#endif
90
91
0
    Frame* first()        { return m_start;   }
92
93
0
    Frame* last()         { return m_end;     }
94
95
0
    int size()            { return m_count;   }
96
97
0
    bool empty() const    { return !m_count;  }
98
99
0
    operator bool() const { return !!m_count; }
100
};
101
}
102
103
#endif // ifndef X265_PICLIST_H