Skip to content

Commit 702b60b

Browse files
Merge branch 'cchampet-dev_FormatProfile'
2 parents cdfe549 + 3b76433 commit 702b60b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+1114
-990
lines changed

SConstruct

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ import os
44
import sys
55
import ConfigParser
66

7+
mymode = ARGUMENTS.get('mode', 'release')
8+
9+
if not (mymode in ['debug', 'release']):
10+
print "Error: expected 'debug' or 'release', found: " + mymode
11+
Exit(1)
12+
713
config = ConfigParser.RawConfigParser()
814

915
config.read( [
@@ -162,7 +168,18 @@ Export( "resampleLibraryName" )
162168
VariantDir( 'build/src', 'src', duplicate = 0 )
163169
VariantDir( 'build/app', 'app', duplicate = 0 )
164170

165-
SConscript( [
171+
172+
if mymode == "release":
173+
env.Append(CCFLAGS = ['-O3'])
174+
if mymode == "debug":
175+
env.Append(CCFLAGS = ['-pg'])
176+
177+
sconscripts = [
166178
'build/src/SConscript',
167179
'build/app/SConscript',
168-
] )
180+
]
181+
182+
SConscript('src/SConscript', variant_dir='build/'+mymode+'/src', exports={'env':env})
183+
SConscript('app/SConscript', variant_dir='build/'+mymode+'/app', exports={'env':env})
184+
185+

app/avTranscoder/avTranscoder.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ void transcodeVideo( const char* inputfilename, const char* outputFilename )
2626

2727
// init video decoders
2828
InputVideo inputVideo( input.getStream( 0 ) );
29-
ImageDesc imageDesc = input.getStream( 0 ).getVideoDesc().getImageDesc();
30-
Image sourceImage( imageDesc );
29+
VideoFrameDesc VideoFrameDesc = input.getStream( 0 ).getVideoDesc().getVideoFrameDesc();
30+
VideoFrame sourceImage( VideoFrameDesc );
3131

3232
// init video encoder
3333
OutputVideo outputVideo;
34-
outputVideo.setProfile( profile.getProfile( "xdcamhd422" ), imageDesc );
35-
Image imageToEncode( outputVideo.getVideoDesc().getImageDesc() );
34+
outputVideo.setProfile( profile.getProfile( "xdcamhd422" ), VideoFrameDesc );
35+
VideoFrame imageToEncode( outputVideo.getVideoDesc().getVideoFrameDesc() );
3636

3737
DataStream codedImage;
3838

app/avplay/AvReader.hpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class AvReader : public Reader
2929

3030
m_inputVideo->setup();
3131

32-
m_sourceImage = new avtranscoder::Image( m_inputFile.getStream( m_videoStream ).getVideoDesc().getImageDesc() );
32+
m_sourceImage = new avtranscoder::VideoFrame( m_inputFile.getStream( m_videoStream ).getVideoDesc().getVideoFrameDesc() );
3333

3434
pixel.setBitsPerPixel( getComponents() * getBitDepth() );
3535
pixel.setComponents( getComponents() );
@@ -38,13 +38,13 @@ class AvReader : public Reader
3838
pixel.setAlpha( false );
3939
pixel.setPlanar( false );
4040

41-
imageDescToDisplay.setWidth( m_sourceImage->desc().getWidth() );
42-
imageDescToDisplay.setHeight( m_sourceImage->desc().getHeight() );
43-
imageDescToDisplay.setDar( m_sourceImage->desc().getDar() );
41+
VideoFrameDescToDisplay.setWidth( m_sourceImage->desc().getWidth() );
42+
VideoFrameDescToDisplay.setHeight( m_sourceImage->desc().getHeight() );
43+
VideoFrameDescToDisplay.setDar( m_sourceImage->desc().getDar() );
4444

45-
imageDescToDisplay.setPixel( pixel.findPixel() );
45+
VideoFrameDescToDisplay.setPixel( pixel.findPixel() );
4646

47-
m_imageToDisplay = new avtranscoder::Image( imageDescToDisplay );
47+
m_imageToDisplay = new avtranscoder::VideoFrame( VideoFrameDescToDisplay );
4848
}
4949

5050
~AvReader()
@@ -106,11 +106,11 @@ class AvReader : public Reader
106106

107107
avtranscoder::InputVideo* m_inputVideo;
108108

109-
avtranscoder::Image* m_sourceImage;
110-
avtranscoder::Image* m_imageToDisplay;
109+
avtranscoder::VideoFrame* m_sourceImage;
110+
avtranscoder::VideoFrame* m_imageToDisplay;
111111

112112
avtranscoder::Pixel pixel;
113-
avtranscoder::ImageDesc imageDescToDisplay;
113+
avtranscoder::VideoFrameDesc VideoFrameDescToDisplay;
114114

115115
avtranscoder::VideoEssenceTransform m_videoEssenceTransform;
116116
size_t m_videoStream;

app/presetChecker/presetChecker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ int main( int argc, char** argv )
2525
if( profile.find( avtranscoder::Profile::avProfileType )->second == avtranscoder::Profile::avProfileTypeVideo )
2626
{
2727
avtranscoder::OutputVideo outputVideo;
28-
outputVideo.setProfile( profile, outputVideo.getVideoDesc().getImageDesc() );
28+
outputVideo.setProfile( profile, outputVideo.getVideoDesc().getVideoFrameDesc() );
2929
}
3030

3131
if( profile.find( avtranscoder::Profile::avProfileType )->second == avtranscoder::Profile::avProfileTypeAudio )

src/AvTranscoder/CodedStream/AvInputStream.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ extern "C" {
99

1010
#include <libavcodec/avcodec.h>
1111
#include <libavformat/avformat.h>
12-
#include <libavutil/avutil.h>
13-
#include <libavutil/pixdesc.h>
14-
#include <libavutil/avstring.h>
1512
}
1613

1714
#include <stdexcept>

src/AvTranscoder/CodedStream/AvInputStream.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#include "InputStream.hpp"
55

6+
#include <AvTranscoder/CodedStructures/DataStream.hpp>
7+
68
namespace avtranscoder
79
{
810

@@ -28,7 +30,7 @@ class AvExport AvInputStream : public InputStream
2830

2931
bool readNextPacket( DataStream& data );
3032

31-
// Stream propeerties
33+
// Stream properties
3234
VideoDesc getVideoDesc() const;
3335
AudioDesc getAudioDesc() const;
3436

src/AvTranscoder/CodedStream/AvOutputStream.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#include <AvTranscoder/File/OutputFile.hpp>
44

55
#include <cassert>
6-
#include <iostream>
76

87
namespace avtranscoder
98
{

src/AvTranscoder/CodedStream/InputStream.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#ifndef _AV_TRANSCODER_CODED_STREAM_INPUT_STREAM_HPP_
22
#define _AV_TRANSCODER_CODED_STREAM_INPUT_STREAM_HPP_
33

4-
#include <AvTranscoder/DatasStructures/DataStreamDesc.hpp>
5-
#include <AvTranscoder/DatasStructures/AudioDesc.hpp>
6-
#include <AvTranscoder/DatasStructures/VideoDesc.hpp>
4+
#include <AvTranscoder/CodedStructures/DataStream.hpp>
5+
#include <AvTranscoder/CodedStructures/AudioDesc.hpp>
6+
#include <AvTranscoder/CodedStructures/VideoDesc.hpp>
77

88
namespace avtranscoder
99
{

src/AvTranscoder/CodedStream/OutputStream.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#ifndef _AV_TRANSCODER_CODED_STREAM_OUTPUT_STREAM_HPP_
22
#define _AV_TRANSCODER_CODED_STREAM_OUTPUT_STREAM_HPP_
33

4-
#include <AvTranscoder/DatasStructures/DataStreamDesc.hpp>
5-
#include <AvTranscoder/DatasStructures/AudioDesc.hpp>
6-
#include <AvTranscoder/DatasStructures/VideoDesc.hpp>
4+
#include <AvTranscoder/CodedStructures/DataStream.hpp>
5+
#include <AvTranscoder/CodedStructures/AudioDesc.hpp>
6+
#include <AvTranscoder/CodedStructures/VideoDesc.hpp>
77

88
namespace avtranscoder
99
{
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#include "AudioDesc.hpp"
2+
3+
#include <cassert>
4+
5+
namespace avtranscoder
6+
{
7+
8+
AudioDesc::AudioDesc( const std::string& codecName )
9+
: CodedDesc( codecName )
10+
{
11+
}
12+
13+
AudioDesc::AudioDesc( const AVCodecID codecId )
14+
: CodedDesc( codecId )
15+
{
16+
}
17+
18+
AudioDesc::AudioDesc( const CodedDesc& essenceDesc )
19+
: CodedDesc( essenceDesc.getCodecId() )
20+
{
21+
m_codec = essenceDesc.getCodec();
22+
m_codecContext = essenceDesc.getCodecContext();
23+
}
24+
25+
AudioFrameDesc AudioDesc::getFrameDesc() const
26+
{
27+
assert( m_codecContext != NULL );
28+
AudioFrameDesc audioFrameDesc;
29+
30+
audioFrameDesc.setChannels( m_codecContext->channels );
31+
audioFrameDesc.setSampleRate( m_codecContext->sample_rate );
32+
audioFrameDesc.setSampleFormat( m_codecContext->sample_fmt );
33+
// audioFrameDesc.setFps( 25 );
34+
35+
return audioFrameDesc;
36+
}
37+
38+
const size_t AudioDesc::getSampleRate() const
39+
{
40+
assert( m_codecContext != NULL );
41+
return m_codecContext->sample_rate;
42+
}
43+
44+
const size_t AudioDesc::getChannels() const
45+
{
46+
assert( m_codecContext != NULL );
47+
return m_codecContext->channels;
48+
}
49+
50+
const AVSampleFormat AudioDesc::getSampleFormat() const
51+
{
52+
assert( m_codecContext != NULL );
53+
return m_codecContext->sample_fmt;
54+
}
55+
56+
void AudioDesc::setAudioParameters( const AudioFrameDesc& audioFrameDesc )
57+
{
58+
setAudioParameters( audioFrameDesc.getSampleRate(), audioFrameDesc.getChannels(), audioFrameDesc.getSampleFormat() );
59+
}
60+
61+
void AudioDesc::setAudioParameters( const size_t sampleRate, const size_t channels, const AVSampleFormat sampleFormat )
62+
{
63+
m_codecContext->sample_rate = sampleRate;
64+
m_codecContext->channels = channels;
65+
m_codecContext->sample_fmt = sampleFormat;
66+
}
67+
68+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#ifndef _AV_TRANSCODER_DATA_AUDIO_DESC_HPP_
2+
#define _AV_TRANSCODER_DATA_AUDIO_DESC_HPP_
3+
4+
#include <AvTranscoder/EssenceStructures/AudioFrame.hpp>
5+
#include "CodedDesc.hpp"
6+
#include <AvTranscoder/common.hpp>
7+
8+
#include <string>
9+
10+
class AVCodec;
11+
12+
namespace avtranscoder
13+
{
14+
15+
class AvExport AudioDesc : public CodedDesc
16+
{
17+
public:
18+
AudioDesc( const std::string& codecName = "" );
19+
AudioDesc( const AVCodecID codecId );
20+
AudioDesc( const CodedDesc& essenceDesc );
21+
22+
AudioFrameDesc getFrameDesc() const;
23+
const size_t getSampleRate() const;
24+
const size_t getChannels() const;
25+
const AVSampleFormat getSampleFormat() const;
26+
27+
void setAudioParameters( const AudioFrameDesc& audioFrameDesc );
28+
void setAudioParameters( const size_t sampleRate, const size_t channels, const AVSampleFormat sampleFormat );
29+
};
30+
31+
}
32+
33+
#endif
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#include "CodedDesc.hpp"
2+
3+
#include <stdexcept>
4+
#include <cassert>
5+
6+
namespace avtranscoder {
7+
8+
CodedDesc::CodedDesc( const std::string& codecName )
9+
: m_codec( NULL )
10+
, m_codecContext( NULL )
11+
{
12+
if( codecName.size() )
13+
setCodec( codecName );
14+
}
15+
16+
CodedDesc::CodedDesc( const AVCodecID codecId )
17+
: m_codec( NULL )
18+
, m_codecContext( NULL )
19+
{
20+
setCodec( codecId );
21+
}
22+
23+
CodedDesc::CodedDesc( AVCodec& avCodec, AVCodecContext& avCodecContext )
24+
: m_codec( &avCodec )
25+
, m_codecContext( &avCodecContext )
26+
{
27+
28+
}
29+
30+
std::string CodedDesc::getCodecName() const
31+
{
32+
assert( m_codecContext != NULL );
33+
return avcodec_descriptor_get( m_codecContext->codec_id )->name;
34+
}
35+
36+
AVCodecID CodedDesc::getCodecId() const
37+
{
38+
assert( m_codecContext != NULL );
39+
return m_codecContext->codec_id;
40+
}
41+
42+
void CodedDesc::setCodec( const std::string& codecName )
43+
{
44+
avcodec_register_all(); // Warning: should be called only once
45+
m_codec = avcodec_find_encoder_by_name( codecName.c_str() );
46+
initCodecContext();
47+
}
48+
49+
void CodedDesc::setCodec( const AVCodecID codecId )
50+
{
51+
avcodec_register_all(); // Warning: should be called only once
52+
m_codec = avcodec_find_encoder( codecId );
53+
initCodecContext();
54+
}
55+
56+
void CodedDesc::initCodecContext( )
57+
{
58+
if( m_codec == NULL )
59+
{
60+
throw std::runtime_error( "unknown audio codec" );
61+
}
62+
63+
if( ( m_codecContext = avcodec_alloc_context3( m_codec ) ) == NULL )
64+
{
65+
throw std::runtime_error( "unable to create context for audio context" );
66+
}
67+
68+
// Set default codec parameters
69+
if( avcodec_get_context_defaults3( m_codecContext, m_codec ) != 0 )
70+
{
71+
throw std::runtime_error( "unable to find audio codec default values" );
72+
}
73+
}
74+
75+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#ifndef _AV_TRANSCODER_DATA_ESSENCE_DESC_HPP_
2+
#define _AV_TRANSCODER_DATA_ESSENCE_DESC_HPP_
3+
4+
#include <string>
5+
6+
#include <AvTranscoder/common.hpp>
7+
8+
class AVCodec;
9+
class AVCodecContext;
10+
11+
namespace avtranscoder
12+
{
13+
14+
class AvExport CodedDesc
15+
{
16+
public:
17+
CodedDesc( const std::string& codecName );
18+
CodedDesc( const AVCodecID codecId );
19+
CodedDesc( AVCodec& avCodec, AVCodecContext& avCodecContext );
20+
21+
virtual ~CodedDesc() {}
22+
23+
std::string getCodecName() const;
24+
AVCodecID getCodecId() const;
25+
26+
void setCodec( const std::string& codecName );
27+
void setCodec( const AVCodecID codecId );
28+
29+
#ifndef SWIG
30+
AVCodec* getCodec() const { return m_codec; }
31+
AVCodecContext* getCodecContext() const { return m_codecContext; }
32+
#endif
33+
34+
private:
35+
void initCodecContext( );
36+
37+
void checkError( int error );
38+
39+
protected:
40+
AVCodec* m_codec;
41+
AVCodecContext* m_codecContext;
42+
};
43+
44+
}
45+
46+
#endif
47+

0 commit comments

Comments
 (0)