QtGStreamer  0.10.2
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
applicationsink.h
1 /*
2  Copyright (C) 2011 Collabora Ltd. <info@collabora.co.uk>
3  @author George Kiagiadakis <george.kiagiadakis@collabora.co.uk>
4 
5  This library is free software; you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published
7  by the Free Software Foundation; either version 2.1 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef QGST_UTILS_APPLICATIONSINK_H
19 #define QGST_UTILS_APPLICATIONSINK_H
20 
21 #include "global.h"
22 #include "../element.h"
23 #include "../bufferlist.h"
24 
25 namespace QGst {
26 namespace Utils {
27 
66 class QTGSTREAMERUTILS_EXPORT ApplicationSink
67 {
68 public:
70  virtual ~ApplicationSink();
71 
73  ElementPtr element() const;
74 
76  void setElement(const ElementPtr & appsink);
77 
78 
80  CapsPtr caps() const;
81 
83  void setCaps(const CapsPtr & caps);
84 
85 
88  bool isEos() const;
89 
90 
93  uint maxBuffers() const;
94 
98  void setMaxBuffers(uint maxbuffers);
99 
100 
103  bool dropEnabled() const;
104 
106  void enableDrop(bool enable);
107 
124  BufferPtr pullPreroll();
125 
137  BufferPtr pullBuffer();
138 
151  BufferListPtr pullBufferList();
152 
153 protected:
156  virtual void eos();
157 
161  virtual FlowReturn newPreroll();
162 
166  virtual FlowReturn newBuffer();
167 
171  virtual FlowReturn newBufferList();
172 
173 private:
174  /* vtable padding */
175  virtual void reservedVirtual1() {}
176  virtual void reservedVirtual2() {}
177  virtual void reservedVirtual3() {}
178 
179 private:
180  struct Priv;
181  friend struct Priv;
182  Priv *const d;
183  Q_DISABLE_COPY(ApplicationSink)
184 };
185 
186 } //namespace Utils
187 } //namespace QGst
188 
189 #endif // QGST_APPLICATIONSINK_H