in S3_HLS_Queue.c [111:144]
int32_t S3_HLS_Release_Queue(S3_HLS_QUEUE_CTX* ctx) {
if(NULL == ctx) {
QUEUE_DEBUG("[Release]Invalid Queue Context!\n");
return S3_HLS_INVALID_PARAMETER;
}
QUEUE_DEBUG("[Release]Locking queue!\n");
int32_t ret = pthread_mutex_lock(&ctx->s3_hls_queue_lock);
if(0 != ret) {
// unknown error
QUEUE_DEBUG("[Release]Get Queue Lock Failed! %d\n", ret);
return ret;
}
if(ctx->queue_length > 0) {
ctx->queue_pos ++;
ctx->queue_length--;
QUEUE_DEBUG("Released queue! length: %d\n", ctx->queue_length);
if(S3_HLS_MAX_PARTS_IN_BUFFER == ctx->queue_pos)
ctx->queue_pos = 0;
} else {
QUEUE_DEBUG("Queue is empty cannot release!\n");
}
QUEUE_DEBUG("[Release]Unlocking queue!\n");
ret = pthread_mutex_unlock(&ctx->s3_hls_queue_lock);
if(0 != ret) {
// unknown error
QUEUE_DEBUG("[Release]Get Queue Unlock Failed! %d\n", ret);
return ret;
}
return S3_HLS_OK;
}