From 880f3d8a185f0b126ebc2b0ad0b0c12969683053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 19 Jun 2014 11:15:56 +0200 Subject: [PATCH] androidmedia: Don't consider input buffer queueing failures as an error during flushing --- sys/androidmedia/gstamcaudiodec.c | 7 ++++++- sys/androidmedia/gstamcvideodec.c | 7 ++++++- sys/androidmedia/gstamcvideoenc.c | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/sys/androidmedia/gstamcaudiodec.c b/sys/androidmedia/gstamcaudiodec.c index 9d9f4ff4b8..60cbc30e34 100644 --- a/sys/androidmedia/gstamcaudiodec.c +++ b/sys/androidmedia/gstamcaudiodec.c @@ -1134,8 +1134,13 @@ gst_amc_audio_dec_handle_frame (GstAudioDecoder * decoder, GstBuffer * inbuf) idx, buffer_info.size, buffer_info.presentation_time_us, buffer_info.flags); if (!gst_amc_codec_queue_input_buffer (self->codec, idx, &buffer_info, - &err)) + &err)) { + if (self->flushing) { + g_clear_error (&err); + goto flushing; + } goto queue_error; + } } gst_buffer_unmap (inbuf, &minfo); gst_buffer_unref (inbuf); diff --git a/sys/androidmedia/gstamcvideodec.c b/sys/androidmedia/gstamcvideodec.c index 1cb8d406ed..d47bad6b76 100644 --- a/sys/androidmedia/gstamcvideodec.c +++ b/sys/androidmedia/gstamcvideodec.c @@ -1243,8 +1243,13 @@ gst_amc_video_dec_handle_frame (GstVideoDecoder * decoder, idx, buffer_info.size, buffer_info.presentation_time_us, buffer_info.flags); if (!gst_amc_codec_queue_input_buffer (self->codec, idx, &buffer_info, - &err)) + &err)) { + if (self->flushing) { + g_clear_error (&err); + goto flushing; + } goto queue_error; + } } gst_buffer_unmap (frame->input_buffer, &minfo); diff --git a/sys/androidmedia/gstamcvideoenc.c b/sys/androidmedia/gstamcvideoenc.c index 9e9f51a071..b6de05d86c 100644 --- a/sys/androidmedia/gstamcvideoenc.c +++ b/sys/androidmedia/gstamcvideoenc.c @@ -1524,8 +1524,13 @@ again: "Queueing buffer %d: size %d time %" G_GINT64_FORMAT " flags 0x%08x", idx, buffer_info.size, buffer_info.presentation_time_us, buffer_info.flags); - if (!gst_amc_codec_queue_input_buffer (self->codec, idx, &buffer_info, &err)) + if (!gst_amc_codec_queue_input_buffer (self->codec, idx, &buffer_info, &err)) { + if (self->flushing) { + g_clear_error (&err); + goto flushing; + } goto queue_error; + } gst_video_codec_frame_unref (frame);