Commit 47c81c46 authored by Julian Scheel's avatar Julian Scheel Committed by Jean-Baptiste Kempf

mmal/codec: Improve locking

Only lock when really needed. To do this feeding the mmal port with buffers is
done from one place only now.
Signed-off-by: default avatarJulian Scheel <julian@jusst.de>
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent de2115b5
...@@ -527,7 +527,6 @@ static picture_t *decode(decoder_t *dec, block_t **pblock) ...@@ -527,7 +527,6 @@ static picture_t *decode(decoder_t *dec, block_t **pblock)
* Send output buffers * Send output buffers
*/ */
if (sys->output_pool) { if (sys->output_pool) {
vlc_mutex_lock(&sys->mutex);
buffer = mmal_queue_get(sys->decoded_pictures); buffer = mmal_queue_get(sys->decoded_pictures);
if (buffer) { if (buffer) {
ret = (picture_t *)buffer->user_data; ret = (picture_t *)buffer->user_data;
...@@ -540,7 +539,6 @@ static picture_t *decode(decoder_t *dec, block_t **pblock) ...@@ -540,7 +539,6 @@ static picture_t *decode(decoder_t *dec, block_t **pblock)
} }
fill_output_port(dec); fill_output_port(dec);
vlc_mutex_unlock(&sys->mutex);
} }
if (ret) if (ret)
...@@ -647,11 +645,9 @@ static void output_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer) ...@@ -647,11 +645,9 @@ static void output_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
MMAL_EVENT_FORMAT_CHANGED_T *fmt; MMAL_EVENT_FORMAT_CHANGED_T *fmt;
MMAL_ES_FORMAT_T *format; MMAL_ES_FORMAT_T *format;
vlc_mutex_lock(&sys->mutex);
if (buffer->cmd == 0) { if (buffer->cmd == 0) {
if (buffer->length > 0) { if (buffer->length > 0) {
mmal_queue_put(sys->decoded_pictures, buffer); mmal_queue_put(sys->decoded_pictures, buffer);
fill_output_port(dec);
} else { } else {
picture = (picture_t *)buffer->user_data; picture = (picture_t *)buffer->user_data;
picture_Release(picture); picture_Release(picture);
...@@ -676,5 +672,4 @@ static void output_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer) ...@@ -676,5 +672,4 @@ static void output_port_cb(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer)
} else { } else {
mmal_buffer_header_release(buffer); mmal_buffer_header_release(buffer);
} }
vlc_mutex_unlock(&sys->mutex);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment