Skip to content

Commit b94aa23

Browse files
author
Clement Champetier
committed
Use getDescriptionFromErrorCode when an ffmpeg/libav error occurs
1 parent 31016f4 commit b94aa23

File tree

7 files changed

+20
-58
lines changed

7 files changed

+20
-58
lines changed

src/AvTranscoder/Option.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -212,19 +212,15 @@ void Option::checkFFmpegGetOption( const int ffmpegReturnCode ) const
212212
{
213213
if( ffmpegReturnCode )
214214
{
215-
char err[AV_ERROR_MAX_STRING_SIZE];
216-
av_strerror( ffmpegReturnCode, err, sizeof(err) );
217-
throw std::runtime_error( "unknown key " + getName() + ": " + err );
215+
throw std::runtime_error( "unknown key " + getName() + ": " + getDescriptionFromErrorCode( ffmpegReturnCode ) );
218216
}
219217
}
220218

221219
void Option::checkFFmpegSetOption( const int ffmpegReturnCode, const std::string& optionValue )
222220
{
223221
if( ffmpegReturnCode )
224222
{
225-
char err[AV_ERROR_MAX_STRING_SIZE];
226-
av_strerror( ffmpegReturnCode, err, sizeof(err) );
227-
throw std::runtime_error( "setting " + getName() + " parameter to " + optionValue + ": " + err );
223+
throw std::runtime_error( "setting " + getName() + " parameter to " + optionValue + ": " + getDescriptionFromErrorCode( ffmpegReturnCode ) );
228224
}
229225
}
230226

src/AvTranscoder/codec/ICodec.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,7 @@ void ICodec::open()
6767
msg += ") ";
6868
avcodec_close( _avCodecContext );
6969

70-
char err[AV_ERROR_MAX_STRING_SIZE];
71-
av_strerror( ret, err, sizeof(err) );
72-
msg += err;
70+
msg += getDescriptionFromErrorCode( ret );
7371

7472
throw std::runtime_error( msg );
7573
}

src/AvTranscoder/decoder/AudioDecoder.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,7 @@ bool AudioDecoder::decodeNextFrame()
141141

142142
if( ret < 0 )
143143
{
144-
char err[AV_ERROR_MAX_STRING_SIZE];
145-
av_strerror( ret, err, sizeof(err) );
146-
throw std::runtime_error( "an error occured during audio decoding" + std::string( err ) );
144+
throw std::runtime_error( "an error occured during audio decoding" + getDescriptionFromErrorCode( ret ) );
147145
}
148146
}
149147
return true;

src/AvTranscoder/decoder/VideoDecoder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ bool VideoDecoder::decodeNextFrame()
9797
{
9898
char err[AV_ERROR_MAX_STRING_SIZE];
9999
av_strerror( ret, err, sizeof(err) );
100-
throw std::runtime_error( "an error occured during video decoding - " + std::string(err) );
100+
throw std::runtime_error( "an error occured during video decoding - " + getDescriptionFromErrorCode( ret ) );
101101
}
102102
}
103103
return true;

src/AvTranscoder/encoder/AudioEncoder.cpp

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,13 @@ bool AudioEncoder::encodeFrame( const Frame& sourceFrame, Frame& codedFrame )
4949
int bufferSize = av_samples_get_buffer_size( NULL, avCodecContext.channels, frame->nb_samples, avCodecContext.sample_fmt, 0 );
5050
if( bufferSize < 0 )
5151
{
52-
char err[AV_ERROR_MAX_STRING_SIZE];
53-
av_strerror( bufferSize, err, sizeof(err) );
54-
throw std::runtime_error( "Encode audio frame error: buffer size < 0 - " + std::string(err) );
52+
throw std::runtime_error( "Encode audio frame error: buffer size < 0 - " + getDescriptionFromErrorCode( bufferSize ) );
5553
}
5654

5755
int retvalue = avcodec_fill_audio_frame( frame, avCodecContext.channels, avCodecContext.sample_fmt, sourceAudioFrame.getData(), bufferSize, 0 );
5856
if( retvalue < 0 )
5957
{
60-
char err[AV_ERROR_MAX_STRING_SIZE];
61-
av_strerror( retvalue, err, sizeof(err) );
62-
throw std::runtime_error( "Encode audio frame error: avcodec fill audio frame - " + std::string( err ) );
58+
throw std::runtime_error( "Encode audio frame error: avcodec fill audio frame - " + getDescriptionFromErrorCode( retvalue ) );
6359
}
6460

6561
AVPacket& packet = codedFrame.getAVPacket();
@@ -82,17 +78,13 @@ bool AudioEncoder::encodeFrame( const Frame& sourceFrame, Frame& codedFrame )
8278
int ret = avcodec_encode_audio2( &avCodecContext, &packet, frame, &gotPacket );
8379
if( ret != 0 && gotPacket == 0 )
8480
{
85-
char err[AV_ERROR_MAX_STRING_SIZE];
86-
av_strerror( ret, err, sizeof(err) );
87-
throw std::runtime_error( "Encode audio frame error: avcodec encode audio frame - " + std::string( err ) );
81+
throw std::runtime_error( "Encode audio frame error: avcodec encode audio frame - " + getDescriptionFromErrorCode( ret ) );
8882
}
8983
#else
9084
int ret = avcodec_encode_audio( &avCodecContext, packet.data, packet.size, frame );
9185
if( ret < 0 )
9286
{
93-
char err[AV_ERROR_MAX_STRING_SIZE];
94-
av_strerror( ret, err, sizeof(err) );
95-
throw std::runtime_error( "Encode audio frame error: avcodec encode audio frame - " + std::string( err ) );
87+
throw std::runtime_error( "Encode audio frame error: avcodec encode audio frame - " + getDescriptionFromErrorCode( ret ) );
9688
}
9789
#endif
9890

@@ -122,19 +114,15 @@ bool AudioEncoder::encodeFrame( Frame& codedFrame )
122114
int ret = avcodec_encode_audio2( &avCodecContext, &packet, NULL, &gotPacket );
123115
if( ret != 0 && gotPacket == 0 )
124116
{
125-
char err[AV_ERROR_MAX_STRING_SIZE];
126-
av_strerror( ret, err, sizeof(err) );
127-
throw std::runtime_error( "Encode audio frame error: avcodec encode last audio frame - " + std::string( err ) );
117+
throw std::runtime_error( "Encode audio frame error: avcodec encode last audio frame - " + getDescriptionFromErrorCode( ret ) );
128118
}
129119
return ret == 0 && gotPacket == 1;
130120

131121
#else
132122
int ret = avcodec_encode_audio( &avCodecContext, packet.data, packet.size, NULL );
133123
if( ret < 0 )
134124
{
135-
char err[AV_ERROR_MAX_STRING_SIZE];
136-
av_strerror( ret, err, sizeof(err) );
137-
throw std::runtime_error( "Encode audio frame error: avcodec encode last audio frame - " + std::string( err ) );
125+
throw std::runtime_error( "Encode audio frame error: avcodec encode last audio frame - " + getDescriptionFromErrorCode( ret ) );
138126
}
139127
return ret == 0;
140128

src/AvTranscoder/encoder/VideoEncoder.cpp

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ bool VideoEncoder::encodeFrame( const Frame& sourceFrame, Frame& codedFrame )
5050
int bufferSize = avpicture_fill( (AVPicture*)frame, const_cast< unsigned char * >( sourceImageFrame.getData() ), avCodecContext.pix_fmt, avCodecContext.width, avCodecContext.height );
5151
if( bufferSize < 0 )
5252
{
53-
char err[AV_ERROR_MAX_STRING_SIZE];
54-
av_strerror( bufferSize, err, sizeof(err) );
55-
throw std::runtime_error( "Encode video frame error: buffer size < 0 - " + std::string(err) );
53+
throw std::runtime_error( "Encode video frame error: buffer size < 0 - " + getDescriptionFromErrorCode( bufferSize ) );
5654
}
5755

5856
AVPacket& packet = codedFrame.getAVPacket();
@@ -75,17 +73,13 @@ bool VideoEncoder::encodeFrame( const Frame& sourceFrame, Frame& codedFrame )
7573
int ret = avcodec_encode_video2( &avCodecContext, &packet, frame, &gotPacket );
7674
if( ret != 0 && gotPacket == 0 )
7775
{
78-
char err[AV_ERROR_MAX_STRING_SIZE];
79-
av_strerror( ret, err, sizeof(err) );
80-
throw std::runtime_error( "Encode video frame error: avcodec encode video frame - " + std::string( err ) );
76+
throw std::runtime_error( "Encode video frame error: avcodec encode video frame - " + getDescriptionFromErrorCode( ret ) );
8177
}
8278
#else
8379
int ret = avcodec_encode_video( &avCodecContext, packet.data, packet.size, frame );
8480
if( ret < 0 )
8581
{
86-
char err[AV_ERROR_MAX_STRING_SIZE];
87-
av_strerror( ret, err, sizeof(err) );
88-
throw std::runtime_error( "Encode video frame error: avcodec encode video frame - " + std::string( err ) );
82+
throw std::runtime_error( "Encode video frame error: avcodec encode video frame - " + getDescriptionFromErrorCode( ret ) );
8983
}
9084
#endif
9185

@@ -115,18 +109,14 @@ bool VideoEncoder::encodeFrame( Frame& codedFrame )
115109
int ret = avcodec_encode_video2( &avCodecContext, &packet, NULL, &gotPacket );
116110
if( ret != 0 && gotPacket == 0 )
117111
{
118-
char err[AV_ERROR_MAX_STRING_SIZE];
119-
av_strerror( ret, err, sizeof(err) );
120-
throw std::runtime_error( "Encode video frame error: avcodec encode last video frame - " + std::string( err ) );
112+
throw std::runtime_error( "Encode video frame error: avcodec encode last video frame - " + getDescriptionFromErrorCode( ret ) );
121113
}
122114
return ret == 0 && gotPacket == 1;
123115
#else
124116
int ret = avcodec_encode_video( &avCodecContext, packet.data, packet.size, NULL );
125117
if( ret < 0 )
126118
{
127-
char err[AV_ERROR_MAX_STRING_SIZE];
128-
av_strerror( ret, err, sizeof(err) );
129-
throw std::runtime_error( "Encode video frame error: avcodec encode last video frame - " + std::string( err ) );
119+
throw std::runtime_error( "Encode video frame error: avcodec encode last video frame - " + getDescriptionFromErrorCode( ret ) );
130120
}
131121
return ret == 0;
132122
#endif

src/AvTranscoder/file/FormatContext.cpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@ FormatContext::FormatContext( const std::string& filename, int req_flags )
1515
int ret = avformat_open_input( &_avFormatContext, filename.c_str(), NULL, NULL );
1616
if( ret < 0 )
1717
{
18-
char err[AV_ERROR_MAX_STRING_SIZE];
19-
av_strerror( ret, err, sizeof(err) );
2018
std::string msg = "unable to open file ";
2119
msg += filename;
2220
msg += ": ";
23-
msg += err;
21+
msg += getDescriptionFromErrorCode( ret );
2422
throw std::ios_base::failure( msg );
2523
}
2624
_isOpen = true;
@@ -86,10 +84,8 @@ void FormatContext::writeHeader( AVDictionary** options )
8684
int ret = avformat_write_header( _avFormatContext, options );
8785
if( ret != 0 )
8886
{
89-
char err[AV_ERROR_MAX_STRING_SIZE];
90-
av_strerror( ret, err, sizeof(err) );
9187
std::string msg = "could not write header: ";
92-
msg += err;
88+
msg += getDescriptionFromErrorCode( ret );
9389
throw std::runtime_error( msg );
9490
}
9591
}
@@ -104,10 +100,8 @@ void FormatContext::writeFrame( AVPacket& packet, bool interleaved )
104100

105101
if( ret != 0 )
106102
{
107-
char err[AV_ERROR_MAX_STRING_SIZE];
108-
av_strerror( ret, err, sizeof(err) );
109103
std::string msg = "error when writting packet in stream: ";
110-
msg += err;
104+
msg += getDescriptionFromErrorCode( ret );
111105
throw std::runtime_error( msg );
112106
}
113107
}
@@ -125,9 +119,7 @@ void FormatContext::addMetaData( const std::string& key, const std::string& valu
125119
int ret = av_dict_set( &_avFormatContext->metadata, key.c_str(), value.c_str(), 0 );
126120
if( ret < 0 )
127121
{
128-
char err[AV_ERROR_MAX_STRING_SIZE];
129-
av_strerror( ret, err, sizeof(err) );
130-
std::cout << err << std::endl;
122+
std::cout << getDescriptionFromErrorCode( ret ) << std::endl;
131123
}
132124
}
133125

0 commit comments

Comments
 (0)