Browse Source

Simplify verbatim mode fallback by checking the frame size before writing.

Originally committed as revision 24632 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/n0.8
Justin Ruggles 15 years ago
parent
commit
3d2cd42f8a
1 changed files with 7 additions and 11 deletions
  1. +7
    -11
      libavcodec/flacenc.c

+ 7
- 11
libavcodec/flacenc.c View File

@@ -1285,24 +1285,20 @@ static int flac_encode_frame(AVCodecContext *avctx, uint8_t *frame,
channel_decorrelation(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
would be if encoded uncompressed. */
if (out_bytes > s->max_framesize) {
if (frame_bytes > s->max_framesize) {
s->frame.verbatim_only = 1;
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);
}

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);

s->frame_count++;
avctx->coded_frame->pts = s->sample_count;
s->sample_count += avctx->frame_size;


Loading…
Cancel
Save