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 | FaacAudioContext *s = avctx->priv_data; | 125 | FaacAudioContext *s = avctx->priv_data; |
| 126 | int bytes_written; | 126 | int bytes_written; |
| 127 | int num_samples = data ? avctx->frame_size : 0; | ||
| 127 | 128 | ||
| 128 | bytes_written = faacEncEncode(s->faac_handle, | 129 | bytes_written = faacEncEncode(s->faac_handle, |
| 129 | data, | 130 | data, |
| 130 | avctx->frame_size * avctx->channels, | 131 | num_samples * avctx->channels, |
| 131 | frame, | 132 | frame, |
| 132 | buf_size); | 133 | buf_size); |
| 133 | 134 | ||
| @@ -161,6 +162,7 @@ AVCodec ff_libfaac_encoder = { · 27 unmodified lines | |||
| 161 | Faac_encode_init, | 162 | Faac_encode_init, |
| 162 | Faac_encode_frame, | 163 | Faac_encode_frame, |
| 163 | Faac_encode_close, | 164 | Faac_encode_close, |
| 165 | .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY, | ||
| 164 | .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE}, | 166 | .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE}, |
| 165 | .long_name = NULL_IF_CONFIG_SMALL("libfaac AAC (Advanced Audio Codec)"), | 167 | .long_name = NULL_IF_CONFIG_SMALL("libfaac AAC (Advanced Audio Codec)"), |
| 166 | .profiles = NULL_IF_CONFIG_SMALL(profiles), | 168 | .profiles = NULL_IF_CONFIG_SMALL(profiles), |