Skip to content

Commit 3bcbc86

Browse files
author
Clement Champetier
committed
DummyAudio: add setFrame
* Can create a dummyVideo, and set its Frame (like DummyVideo). * When read the next frame of the object, read silent if no specific Frame was set, or read the data of the Frame specified.
1 parent 25af117 commit 3bcbc86

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

src/AvTranscoder/EssenceStream/DummyAudio.cpp

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace avtranscoder
55

66
DummyAudio::DummyAudio( )
77
: InputEssence( )
8+
, _inputFrame( NULL )
89
{
910
}
1011

@@ -27,21 +28,33 @@ AudioDesc DummyAudio::getAudioDesc() const
2728
return _audioDesc;
2829
}
2930

31+
void DummyAudio::setFrame( Frame& inputFrame )
32+
{
33+
_inputFrame = &inputFrame;
34+
}
35+
3036
bool DummyAudio::readNextFrame( Frame& frameBuffer )
3137
{
3238
frameBuffer.getBuffer().resize( _frameDesc.getDataSize() );
3339

34-
AudioFrame& audioFrameBuffer = static_cast<AudioFrame&>( frameBuffer );
35-
audioFrameBuffer.setNbSamples( 1.0 * _frameDesc.getSampleRate() / _frameDesc.getFps() );
40+
if( ! _inputFrame )
41+
{
42+
AudioFrame& audioFrameBuffer = static_cast<AudioFrame&>( frameBuffer );
43+
audioFrameBuffer.setNbSamples( 1.0 * _frameDesc.getSampleRate() / _frameDesc.getFps() );
3644

37-
//av_samples_set_silence( data.getPtr(), offset, nb_samples, nb_channels, sample_fmt );
38-
int fill_char = (
39-
_frameDesc.getSampleFormat() == AV_SAMPLE_FMT_U8 ||
40-
_frameDesc.getSampleFormat() == AV_SAMPLE_FMT_U8P
41-
) ? 0x80 : 0x00;
42-
43-
memset( frameBuffer.getPtr(), fill_char, frameBuffer.getSize() );
45+
//av_samples_set_silence( data.getPtr(), offset, nb_samples, nb_channels, sample_fmt );
46+
int fill_char = (
47+
_frameDesc.getSampleFormat() == AV_SAMPLE_FMT_U8 ||
48+
_frameDesc.getSampleFormat() == AV_SAMPLE_FMT_U8P
49+
) ? 0x80 : 0x00;
4450

51+
memset( frameBuffer.getPtr(), fill_char, frameBuffer.getSize() );
52+
return true;
53+
}
54+
55+
if( frameBuffer.getSize() != _inputFrame->getSize() )
56+
frameBuffer.getBuffer().resize( _inputFrame->getSize() );
57+
std::memcpy( frameBuffer.getPtr(), _inputFrame->getPtr(), _inputFrame->getSize() );
4558
return true;
4659
}
4760

src/AvTranscoder/EssenceStream/DummyAudio.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,17 @@ class AvExport DummyAudio : public InputEssence
2323
AudioDesc getAudioDesc() const;
2424

2525
void setup() {}
26+
27+
void setFrame( Frame& inputFrame );
2628

2729
bool readNextFrame( Frame& frameBuffer );
2830
bool readNextFrame( Frame& frameBuffer, const size_t subStreamIndex );
2931

3032
private:
3133
AudioDesc _audioDesc;
3234
AudioFrameDesc _frameDesc;
35+
36+
Frame* _inputFrame;
3337
};
3438

3539
}

0 commit comments

Comments
 (0)