// Copy data from input frame to encode frame (because libavcodec wants a full // AC3 frame for encoding, while filter input frames can be smaller or larger). // Return true if the frame is complete. static bool fill_buffer(struct af_instance *af) { af_ac3enc_t *s = af->priv; af->delay = 0; if (s->pending) { int copy = MPMIN(s->in_samples - s->input->samples, s->pending->samples); s->input->samples += copy; mp_audio_copy(s->input, s->input->samples - copy, s->pending, 0, copy); mp_audio_skip_samples(s->pending, copy); } update_delay(af); return s->input->samples >= s->in_samples; }
// Copy data from input frame to encode frame (because libavcodec wants a full // AC3 frame for encoding, while filter input frames can be smaller or larger). // Return true if the frame is complete. static bool fill_buffer(struct af_instance *af) { af_ac3enc_t *s = af->priv; af->delay = 0; if (s->pending) { if (!mp_audio_is_writeable(s->input)) assert(s->input->samples == 0); // we can't have sent a partial frame mp_audio_realloc_min(s->input, s->in_samples); int copy = MPMIN(s->in_samples - s->input->samples, s->pending->samples); s->input->samples += copy; mp_audio_copy(s->input, s->input->samples - copy, s->pending, 0, copy); mp_audio_skip_samples(s->pending, copy); } update_delay(af); return s->input->samples >= s->in_samples; }