From d1f383341fda03b821496352f8e48a4ca4b7ee9a Mon Sep 17 00:00:00 2001 From: Lukasz Marek Date: Fri, 18 Oct 2013 23:41:20 +0200 Subject: lavd/pulse_audio_enc: add support for flushing Signed-off-by: Lukasz Marek Signed-off-by: Stefano Sabatini --- libavdevice/pulse_audio_enc.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'libavdevice') diff --git a/libavdevice/pulse_audio_enc.c b/libavdevice/pulse_audio_enc.c index 0a3aa1ad09..53436969f0 100644 --- a/libavdevice/pulse_audio_enc.c +++ b/libavdevice/pulse_audio_enc.c @@ -98,14 +98,20 @@ static av_cold int pulse_write_trailer(AVFormatContext *h) static int pulse_write_packet(AVFormatContext *h, AVPacket *pkt) { PulseData *s = h->priv_data; - int size = pkt->size; - uint8_t *buf = pkt->data; int error; + if (!pkt) { + if (pa_simple_flush(s->pa, &error) < 0) { + av_log(s, AV_LOG_ERROR, "pa_simple_flush failed: %s\n", pa_strerror(error)); + return AVERROR(EIO); + } + return 0; + } + if (s->stream_index != pkt->stream_index) return 0; - if (pa_simple_write(s->pa, buf, size, &error) < 0) { + if (pa_simple_write(s->pa, pkt->data, pkt->size, &error) < 0) { av_log(s, AV_LOG_ERROR, "pa_simple_write failed: %s\n", pa_strerror(error)); return AVERROR(EIO); } @@ -149,6 +155,6 @@ AVOutputFormat ff_pulse_muxer = { .write_packet = pulse_write_packet, .write_trailer = pulse_write_trailer, .get_output_timestamp = pulse_get_output_timestamp, - .flags = AVFMT_NOFILE, + .flags = AVFMT_NOFILE | AVFMT_ALLOW_FLUSH, .priv_class = &pulse_muxer_class, }; -- cgit v1.2.3