gst_opus_enc_get_latency (enc), gst_opus_enc_get_latency (enc));
gst_audio_encoder_set_frame_samples_min (benc, enc->frame_samples);
gst_audio_encoder_set_frame_samples_max (benc, enc->frame_samples);
- gst_audio_encoder_set_frame_max (benc, 0);
+ gst_audio_encoder_set_frame_max (benc, 1);
}
static gint
gsize bsize, size;
gsize bytes;
gint ret = GST_FLOW_OK;
+ gint outsize;
+ GstBuffer *outbuf;
g_mutex_lock (enc->property_lock);
goto done;
}
+ g_assert (size == bytes);
- while (size) {
- gint outsize;
- GstBuffer *outbuf;
+ ret = gst_pad_alloc_buffer_and_set_caps (GST_AUDIO_ENCODER_SRC_PAD (enc),
+ GST_BUFFER_OFFSET_NONE, enc->max_payload_size * enc->n_channels,
+ GST_PAD_CAPS (GST_AUDIO_ENCODER_SRC_PAD (enc)), &outbuf);
- ret = gst_pad_alloc_buffer_and_set_caps (GST_AUDIO_ENCODER_SRC_PAD (enc),
- GST_BUFFER_OFFSET_NONE, enc->max_payload_size * enc->n_channels,
- GST_PAD_CAPS (GST_AUDIO_ENCODER_SRC_PAD (enc)), &outbuf);
-
- if (GST_FLOW_OK != ret)
- goto done;
-
- GST_DEBUG_OBJECT (enc, "encoding %d samples (%d bytes)",
- enc->frame_samples, (int) bytes);
-
- outsize =
- opus_multistream_encode (enc->state, (const gint16 *) data,
- enc->frame_samples, GST_BUFFER_DATA (outbuf),
- enc->max_payload_size * enc->n_channels);
+ if (GST_FLOW_OK != ret)
+ goto done;
- if (outsize < 0) {
- GST_ERROR_OBJECT (enc, "Encoding failed: %d", outsize);
- ret = GST_FLOW_ERROR;
- goto done;
- } else if (outsize > enc->max_payload_size) {
- GST_WARNING_OBJECT (enc,
- "Encoded size %d is higher than max payload size (%d bytes)",
- outsize, enc->max_payload_size);
- ret = GST_FLOW_ERROR;
- goto done;
- }
+ GST_DEBUG_OBJECT (enc, "encoding %d samples (%d bytes)",
+ enc->frame_samples, (int) bytes);
- GST_DEBUG_OBJECT (enc, "Output packet is %u bytes", outsize);
- GST_BUFFER_SIZE (outbuf) = outsize;
+ outsize =
+ opus_multistream_encode (enc->state, (const gint16 *) data,
+ enc->frame_samples, GST_BUFFER_DATA (outbuf),
+ enc->max_payload_size * enc->n_channels);
- ret =
- gst_audio_encoder_finish_frame (GST_AUDIO_ENCODER (enc), outbuf,
- enc->frame_samples);
+ if (outsize < 0) {
+ GST_ERROR_OBJECT (enc, "Encoding failed: %d", outsize);
+ ret = GST_FLOW_ERROR;
+ goto done;
+ } else if (outsize > enc->max_payload_size) {
+ GST_WARNING_OBJECT (enc,
+ "Encoded size %d is higher than max payload size (%d bytes)",
+ outsize, enc->max_payload_size);
+ ret = GST_FLOW_ERROR;
+ goto done;
+ }
- if ((GST_FLOW_OK != ret) && (GST_FLOW_NOT_LINKED != ret))
- goto done;
+ GST_DEBUG_OBJECT (enc, "Output packet is %u bytes", outsize);
+ GST_BUFFER_SIZE (outbuf) = outsize;
- data += bytes;
- size -= bytes;
- }
+ ret =
+ gst_audio_encoder_finish_frame (GST_AUDIO_ENCODER (enc), outbuf,
+ enc->frame_samples);
done: