Skip to content

Commit 0b71d40

Browse files
author
Clement Champetier
committed
Generator Video / Audio: remove _codec
Get Video / Audio FrameDesc from a frameDesc instead of a link to a codec.
1 parent fb946f2 commit 0b71d40

File tree

5 files changed

+18
-48
lines changed

5 files changed

+18
-48
lines changed

src/AvTranscoder/essenceStream/GeneratorAudio.cpp

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,15 @@ namespace avtranscoder
55

66
GeneratorAudio::GeneratorAudio( )
77
: IInputEssence( )
8-
, _codec( NULL )
98
, _inputFrame( NULL )
109
, _frameDesc()
1110
{
1211
}
1312

14-
void GeneratorAudio::setAudioCodec( const AudioCodec& codec )
13+
void GeneratorAudio::setAudioFrameDesc( const AudioFrameDesc& frameDesc )
1514
{
16-
_frameDesc.setFps ( 25.0 );
17-
_codec = &codec;
18-
19-
_frameDesc.setSampleRate( _codec->getAVCodecContext()->sample_rate );
20-
_frameDesc.setChannels( _codec->getAVCodecContext()->channels );
21-
_frameDesc.setSampleFormat( _codec->getAVCodecContext()->sample_fmt );
22-
}
23-
24-
const AudioCodec& GeneratorAudio::getAudioCodec()
25-
{
26-
return *_codec;
15+
_frameDesc = frameDesc;
16+
_frameDesc.setFps( 25. );
2717
}
2818

2919
void GeneratorAudio::setFrame( Frame& inputFrame )

src/AvTranscoder/essenceStream/GeneratorAudio.hpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ class AvExport GeneratorAudio : public IInputEssence
1212
public:
1313
GeneratorAudio( );
1414

15-
void setAudioCodec( const AudioCodec& codec );
16-
17-
const AudioCodec& getAudioCodec();
15+
void setAudioFrameDesc( const AudioFrameDesc& frameDesc );
1816

1917
void setup() {}
2018

@@ -24,7 +22,6 @@ class AvExport GeneratorAudio : public IInputEssence
2422
bool readNextFrame( Frame& frameBuffer, const size_t subStreamIndex );
2523

2624
private:
27-
const AudioCodec* _codec; ///< Has link (no ownership)
2825
Frame* _inputFrame; ///< Has link (no ownership)
2926
AudioFrameDesc _frameDesc;
3027
};

src/AvTranscoder/essenceStream/GeneratorVideo.cpp

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,20 @@
22

33
#include <AvTranscoder/transform/VideoTransform.hpp>
44

5-
#include <stdexcept>
6-
75
namespace avtranscoder
86
{
97

108
GeneratorVideo::GeneratorVideo( )
119
: IInputEssence( )
12-
, _codec( NULL )
1310
, _inputFrame( NULL )
14-
, _videoFrameDesc()
11+
, _frameDesc()
1512
, _numberOfView( 1 )
1613
{
1714
}
1815

19-
void GeneratorVideo::setVideoCodec( const VideoCodec& codec )
16+
void GeneratorVideo::setVideoFrameDesc( const VideoFrameDesc& frameDesc )
2017
{
21-
_codec = &codec;
22-
_videoFrameDesc = _codec->getVideoFrameDesc();
23-
}
24-
25-
const VideoCodec& GeneratorVideo::getVideoCodec()
26-
{
27-
return *_codec;
18+
_frameDesc = frameDesc;
2819
}
2920

3021
void GeneratorVideo::setFrame( Frame& inputFrame )
@@ -37,26 +28,21 @@ bool GeneratorVideo::readNextFrame( Frame& frameBuffer )
3728
// Generate black image
3829
if( ! _inputFrame )
3930
{
40-
if( ! _codec )
41-
{
42-
throw std::runtime_error( "Can't readNextFrame of video generator without knowing codec." );
43-
}
44-
4531
// @todo support PAL (0 to 255) and NTFS (16 to 235)
4632
int fillChar = 0;
4733

48-
if( frameBuffer.getSize() != _videoFrameDesc.getDataSize() )
49-
frameBuffer.getBuffer().resize( _videoFrameDesc.getDataSize() );
34+
if( frameBuffer.getSize() != _frameDesc.getDataSize() )
35+
frameBuffer.getBuffer().resize( _frameDesc.getDataSize() );
5036

51-
VideoFrameDesc desc( _codec->getVideoFrameDesc() );
37+
VideoFrameDesc desc( _frameDesc );
5238
Pixel rgbPixel;
5339
rgbPixel.setColorComponents( eComponentRgb );
5440
rgbPixel.setPlanar( false );
5541
desc.setPixel( rgbPixel );
5642

5743
VideoFrame intermediateBuffer( desc );
58-
intermediateBuffer.getBuffer().resize( _videoFrameDesc.getDataSize() );
59-
memset( intermediateBuffer.getPtr(), fillChar, _videoFrameDesc.getDataSize() );
44+
intermediateBuffer.getBuffer().resize( _frameDesc.getDataSize() );
45+
memset( intermediateBuffer.getPtr(), fillChar, _frameDesc.getDataSize() );
6046

6147
VideoTransform videoEssenceTransform;
6248
videoEssenceTransform.convert( intermediateBuffer, frameBuffer );

src/AvTranscoder/essenceStream/GeneratorVideo.hpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ class AvExport GeneratorVideo : public IInputEssence
1313
GeneratorVideo( );
1414

1515
// Stream properties
16-
void setVideoCodec( const VideoCodec& codec );
17-
18-
const VideoCodec& getVideoCodec();
16+
void setVideoFrameDesc( const VideoFrameDesc& frameDesc );
1917

2018
void setup() {}
2119

@@ -25,9 +23,8 @@ class AvExport GeneratorVideo : public IInputEssence
2523
bool readNextFrame( Frame& frameBuffer, const size_t subStreamIndex );
2624

2725
private:
28-
const VideoCodec* _codec; ///< Has link (no ownership)
2926
Frame* _inputFrame; ///< Has link (no ownership)
30-
VideoFrameDesc _videoFrameDesc;
27+
VideoFrameDesc _frameDesc;
3128

3229
size_t _numberOfView;
3330
};

src/AvTranscoder/transcoder/StreamTranscoder.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ StreamTranscoder::StreamTranscoder(
112112
_transform = new VideoTransform();
113113

114114
GeneratorVideo* generatorVideo = new GeneratorVideo();
115-
generatorVideo->setVideoCodec( outputVideo->getVideoCodec() );
115+
generatorVideo->setVideoFrameDesc( outputVideo->getVideoCodec().getVideoFrameDesc() );
116116
_generatorEssence = generatorVideo;
117117

118118
break;
@@ -147,7 +147,7 @@ StreamTranscoder::StreamTranscoder(
147147
_transform = new AudioTransform();
148148

149149
GeneratorAudio* generatorAudio = new GeneratorAudio();
150-
generatorAudio->setAudioCodec( outputAudio->getAudioCodec() );
150+
generatorAudio->setAudioFrameDesc( outputAudio->getAudioCodec().getAudioFrameDesc() );
151151
_generatorEssence = generatorAudio;
152152

153153
break;
@@ -192,7 +192,7 @@ StreamTranscoder::StreamTranscoder(
192192
// Create input essence based on a given input VideoCodec
193193
GeneratorVideo* generatorVideo = new GeneratorVideo();
194194
const VideoCodec& inputVideoCodec = static_cast<const VideoCodec&>( inputCodec );
195-
generatorVideo->setVideoCodec( inputVideoCodec );
195+
generatorVideo->setVideoFrameDesc( inputVideoCodec.getVideoFrameDesc() );
196196
_inputEssence = generatorVideo;
197197

198198
// Create inputFrame, and outputFrame which is based on a given profile
@@ -219,7 +219,7 @@ StreamTranscoder::StreamTranscoder(
219219
// Create input essence based on a given input AudioCodec
220220
GeneratorAudio* generatorAudio = new GeneratorAudio();
221221
const AudioCodec& inputAudioCodec = static_cast<const AudioCodec&>( inputCodec );
222-
generatorAudio->setAudioCodec( inputAudioCodec );
222+
generatorAudio->setAudioFrameDesc( inputAudioCodec.getAudioFrameDesc() );
223223
_inputEssence = generatorAudio;
224224

225225
// Create inputFrame, and outputFrame which is based on a given profile

0 commit comments

Comments
 (0)