[FFmpeg-devel] [PATCH] ffplay: more robust mutex, condition variable handling
Marton Balint
cus at passwd.hu
Thu Oct 1 02:49:45 CEST 2015
On Tue, 29 Sep 2015, Ganesh Ajjanagadde wrote:
> SDL_CreateMutex and SDL_CreateCond can fail:
> https://wiki.libsdl.org/SDL_CreateMutex.
> This patch makes handling more robust in one instance.
>
> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> ---
> ffplay.c | 17 +++++++++++++----
> 1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/ffplay.c b/ffplay.c
> index 3c2407f..9466996 100644
> --- a/ffplay.c
> +++ b/ffplay.c
> @@ -451,12 +451,21 @@ static int packet_queue_put_nullpacket(PacketQueue *q, int stream_index)
> }
>
> /* packet queue handling */
> -static void packet_queue_init(PacketQueue *q)
> +static int packet_queue_init(PacketQueue *q)
> {
> memset(q, 0, sizeof(PacketQueue));
> q->mutex = SDL_CreateMutex();
> + if (!q->mutex) {
> + av_log(q, AV_LOG_FATAL, "SDL_CreateMutex(): %s\n", SDL_GetError());
> + return AVERROR(ENOMEM);
> + }
> q->cond = SDL_CreateCond();
> + if (!q->cond) {
> + av_log(q, AV_LOG_FATAL, "SDL_CreateCond(): %s\n", SDL_GetError());
> + return AVERROR(ENOMEM);
> + }
> q->abort_request = 1;
> + return 0;
> }
>
> static void packet_queue_flush(PacketQueue *q)
> @@ -3136,9 +3145,9 @@ static VideoState *stream_open(const char *filename, AVInputFormat *iformat)
> if (frame_queue_init(&is->sampq, &is->audioq, SAMPLE_QUEUE_SIZE, 1) < 0)
> goto fail;
>
> - packet_queue_init(&is->videoq);
> - packet_queue_init(&is->audioq);
> - packet_queue_init(&is->subtitleq);
> + if (packet_queue_init(&is->videoq) || packet_queue_init(&is->audioq)
> + || packet_queue_init(&is->subtitleq))
> + goto fail;
Only cosmetics, but maybe you could use ffmpeg-api-like less-than-zero
error checking with common indentation:
if (packet_queue_init() < 0 ||
packet_queue_init() < 0 ||
packet_queue_init() < 0)
Regards,
Marton
More information about the ffmpeg-devel
mailing list