@@ -7,6 +7,7 @@ namespace avtranscoder
7
7
8
8
VideoGenerator::VideoGenerator ()
9
9
: _inputFrame( NULL )
10
+ , _blackImage( NULL )
10
11
, _frameDesc()
11
12
{
12
13
}
@@ -26,18 +27,27 @@ bool VideoGenerator::decodeNextFrame( Frame& frameBuffer )
26
27
// Generate black image
27
28
if ( ! _inputFrame )
28
29
{
29
- // @todo support PAL (0 to 255) and NTFS (16 to 235)
30
- char fillChar = 0 ;
30
+ // Generate the black image only once
31
+ if ( ! _blackImage )
32
+ {
33
+ // @todo support PAL (0 to 255) and NTFS (16 to 235)
34
+ char fillChar = 0 ;
31
35
32
- VideoFrameDesc desc ( _frameDesc );
33
- desc.setPixelFormat ( " rgb24" );
36
+ VideoFrameDesc desc ( _frameDesc );
37
+ desc.setPixelFormat ( " rgb24" );
34
38
35
- VideoFrame intermediateBuffer ( desc );
36
- intermediateBuffer.getBuffer ().resize ( _frameDesc.getDataSize () );
37
- memset ( intermediateBuffer.getPtr (), fillChar, _frameDesc.getDataSize () );
39
+ VideoFrame intermediateBuffer ( desc );
40
+ intermediateBuffer.getBuffer ().resize ( _frameDesc.getDataSize () );
41
+ memset ( intermediateBuffer.getPtr (), fillChar, _frameDesc.getDataSize () );
38
42
39
- VideoTransform videoEssenceTransform;
40
- videoEssenceTransform.convert ( intermediateBuffer, frameBuffer );
43
+ VideoTransform videoTransform;
44
+ videoTransform.convert ( intermediateBuffer, frameBuffer );
45
+
46
+ VideoFrame& imageBuffer = static_cast <VideoFrame&>( frameBuffer );
47
+ _blackImage = new VideoFrame ( imageBuffer.desc () );
48
+ _blackImage->copyData ( imageBuffer.getPtr (), imageBuffer.getSize () );
49
+ }
50
+ frameBuffer = *_blackImage;
41
51
}
42
52
// Take image from _inputFrame
43
53
else
0 commit comments