static int get_frame_size(audio_encoder_t *encoder) { int sz; if(encoder->stream->buffer_len < 4) return 0; sz = mp_decode_mp3_header(encoder->stream->buffer); if(sz <= 0) return 0; return sz; }
static int encode_twolame(audio_encoder_t *encoder, uint8_t *dest, void *src, int len, int max_size) { mpae_twolame_ctx *ctx = (mpae_twolame_ctx *)encoder->priv; int ret_size = 0, r2; len /= (2*encoder->params.channels); ret_size = twolame_encode_buffer_interleaved(ctx->twolame_ctx, src, len, dest, max_size); r2 = mp_decode_mp3_header(dest); mp_msg(MSGT_MENCODER, MSGL_DBG2, "\nSIZE: %d, max: %d, r2: %d\n", ret_size, max_size, r2); if(r2 > 0) ret_size = r2; return ret_size; }
static int encode_toolame(audio_encoder_t *encoder, uint8_t *dest, void *src, int len, int max_size) { mpae_toolame_ctx *ctx = (mpae_toolame_ctx *)encoder->priv; int ret_size = 0, r2, i, nsamples; int16_t *buffer; nsamples = len / (2*encoder->params.channels); buffer = (uint16_t *) src; for(i = 0; i < nsamples; i++) { ctx->left_pcm[i] = buffer[ctx->channels * i]; ctx->right_pcm[i] = buffer[(ctx->channels * i) + (ctx->channels - 1)]; } toolame_encode_buffer(ctx->toolame_ctx, ctx->left_pcm, ctx->right_pcm, nsamples, dest, max_size, &ret_size); r2 = mp_decode_mp3_header(dest); mp_msg(MSGT_MENCODER, MSGL_DBG2, "\nSIZE: %d, max: %d, r2: %d\n", ret_size, max_size, r2); if(r2 > 0) ret_size = r2; return ret_size; }