773aff318dc568ab13531ca31cf1ca2d2d77491b
Stefan Schuermans first version, plays videos...

Stefan Schuermans authored 13 years ago

1) /* Blinker
2)    Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
3)    Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
4)    a blinkenarea.org project */
5) 
6) #include <set>
7) 
8) #include <BlinkenLib/BlinkenFrame.h>
9) 
10) #include "Stream.h"
11) #include "StreamRecv.h"
12) 
13) namespace Blinker {
14) 
15) /// constructor
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

16) Stream::Stream():
17)   m_pFrame(NULL)
Stefan Schuermans first version, plays videos...

Stefan Schuermans authored 13 years ago

18) {
19) }
20) 
21) /// virtual destructor
22) Stream::~Stream()
23) {
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

24)   // free current frame
25)   if (m_pFrame)
26)     BlinkenFrameFree(m_pFrame);
Stefan Schuermans first version, plays videos...

Stefan Schuermans authored 13 years ago

27) }
28) 
29) /**
30)  * @brief attach a stream receiver
31)  * @param[in] recv stream receiver to attach
32)  */
33) void Stream::attach(StreamRecv *recv)
34) {
35)   m_recvs.insert(recv);
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

36) 
37)   // send current frame to receiver
38)   if (m_pFrame)
39)     recv->setFrame(m_pFrame);
40)   else
41)     recv->setNoFrame();
Stefan Schuermans first version, plays videos...

Stefan Schuermans authored 13 years ago

42) }
43) 
44) /**
45)  * @brief detach a stream receiver
46)  * @param[in] recv stream receiver to detach
47)  */
48) void Stream::detach(StreamRecv *recv)
49) {
50)   m_recvs.erase(recv);
51) }
52) 
53) /**
54)  * @brief set current frame
55)  * @param[in] pFrame current frame
56)  */
57) void Stream::setFrame(stBlinkenFrame *pFrame)
58) {
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

59)   // update local copy of current frame
60)   if (m_pFrame)
61)     BlinkenFrameFree(m_pFrame);
62)   m_pFrame = BlinkenFrameClone(pFrame);
63)   if (!m_pFrame)
64)     return; // out of memory: do not pass NULL pointer to receivers
Stefan Schuermans first version, plays videos...

Stefan Schuermans authored 13 years ago

65) 
66)   // pass frame to all receivers
67)   Recvs::iterator it;
68)   for (it = m_recvs.begin(); it != m_recvs.end(); ++it)
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

69)     (*it)->setFrame(m_pFrame);
Stefan Schuermans first version, plays videos...

Stefan Schuermans authored 13 years ago

70) }
71) 
72) /// set current frame to none
73) void Stream::setNoFrame()
74) {
Stefan Schuermans implemented stream printer...

Stefan Schuermans authored 13 years ago

75)   // set current frame to none
76)   if (m_pFrame) {
77)     BlinkenFrameFree(m_pFrame);
78)     m_pFrame = NULL;
79)   }
Stefan Schuermans first version, plays videos...

Stefan Schuermans authored 13 years ago

80) 
81)   // pass "no frame" to all receivers
82)   Recvs::iterator it;
83)   for (it = m_recvs.begin(); it != m_recvs.end(); ++it)
84)     (*it)->setNoFrame();
85) }
86) 
Stefan Schuermans add function to get current...

Stefan Schuermans authored 13 years ago

87) /**
88)  * @brief get current frame
89)  * @param[out] pFrame current frame
90)  * @return if a current frame exists
91)  */
92) bool Stream::getCurFrame(stBlinkenFrame *&pFrame)
93) {
94)   pFrame = m_pFrame;
95)   return m_pFrame;
96) }
97)