1
1
#include " VideoGenerator.hpp"
2
2
3
3
#include < AvTranscoder/util.hpp>
4
- #include < AvTranscoder/transform/VideoTransform.hpp>
5
4
6
5
#include < sstream>
6
+ #include < stdexcept>
7
7
8
8
namespace avtranscoder
9
9
{
10
10
11
- VideoGenerator::VideoGenerator (const VideoFrameDesc& frameDesc )
11
+ VideoGenerator::VideoGenerator ()
12
12
: _inputFrame(NULL )
13
13
, _blackImage(NULL )
14
- , _frameDesc(frameDesc )
14
+ , _videoTransform( )
15
15
{
16
16
}
17
17
@@ -23,12 +23,8 @@ VideoGenerator::~VideoGenerator()
23
23
bool VideoGenerator::decodeNextFrame (Frame& frameBuffer)
24
24
{
25
25
// check the given frame
26
- if (!frameBuffer.isVideoFrame ())
27
- {
28
- LOG_WARN (" The given frame is not a valid video frame: allocate a new AVPicture to put generated data into it." );
29
- frameBuffer.clear ();
30
- static_cast <VideoFrame&>(frameBuffer).allocateAVPicture (_frameDesc);
31
- }
26
+ if (! frameBuffer.isVideoFrame ())
27
+ throw std::runtime_error (" The given frame is not a valid video frame: allocate a new AVPicture to put generated data into it." );
32
28
33
29
// Generate black image
34
30
if (!_inputFrame)
@@ -38,30 +34,19 @@ bool VideoGenerator::decodeNextFrame(Frame& frameBuffer)
38
34
{
39
35
std::stringstream msg;
40
36
msg << " Generate a black image with the following features:" << std::endl;
41
- msg << " width = " << _frameDesc. _width << std::endl;
42
- msg << " height = " << _frameDesc. _height << std::endl;
37
+ msg << " width = " << frameBuffer. getAVFrame (). width << std::endl;
38
+ msg << " height = " << frameBuffer. getAVFrame (). height << std::endl;
43
39
msg << " pixel format = rgb24" << std::endl;
44
40
LOG_INFO (msg.str ())
45
41
46
- VideoFrame& imageBuffer = static_cast <VideoFrame&>(frameBuffer);
47
-
48
- // Input of convert
49
- // @todo support PAL (0 to 255) and NTFS (16 to 235)
50
- VideoFrameDesc desc (_frameDesc);
51
- desc._pixelFormat = getAVPixelFormat (" rgb24" );
52
- VideoFrame intermediateBuffer (desc);
42
+ // Create the black RGB image
43
+ _blackImage = new VideoFrame (VideoFrameDesc (frameBuffer.getAVFrame ().width , frameBuffer.getAVFrame ().height , " rgb24" ));
53
44
const unsigned char fillChar = 0 ;
54
- intermediateBuffer.assign (fillChar);
55
-
56
- // Output of convert
57
- _blackImage = new VideoFrame (imageBuffer.desc ());
58
-
59
- // Convert and store the black image
60
- VideoTransform videoTransform;
61
- videoTransform.convert (intermediateBuffer, *_blackImage);
45
+ _blackImage->assign (fillChar);
62
46
}
63
47
LOG_DEBUG (" Copy data of the black image when decode next frame" )
64
- frameBuffer.copyData (*_blackImage);
48
+ // Convert the black image to the configuration of the given frame
49
+ _videoTransform.convert (*_blackImage, frameBuffer);
65
50
}
66
51
// Take image from _inputFrame
67
52
else
0 commit comments