0fee1b0dbe796d5c03abdc7b516de170331aed5b
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 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 <iostream>
7) #include <stdlib.h>
8) #include <string>
9) 
10) #include <BlinkenLib/BlinkenFrame.h>
11) 
12) #include "CallMgr.h"
13) #include "Directory.h"
14) #include "File.h"
15) #include "Format.h"
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

16) #include "FormatFile.h"
17) #include "InStreamFile.h"
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

18) #include "Module.h"
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

19) #include "OutStreamFile.h"
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

20) #include "Resizer.h"
21) #include "StreamMgr.h"
22) #include "StreamRecv.h"
23) 
24) namespace Blinker {
25) 
26) /**
27)  * @brief constructor
28)  * @param[in] callMgr callback manager
29)  * @param[in] streamMgr stream manager
30)  * @param[in] dirBase base directory
31)  */
32) Resizer::Resizer(CallMgr &callMgr, StreamMgr &streamMgr,
33)                  const Directory &dirBase):
34)   Module(callMgr, streamMgr, dirBase),
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

35)   m_fileInStream(dirBase.getFile("instream"), streamMgr),
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

36)   m_fileFormat(dirBase.getFile("format")),
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

37)   m_fileOutStream(dirBase.getFile("outstream"), streamMgr)
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

38) {
39)   // set up
40)   getFormat();
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

41)   m_fileInStream.setStreamRecv(this);
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

42) }
43) 
44) /// virtual destructor
45) Resizer::~Resizer()
46) {
47)   // clean up
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

48)   m_fileInStream.setStreamRecv(NULL);
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

49) }
50) 
51) /// check for update of configuration
52) void Resizer::updateConfig()
53) {
54)   // stream name or format file was modified -> re-get stream or format
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

55)   if (m_fileInStream.checkModified())
56)     m_fileInStream.update();
57)   if (m_fileFormat.checkModified())
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

58)     getFormat();
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

59)   if (m_fileOutStream.checkModified())
60)     m_fileOutStream.update();
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

61) }
62) 
63) /**
64)  * @brief set current frame
65)  * @param[in] stream stream name
Stefan Schuermans merged frame processing wit...

Stefan Schuermans authored 12 years ago

66)  * @param[in] pFrame current frame (NULL for none)
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

67)  */
68) void Resizer::setFrame(const std::string &stream, stBlinkenFrame *pFrame)
69) {
70)   procFrame(pFrame);
71)   (void)stream; // unused
72) }
73) 
74) /// (re-)get format to resize to
75) void Resizer::getFormat()
76) {
77)   // read format from format file
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

78)   m_fileFormat.update();
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

79) 
80)   // send current frame to output stream
81)   sendFrame();
82) }
83) 
84) /// send current frame to output stream
85) void Resizer::sendFrame()
86) {
87)   // get current frame from input stream and process it
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

88)   procFrame(m_fileInStream.getCurFrame());
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

89) }
90) 
91) /**
92)  * @brief process frame
Stefan Schuermans merged frame processing wit...

Stefan Schuermans authored 12 years ago

93)  * @param[in] pFrame frame to process (NULL for none)
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

94)  */
95) void Resizer::procFrame(stBlinkenFrame *pFrame)
96) {
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

97)   int width, height, channels, maxval;
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

98)   stBlinkenFrame *pProcFrame;
99) 
Stefan Schuermans merged frame processing wit...

Stefan Schuermans authored 12 years ago

100)   // no frame or no format -> pass "no frame"
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

101)   if (!pFrame || !m_fileFormat.m_valid) {
102)     m_fileOutStream.setFrame(NULL);
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

103)     return;
104)   }
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

105)   width = m_fileFormat.m_obj.m_width;
106)   height = m_fileFormat.m_obj.m_height;
107)   channels = m_fileFormat.m_obj.m_channels;
108)   maxval = m_fileFormat.m_obj.m_maxval;
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

109) 
110)   // format matches -> pass frame directly
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

111)   if (BlinkenFrameGetWidth(pFrame) == width &&
112)       BlinkenFrameGetHeight(pFrame) == height &&
113)       BlinkenFrameGetChannels(pFrame) == channels &&
114)       BlinkenFrameGetMaxval(pFrame) == maxval) {
115)     m_fileOutStream.setFrame(NULL);
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

116)     return;
117)   }
118) 
119)   // clone frame
120)   pProcFrame = BlinkenFrameClone(pFrame);
121)   if (!pProcFrame){
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

122)     m_fileOutStream.setFrame(NULL);
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

123)     return;
124)   }
125) 
126)   // resize frame
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

127)   BlinkenFrameResize(pProcFrame, height, width, channels, maxval);
Stefan Schuermans implemented resizer module

Stefan Schuermans authored 12 years ago

128) 
129)   // pass process frame to output stream
Stefan Schuermans implemented specialized set...

Stefan Schuermans authored 12 years ago

130)   m_fileOutStream.setFrame(pProcFrame);