Simplify verbatim mode fallback by checking the frame size before writing.
Originally committed as revision 24632 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@@ -1285,23 +1285,19 @@ static int flac_encode_frame(AVCodecContext *avctx, uint8_t *frame,
|
|||||||
channel_decorrelation(s);
|
channel_decorrelation(s);
|
||||||
|
|
||||||
frame_bytes = encode_frame(s);
|
frame_bytes = encode_frame(s);
|
||||||
if (buf_size < frame_bytes) {
|
|
||||||
av_log(avctx, AV_LOG_ERROR, "output buffer too small\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
out_bytes = write_frame(s, frame, buf_size);
|
|
||||||
|
|
||||||
/* fallback to verbatim mode if the compressed frame is larger than it
|
/* fallback to verbatim mode if the compressed frame is larger than it
|
||||||
would be if encoded uncompressed. */
|
would be if encoded uncompressed. */
|
||||||
if (out_bytes > s->max_framesize) {
|
if (frame_bytes > s->max_framesize) {
|
||||||
s->frame.verbatim_only = 1;
|
s->frame.verbatim_only = 1;
|
||||||
frame_bytes = encode_frame(s);
|
frame_bytes = encode_frame(s);
|
||||||
|
}
|
||||||
|
|
||||||
if (buf_size < frame_bytes) {
|
if (buf_size < frame_bytes) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "output buffer too small\n");
|
av_log(avctx, AV_LOG_ERROR, "output buffer too small\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
out_bytes = write_frame(s, frame, buf_size);
|
out_bytes = write_frame(s, frame, buf_size);
|
||||||
}
|
|
||||||
|
|
||||||
s->frame_count++;
|
s->frame_count++;
|
||||||
avctx->coded_frame->pts = s->sample_count;
|
avctx->coded_frame->pts = s->sample_count;
|
||||||
|
Reference in New Issue
Block a user