Skip to content

Commit e9aeeba

Browse files
Merge pull request #2 from cchampet/dev_refactoring
Refactoring code
2 parents 98b6d74 + 3ad0463 commit e9aeeba

15 files changed

+51
-36
lines changed

app/avTranscoder/avTranscoder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ void transcodeVideo( const char* inputfilename, const char* outputFilename )
6464

6565
videoDesc.setTimeBase( 1, 25 ); // 25 fps
6666

67-
videoDesc.setImageParameters( sourceImage );
67+
videoDesc.setImageParameters( sourceImage.desc() );
6868

6969
//videoDesc.initCodecContext();
7070

app/avplay/AvReader.hpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
class AvReader : public Reader
1717
{
1818
public:
19-
AvReader( std::string filename )
19+
AvReader( const std::string& filename )
2020
: m_inputFile( filename )
2121
, m_inputStreamVideo( NULL )
2222
, m_sourceImage( NULL )
@@ -38,11 +38,11 @@ class AvReader : public Reader
3838
pixel.setAlpha( false );
3939
pixel.setPlanar( false );
4040

41-
imageDescToDisplay.setWidth ( m_sourceImage->desc().getWidth() );
41+
imageDescToDisplay.setWidth( m_sourceImage->desc().getWidth() );
4242
imageDescToDisplay.setHeight( m_sourceImage->desc().getHeight() );
43-
imageDescToDisplay.setDar ( m_sourceImage->desc().getDar() );
44-
45-
imageDescToDisplay.setPixel ( pixel.findPixel() );
43+
imageDescToDisplay.setDar( m_sourceImage->desc().getDar() );
44+
45+
imageDescToDisplay.setPixel( pixel.findPixel() );
4646

4747
m_imageToDisplay = new avtranscoder::Image( imageDescToDisplay );
4848
}
@@ -105,6 +105,7 @@ class AvReader : public Reader
105105

106106
private:
107107
avtranscoder::InputFile m_inputFile;
108+
108109
avtranscoder::InputStreamVideo* m_inputStreamVideo;
109110

110111
avtranscoder::Image* m_sourceImage;
@@ -117,4 +118,4 @@ class AvReader : public Reader
117118
size_t m_videoStream;
118119
};
119120

120-
#endif
121+
#endif

src/AvTranscoder/AvInputStream.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ AvInputStream::AvInputStream( )
2929
{
3030
}
3131

32-
AvInputStream::AvInputStream( InputFile* inputFile, const size_t streamIndex )
32+
AvInputStream::AvInputStream( InputFile& inputFile, const size_t streamIndex )
3333
: InputStream( )
34-
, m_inputFile( inputFile )
34+
, m_inputFile( &inputFile )
3535
, m_packetDuration( 0 )
3636
, m_streamIndex( streamIndex )
3737
, m_bufferized( false )
@@ -44,6 +44,9 @@ AvInputStream::~AvInputStream( )
4444

4545
bool AvInputStream::readNextPacket( DataStream& data )
4646
{
47+
if( ! m_bufferized )
48+
throw std::runtime_error( "Can't read packet on non-bufferized input stream." );
49+
4750
if( m_streamCache.empty() )
4851
m_inputFile->readNextPacket( m_streamIndex );
4952

@@ -137,4 +140,4 @@ void AvInputStream::clearBuffering()
137140
m_streamCache.clear();
138141
}
139142

140-
}
143+
}

src/AvTranscoder/AvInputStream.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class AvExport AvInputStream : public InputStream
1313
public:
1414
AvInputStream( );
1515

16-
AvInputStream( InputFile* inputFile, const size_t streamIndex );
16+
AvInputStream( InputFile& inputFile, const size_t streamIndex );
1717
~AvInputStream( );
1818

1919
AvInputStream( const AvInputStream& inputStream )

src/AvTranscoder/DatasStructures/Image.hpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ extern "C" {
2424
namespace avtranscoder
2525
{
2626

27-
typedef std::vector< unsigned char > DataBuffer;
28-
2927
// struct ColorProperties
3028
// {
3129
// //EColorspace eColorspace;
@@ -78,9 +76,14 @@ class AvExport ImageDesc
7876
bool m_topFieldFirst;
7977
};
8078

79+
//template< template<typename> Alloc >
80+
//class AvExport ImageBase
8181
class AvExport Image
8282
{
8383
public:
84+
// typedef std::vector< unsigned char, Alloc<unsigned char> > DataBuffer;
85+
typedef std::vector< unsigned char> DataBuffer;
86+
8487
Image( const ImageDesc& ref )
8588
: m_dataBuffer( ref.getDataSize(), 0 )
8689
, m_imageDesc( ref )
@@ -99,6 +102,8 @@ class AvExport Image
99102
const ImageDesc m_imageDesc;
100103
};
101104

105+
//typedef ImageBase<std::allocator> Image;
106+
102107
}
103108

104109
#endif

src/AvTranscoder/DatasStructures/VideoDesc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ void VideoDesc::setVideoCodec( const AVCodecID codecId )
4949
initCodecContext();
5050
}
5151

52-
void VideoDesc::setImageParameters( const Image& image )
52+
void VideoDesc::setImageParameters( const ImageDesc& imageDesc )
5353
{
54-
setImageParameters( image.desc().getWidth(), image.desc().getHeight(), image.desc().getPixelDesc() );
54+
setImageParameters( imageDesc.getWidth(), imageDesc.getHeight(), imageDesc.getPixelDesc() );
5555
}
5656

5757

src/AvTranscoder/DatasStructures/VideoDesc.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class AvExport VideoDesc
3030
void setVideoCodec( const std::string& codecName );
3131
void setVideoCodec( const AVCodecID codecId );
3232

33-
void setImageParameters( const Image& image );
33+
void setImageParameters( const ImageDesc& imageDesc );
3434
void setImageParameters( const size_t width, const size_t height, const Pixel& pixel );
3535
void setImageParameters( const size_t width, const size_t height, const AVPixelFormat& pixel );
3636

src/AvTranscoder/InputFile.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ InputFile::InputFile( const std::string& filename )
4949

5050
for( size_t streamIndex = 0; streamIndex < m_formatContext->nb_streams; ++streamIndex )
5151
{
52-
m_inputStreams.push_back( new AvInputStream( this, streamIndex ) );
52+
m_inputStreams.push_back( new AvInputStream( *this, streamIndex ) );
5353
}
5454
}
5555

@@ -180,7 +180,7 @@ bool InputFile::readNextPacket( const size_t streamIndex )
180180

181181
void InputFile::seekAtFrame( const size_t frame )
182182
{
183-
uint64_t pos = frame / 25 * AV_TIME_BASE;
183+
uint64_t pos = frame / 25 * AV_TIME_BASE; // WARNING: hardcoded fps
184184

185185
if( (int)m_formatContext->start_time != AV_NOPTS_VALUE )
186186
pos += m_formatContext->start_time;

src/AvTranscoder/InputFile.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,15 @@ class AvExport InputFile
3838

3939
AVMediaType getStreamType( size_t index );
4040

41-
::avtranscoder::AvInputStream& getStream( size_t index );
41+
AvInputStream& getStream( size_t index );
4242

4343
AVFormatContext& getFormatContext() const { return *m_formatContext; }
4444

4545
bool readNextPacket( const size_t streamIndex );
4646

4747
void seekAtFrame( const size_t frame );
4848

49+
/// @brief Indicate that the stream should be bufferized
4950
void readStream( const size_t streamIndex, const bool readStream = true );
5051

5152
protected:

src/AvTranscoder/InputStream.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class InputStream
2020

2121
virtual bool readNextPacket( DataStream& data ) = 0;
2222

23-
// Stream propeerties
23+
// Stream properties
2424
virtual VideoDesc getVideoDesc() const = 0;
2525
virtual AudioDesc getAudioDesc() const = 0;
2626

@@ -30,8 +30,6 @@ class InputStream
3030
virtual void setBufferred( const bool bufferized ) = 0;
3131

3232
virtual void clearBuffering() = 0;
33-
34-
private:
3533
};
3634

3735
}

src/AvTranscoder/InputStreamAudio.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ InputStreamAudio::InputStreamAudio( const InputStream& inputStream )
4343
std::cout << "Audio codec Id : " << m_codecContext->codec_id << std::endl;
4444
std::cout << "Audio codec Id : " << m_codec->long_name << std::endl;
4545

46+
m_codecContext->channels = m_inputStream->getAudioDesc().getCodecContext()->channels;
47+
4648
int ret = avcodec_open2( m_codecContext, m_codec, NULL );
4749

4850
std::cout << "ret value : " << ret << std::endl;
@@ -99,8 +101,7 @@ InputStreamAudio::~InputStreamAudio()
99101

100102
bool InputStreamAudio::readNextFrame( AudioFrame& audioFrameBuffer )
101103
{
102-
/*
103-
int got_frame = 0;
104+
/*int got_frame = 0;
104105
while( ! got_frame )
105106
{
106107
AVPacket packet;
@@ -112,6 +113,10 @@ bool InputStreamAudio::readNextFrame( AudioFrame& audioFrameBuffer )
112113
return false;
113114
}
114115
116+
packet.stream_index = m_selectedStream;
117+
packet.data = audioFrameBuffer.getPtr();
118+
packet.size = audioFrameBuffer.getSize();
119+
115120
int ret = avcodec_decode_audio4( m_codecContext, m_frame, &got_frame, &packet );
116121
117122
if( ret < 0 )
@@ -120,8 +125,8 @@ bool InputStreamAudio::readNextFrame( AudioFrame& audioFrameBuffer )
120125
}
121126
122127
av_free_packet( &packet );
123-
}*/
124-
128+
}
129+
*/
125130
//size_t unpadded_linesize = m_frame->nb_samples * av_get_bytes_per_sample( m_frame->format );
126131

127132
// size_t decodedSize = avpicture_get_size( (AVPixelFormat)m_frame->format, m_frame->width, m_frame->height );

src/AvTranscoder/InputStreamVideo.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ InputStreamVideo::~InputStreamVideo()
9292

9393
bool InputStreamVideo::readNextFrame( Image& frameBuffer )
9494
{
95-
9695
int got_frame = 0;
9796

9897
while( ! got_frame )

src/AvTranscoder/InputStreamVideo.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class AvExport InputStreamVideo
2121
public:
2222
InputStreamVideo( AvInputStream& inputStream );
2323
~InputStreamVideo();
24-
24+
2525
bool readNextFrame( Image& frameBuffer );
2626

2727
void flushDecoder();

src/AvTranscoder/Transcoder.tcc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
#include <AvTranscoder/InputFile.hpp>
23

34
#include <AvTranscoder/AvInputStream.hpp>
@@ -66,13 +67,13 @@ void Transcoder::add( const std::string& filename, const size_t streamIndex )
6667
{
6768
case AVMEDIA_TYPE_VIDEO:
6869
{
69-
_inputStreams.push_back( &referenceFile->getStream( streamIndex ) );
70+
_inputStreams.push_back( & referenceFile->getStream( streamIndex ) );
7071
_outputFile.addVideoStream( _inputStreams.back()->getVideoDesc() );
7172
break;
7273
}
7374
case AVMEDIA_TYPE_AUDIO:
7475
{
75-
_inputStreams.push_back( &referenceFile->getStream( streamIndex ) );
76+
_inputStreams.push_back( & referenceFile->getStream( streamIndex ) );
7677
_outputFile.addAudioStream( _inputStreams.back()->getAudioDesc() );
7778
break;
7879
}

src/AvTranscoder/avTranscoder.i

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,18 @@
2020

2121
#include <AvTranscoder/Metadatas/MediaMetadatasStructures.hpp>
2222

23-
#include <AvTranscoder/InputFile.hpp>
24-
#include <AvTranscoder/OutputFile.hpp>
25-
2623
#include <AvTranscoder/OutputStream.hpp>
2724
#include <AvTranscoder/OutputStreamAudio.hpp>
2825
#include <AvTranscoder/OutputStreamVideo.hpp>
2926

3027
#include <AvTranscoder/InputStream.hpp>
28+
#include <AvTranscoder/AvInputStream.hpp>
3129
#include <AvTranscoder/InputStreamAudio.hpp>
3230
#include <AvTranscoder/InputStreamVideo.hpp>
3331

32+
#include <AvTranscoder/InputFile.hpp>
33+
#include <AvTranscoder/OutputFile.hpp>
34+
3435
#include <AvTranscoder/Transcoder.hpp>
3536

3637
%}
@@ -59,15 +60,16 @@ namespace std {
5960

6061
%include <AvTranscoder/Metadatas/MediaMetadatasStructures.hpp>
6162

62-
%include <AvTranscoder/InputFile.hpp>
63-
%include <AvTranscoder/OutputFile.hpp>
64-
6563
%include <AvTranscoder/OutputStream.hpp>
6664
%include <AvTranscoder/OutputStreamAudio.hpp>
6765
%include <AvTranscoder/OutputStreamVideo.hpp>
6866

6967
%include <AvTranscoder/InputStream.hpp>
68+
%include <AvTranscoder/AvInputStream.hpp>
7069
%include <AvTranscoder/InputStreamAudio.hpp>
7170
%include <AvTranscoder/InputStreamVideo.hpp>
7271

72+
%include <AvTranscoder/InputFile.hpp>
73+
%include <AvTranscoder/OutputFile.hpp>
74+
7375
%include <AvTranscoder/Transcoder.hpp>

0 commit comments

Comments
 (0)