@@ -8,62 +8,32 @@ extern "C" {
8
8
#include < libavutil/samplefmt.h>
9
9
}
10
10
11
- #include < stdexcept>
12
-
13
11
namespace avtranscoder
14
12
{
15
13
16
14
// / @brief Description of a number of samples, which corresponds to one video frame
17
15
class AvExport AudioFrameDesc
18
16
{
19
17
public:
20
- AudioFrameDesc ( const size_t sampleRate = 0 , const size_t channels = 0 , const AVSampleFormat sampleFormat = AV_SAMPLE_FMT_NONE )
21
- : _sampleRate( sampleRate )
22
- , _channels( channels )
23
- , _sampleFormat( sampleFormat )
24
- , _fps( 1 . )
25
- {}
18
+ AudioFrameDesc ( const size_t sampleRate = 0 , const size_t channels = 0 , const AVSampleFormat sampleFormat = AV_SAMPLE_FMT_NONE );
26
19
27
- AudioFrameDesc ( const size_t sampleRate, const size_t channels, const std::string& sampleFormat )
28
- : _sampleRate( sampleRate )
29
- , _channels( channels )
30
- , _sampleFormat( av_get_sample_fmt( sampleFormat.c_str() ) )
31
- , _fps( 1 . )
32
- {}
20
+ AudioFrameDesc ( const size_t sampleRate, const size_t channels, const std::string& sampleFormat );
33
21
34
22
size_t getSampleRate () const { return _sampleRate; }
35
23
size_t getChannels () const { return _channels; }
36
24
AVSampleFormat getSampleFormat () const { return _sampleFormat; }
37
- std::string getSampleFormatName () const
38
- {
39
- const char * formatName = av_get_sample_fmt_name ( _sampleFormat );
40
- return formatName ? std::string ( formatName ) : " unknown sample format" ;
41
- }
25
+ std::string getSampleFormatName () const ;
42
26
double getFps () const { return _fps; }
43
27
44
- size_t getDataSize () const
45
- {
46
- if ( _sampleFormat == AV_SAMPLE_FMT_NONE )
47
- throw std::runtime_error ( " incorrect sample format" );
48
-
49
- size_t size = ( _sampleRate / _fps ) * _channels * av_get_bytes_per_sample ( _sampleFormat );
50
- if ( size == 0 )
51
- throw std::runtime_error ( " unable to determine audio buffer size" );
52
-
53
- return size;
54
- }
28
+ size_t getDataSize () const ;
55
29
56
30
void setSampleRate ( const size_t sampleRate ) { _sampleRate = sampleRate; }
57
31
void setChannels ( const size_t channels ) { _channels = channels; }
58
- void setSampleFormat ( const std::string& sampleFormatName ) { _sampleFormat = av_get_sample_fmt ( sampleFormatName. c_str () ); }
32
+ void setSampleFormat ( const std::string& sampleFormatName );
59
33
void setSampleFormat ( const AVSampleFormat sampleFormat ) { _sampleFormat = sampleFormat; }
60
34
void setFps ( const double fps ) { _fps = fps; }
61
35
62
- void setParameters ( const ProfileLoader::Profile& profile )
63
- {
64
- if ( profile.find ( constants::avProfileSampleFormat ) != profile.end () )
65
- setSampleFormat ( profile.find ( constants::avProfileSampleFormat )->second );
66
- }
36
+ void setParameters ( const ProfileLoader::Profile& profile );
67
37
68
38
private:
69
39
size_t _sampleRate;
0 commit comments