Skip to content

Commit af03c26

Browse files
author
Clement Champetier
committed
Video/AudioEncoder: fixed how to detect an error in the encoded process
* Only the returned value of the avcodec function is needed. * Indeed, the encoded process could be a success, without any data encoded (end of process).
1 parent dbcfed4 commit af03c26

File tree

2 files changed

+8
-14
lines changed

2 files changed

+8
-14
lines changed

src/AvTranscoder/encoder/AudioEncoder.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,24 +112,21 @@ bool AudioEncoder::encodeFrame(const Frame& sourceFrame, CodedData& codedFrame)
112112
#if LIBAVCODEC_VERSION_MAJOR > 53
113113
int gotPacket = 0;
114114
int ret = avcodec_encode_audio2(&avCodecContext, &packet, &sourceFrame.getAVFrame(), &gotPacket);
115-
if(ret != 0 && gotPacket == 0)
115+
if(ret != 0)
116116
{
117117
throw std::runtime_error("Encode audio frame error: avcodec encode audio frame - " +
118118
getDescriptionFromErrorCode(ret));
119119
}
120+
return ret == 0 && gotPacket == 1;
120121
#else
121122
int ret = avcodec_encode_audio(&avCodecContext, packet.data, packet.size, &sourceFrame.getAVFrame());
122123
if(ret < 0)
123124
{
124125
throw std::runtime_error("Encode audio frame error: avcodec encode audio frame - " +
125126
getDescriptionFromErrorCode(ret));
126127
}
127-
#endif
128-
129-
#if LIBAVCODEC_VERSION_MAJOR > 53
130-
return ret == 0 && gotPacket == 1;
131-
#endif
132128
return ret == 0;
129+
#endif
133130
}
134131

135132
bool AudioEncoder::encodeFrame(CodedData& codedFrame)
@@ -143,7 +140,7 @@ bool AudioEncoder::encodeFrame(CodedData& codedFrame)
143140
#if LIBAVCODEC_VERSION_MAJOR > 53
144141
int gotPacket = 0;
145142
int ret = avcodec_encode_audio2(&avCodecContext, &packet, NULL, &gotPacket);
146-
if(ret != 0 && gotPacket == 0)
143+
if(ret != 0)
147144
{
148145
throw std::runtime_error("Encode audio frame error: avcodec encode last audio frame - " +
149146
getDescriptionFromErrorCode(ret));

src/AvTranscoder/encoder/VideoEncoder.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,24 +125,21 @@ bool VideoEncoder::encodeFrame(const Frame& sourceFrame, CodedData& codedFrame)
125125
#if LIBAVCODEC_VERSION_MAJOR > 53
126126
int gotPacket = 0;
127127
int ret = avcodec_encode_video2(&avCodecContext, &packet, &sourceFrame.getAVFrame(), &gotPacket);
128-
if(ret != 0 && gotPacket == 0)
128+
if(ret != 0)
129129
{
130130
throw std::runtime_error("Encode video frame error: avcodec encode video frame - " +
131131
getDescriptionFromErrorCode(ret));
132132
}
133+
return ret == 0 && gotPacket == 1;
133134
#else
134135
int ret = avcodec_encode_video(&avCodecContext, packet.data, packet.size, &sourceFrame.getAVFrame());
135136
if(ret < 0)
136137
{
137138
throw std::runtime_error("Encode video frame error: avcodec encode video frame - " +
138139
getDescriptionFromErrorCode(ret));
139140
}
140-
#endif
141-
142-
#if LIBAVCODEC_VERSION_MAJOR > 53
143-
return ret == 0 && gotPacket == 1;
144-
#endif
145141
return ret == 0;
142+
#endif
146143
}
147144

148145
bool VideoEncoder::encodeFrame(CodedData& codedFrame)
@@ -156,7 +153,7 @@ bool VideoEncoder::encodeFrame(CodedData& codedFrame)
156153
#if LIBAVCODEC_VERSION_MAJOR > 53
157154
int gotPacket = 0;
158155
int ret = avcodec_encode_video2(&avCodecContext, &packet, NULL, &gotPacket);
159-
if(ret != 0 && gotPacket == 0)
156+
if(ret != 0)
160157
{
161158
throw std::runtime_error("Encode video frame error: avcodec encode last video frame - " +
162159
getDescriptionFromErrorCode(ret));

0 commit comments

Comments
 (0)