Skip to content

Commit bd7c740

Browse files
add virual class on essence transform
1 parent 55a96d3 commit bd7c740

File tree

5 files changed

+63
-30
lines changed

5 files changed

+63
-30
lines changed

src/AvTranscoder/EssenceTransform/AudioEssenceTransform.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@ AudioEssenceTransform::AudioEssenceTransform()
3939
{
4040
}
4141

42-
bool AudioEssenceTransform::init( const AudioFrame& src, const AudioFrame& dst )
42+
bool AudioEssenceTransform::init( const Frame& srcFrame, const Frame& dstFrame )
4343
{
44+
const AudioFrame& src = static_cast<const AudioFrame&>( srcFrame );
45+
const AudioFrame& dst = static_cast<const AudioFrame&>( dstFrame );
46+
4447
_audioConvertContext = AllocResampleContext();
4548

4649
if( !_audioConvertContext )
@@ -64,27 +67,24 @@ bool AudioEssenceTransform::init( const AudioFrame& src, const AudioFrame& dst )
6467
return true;
6568
}
6669

67-
void AudioEssenceTransform::convert( const AudioFrame& src, AudioFrame& dst )
70+
void AudioEssenceTransform::convert( const Frame& srcFrame, Frame& dstFrame )
6871
{
6972
if( ! _isInit )
70-
{
71-
_isInit = init( src, dst );
72-
_isInit = true;
73-
}
73+
_isInit = init( srcFrame, dstFrame );
7474

75-
if( dst.getSize() != src.getSize() )
76-
dst.getBuffer().resize( src.getSize(), 0 );
75+
if( dstFrame.getSize() != srcFrame.getSize() )
76+
dstFrame.getBuffer().resize( srcFrame.getSize(), 0 );
7777

78-
const unsigned char* srcData = src.getPtr();
79-
unsigned char* dstData = dst.getPtr();
78+
const unsigned char* srcData = srcFrame.getPtr();
79+
unsigned char* dstData = dstFrame.getPtr();
8080

8181
#ifdef AV_RESAMPLE_LIBRARY
82-
avresample_convert( _audioConvertContext, (uint8_t**)&dstData, 0, dst.getSize(), (uint8_t**)&srcData, 0, src.getSize() );
82+
avresample_convert( _audioConvertContext, (uint8_t**)&dstData, 0, dstFrame.getSize(), (uint8_t**)&srcData, 0, srcFrame.getSize() );
8383
#else
84-
swr_convert( _audioConvertContext, &dstData, dst.getSize(), &srcData, src.getSize() );
84+
swr_convert( _audioConvertContext, &dstData, dstFrame.getSize(), &srcData, srcFrame.getSize() );
8585
#endif
8686

87-
dst.setNbSamples( src.getNbSamples() );
87+
static_cast<AudioFrame&>( dstFrame ).setNbSamples( static_cast<const AudioFrame&>( srcFrame ).getNbSamples() );
8888
}
8989

9090
}

src/AvTranscoder/EssenceTransform/AudioEssenceTransform.hpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#ifndef _AV_TRANSCODER_ESSENCE_TRANSFORM_AUDIO_ESSENCE_TRANSFORM_HPP
22
#define _AV_TRANSCODER_ESSENCE_TRANSFORM_AUDIO_ESSENCE_TRANSFORM_HPP
33

4-
#include <AvTranscoder/common.hpp>
4+
#include <AvTranscoder/DatasStructures/Frame.hpp>
5+
#include "EssenceTransform.hpp"
56

67
#ifdef AV_RESAMPLE_LIBRARY
78
#define ResampleContext AVAudioResampleContext
@@ -14,17 +15,15 @@ class ResampleContext;
1415
namespace avtranscoder
1516
{
1617

17-
class AudioFrame;
18-
19-
class AvExport AudioEssenceTransform
18+
class AvExport AudioEssenceTransform : public EssenceTransform
2019
{
2120
public:
2221
AudioEssenceTransform();
2322

24-
void convert( const AudioFrame& src, AudioFrame& dst );
23+
void convert( const Frame& srcFrame, Frame& dstFrame );
2524

2625
private:
27-
bool init( const AudioFrame& src, const AudioFrame& dst );
26+
bool init( const Frame& srcFrame, const Frame& dstFrame );
2827

2928
ResampleContext* _audioConvertContext;
3029

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#ifndef _AV_TRANSCODER_ESSENCE_TRANSFORM_ESSENCE_TRANSFORM_HPP_
2+
#define _AV_TRANSCODER_ESSENCE_TRANSFORM_ESSENCE_TRANSFORM_HPP_
3+
4+
#include <AvTranscoder/DatasStructures/Frame.hpp>
5+
6+
namespace avtranscoder
7+
{
8+
9+
class AvExport EssenceTransform
10+
{
11+
public:
12+
EssenceTransform()
13+
{}
14+
15+
virtual ~EssenceTransform()
16+
{}
17+
18+
virtual void convert( const Frame& src, Frame& dst ) = 0;
19+
20+
protected:
21+
virtual bool init( const Frame& src, const Frame& dst ) = 0;
22+
};
23+
24+
}
25+
26+
#endif

src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ extern "C" {
1414
#endif
1515
}
1616

17+
#include <AvTranscoder/DatasStructures/Pixel.hpp>
18+
#include <AvTranscoder/DatasStructures/Image.hpp>
19+
1720
#include <iostream>
1821
#include <iomanip>
1922
#include <cassert>
@@ -34,8 +37,11 @@ VideoEssenceTransform::VideoEssenceTransform()
3437
{
3538
}
3639

37-
bool VideoEssenceTransform::init( const Image& src, const Image& dst )
40+
bool VideoEssenceTransform::init( const Frame& srcFrame, const Frame& dstFrame )
3841
{
42+
const Image& src = static_cast<const Image&>( srcFrame );
43+
const Image& dst = static_cast<const Image&>( dstFrame );
44+
3945
assert( src.desc().getWidth() != 0 );
4046
assert( src.desc().getHeight() != 0 );
4147
assert( src.desc().getWidth() == dst.desc().getWidth() );
@@ -76,8 +82,11 @@ bool VideoEssenceTransform::init( const Image& src, const Image& dst )
7682
return true;
7783
}
7884

79-
void VideoEssenceTransform::convert( const Image& src, Image& dst )
85+
void VideoEssenceTransform::convert( const Frame& srcFrame, Frame& dstFrame )
8086
{
87+
const Image& src = static_cast<const Image&>( srcFrame );
88+
Image& dst = static_cast<Image&>( dstFrame );
89+
8190
assert( src.desc().getWidth() != 0 );
8291
assert( src.desc().getHeight() != 0 );
8392
assert( src.desc().getWidth() == dst.desc().getWidth() );
@@ -86,12 +95,12 @@ void VideoEssenceTransform::convert( const Image& src, Image& dst )
8695
assert( src.desc().getPixelDesc().getComponents() == dst.desc().getPixelDesc().getComponents() );
8796

8897
if( ! _isInit )
89-
_isInit = init( src, dst );
98+
_isInit = init( srcFrame, dstFrame );
9099

91100
for( size_t plane = 0; plane < MAX_SWS_PLANE; ++plane )
92101
{
93-
_srcData.at( plane ) = (uint8_t*)const_cast< unsigned char* >( src.getPtr() + _srcOffsets.at( plane ) );
94-
_dstData.at( plane ) = (uint8_t*)dst.getPtr() + _dstOffsets.at( plane );
102+
_srcData.at( plane ) = (uint8_t*) const_cast< unsigned char* >( src.getPtr() + _srcOffsets.at( plane ) );
103+
_dstData.at( plane ) = (uint8_t*) dst.getPtr() + _dstOffsets.at( plane );
95104
}
96105

97106
if( !_imageConvertContext )

src/AvTranscoder/EssenceTransform/VideoEssenceTransform.hpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
#ifndef _AV_TRANSCODER_ESSENCE_TRANSFORM_VIDEO_ESSENCE_TRANSFORM_HPP
22
#define _AV_TRANSCODER_ESSENCE_TRANSFORM_VIDEO_ESSENCE_TRANSFORM_HPP
33

4-
#include <AvTranscoder/DatasStructures/Pixel.hpp>
5-
#include <AvTranscoder/DatasStructures/Image.hpp>
4+
#include <AvTranscoder/DatasStructures/Frame.hpp>
5+
#include "EssenceTransform.hpp"
66

77
#include <vector>
8-
#include <string>
98

109
class SwsContext;
1110

1211
namespace avtranscoder
1312
{
1413

15-
class AvExport VideoEssenceTransform
14+
class AvExport VideoEssenceTransform : public EssenceTransform
1615
{
1716
public:
1817
VideoEssenceTransform();
1918

20-
void convert( const Image& src, Image& dst );
19+
void convert( const Frame& srcFrame, Frame& dstFrame );
2120

2221
private:
23-
bool init( const Image& src, const Image& dst );
22+
bool init( const Frame& srcFrame, const Frame& dstFrame );
2423

2524
SwsContext* _imageConvertContext;
2625

0 commit comments

Comments
 (0)