MCPcopy Create free account
hub / github.com/LMMS/lmms / startEncoding

Method startEncoding

src/core/audio/AudioFileOgg.cpp:70–179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68
69
70bool AudioFileOgg::startEncoding()
71{
72 vorbis_comment vc;
73 const char * comments = "Cool=This song has been made using LMMS";
74 int comment_length = strlen( comments );
75 char * user_comments = new char[comment_length + 1];
76 strcpy( user_comments, comments );
77
78 vc.user_comments = &user_comments;
79 vc.comment_lengths = &comment_length;
80 vc.comments = 1;
81 vc.vendor = NULL;
82
83 m_channels = channels();
84
85 bool useVariableBitRate = getOutputSettings().getBitRateSettings().isVariableBitRate();
86 bitrate_t minimalBitrate = nominalBitrate();
87 bitrate_t maximumBitrate = nominalBitrate();
88
89 if( useVariableBitRate )
90 {
91 minimalBitrate = minBitrate(); // min for vbr
92 maximumBitrate = maxBitrate(); // max for vbr
93 }
94
95
96 m_rate = sampleRate(); // default-samplerate
97 if( m_rate > 48000 )
98 {
99 m_rate = 48000;
100 setSampleRate( 48000 );
101 }
102
103 m_comments = &vc; // comments for ogg-file
104
105 // Have vorbisenc choose a mode for us
106 vorbis_info_init( &m_vi );
107
108 if( vorbis_encode_setup_managed( &m_vi, m_channels, m_rate,
109 ( maximumBitrate > 0 )? maximumBitrate * 1000 : -1,
110 nominalBitrate() * 1000,
111 ( minimalBitrate > 0 )? minimalBitrate * 1000 : -1 ) )
112 {
113 printf( "Mode initialization failed: invalid parameters for "
114 "bitrate\n" );
115 vorbis_info_clear( &m_vi );
116 delete[] user_comments;
117 return false;
118 }
119
120 if( useVariableBitRate )
121 {
122 // Turn off management entirely (if it was turned on).
123 vorbis_encode_ctl( &m_vi, OV_ECTL_RATEMANAGE_SET, NULL );
124 }
125 else
126 {
127 vorbis_encode_ctl( &m_vi, OV_ECTL_RATEMANAGE_AVG, NULL );

Callers

nothing calls this directly

Calls 3

sampleRateFunction · 0.85
setSampleRateFunction · 0.85
isVariableBitRateMethod · 0.80

Tested by

no test coverage detected