Gives decoded output identical in length to faac commandline encoder. Fixes Issue 670.
Unified · Split
| @@ -124,10 +124,11 @@ static int Faac_encode_frame(AVCodecContext *avctx, · 123 unmodified lines | ||
| 124 | 124 | { |
| 125 | 125 | FaacAudioContext *s = avctx->priv_data; |
| 126 | 126 | int bytes_written; |
| 127 | + int num_samples = data ? avctx->frame_size : 0; | |
| 127 | 128 | |
| 128 | 129 | bytes_written = faacEncEncode(s->faac_handle, |
| 129 | 130 | data, |
| 130 | − avctx->frame_size * avctx->channels, | |
| 131 | + num_samples * avctx->channels, | |
| 131 | 132 | frame, |
| 132 | 133 | buf_size); |
| 133 | 134 | |
| @@ -161,6 +162,7 @@ AVCodec ff_libfaac_encoder = { · 27 unmodified lines | ||
| 161 | 162 | Faac_encode_init, |
| 162 | 163 | Faac_encode_frame, |
| 163 | 164 | Faac_encode_close, |
| 165 | + .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY, | |
| 164 | 166 | .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE}, |
| 165 | 167 | .long_name = NULL_IF_CONFIG_SMALL("libfaac AAC (Advanced Audio Codec)"), |
| 166 | 168 | .profiles = NULL_IF_CONFIG_SMALL(profiles), |