Lines Matching defs:queue

174 OMX_ERRORTYPE VIDDEC_Queue_Init(VIDDEC_QUEUE_TYPE *queue, VIDDEC_QUEUE_TYPES type)
179 queue->nHead = 0;
180 queue->nTail = 0;
181 queue->nElements = 0;
186 queue->Elements = (void*)malloc(VIDDEC_MAX_QUEUE_SIZE*sizeof(OMX_U32));
187 /*OMX_MALLOC_STRUCT_SIZED(queue->Elements, void, VIDDEC_MAX_QUEUE_SIZE*sizeof(OMX_U32));*/
190 queue->Elements = (void*)malloc(VIDDEC_MAX_QUEUE_SIZE*sizeof(OMX_MARKTYPE));
191 /*OMX_MALLOC_STRUCT_SIZED(queue->Elements, void, VIDDEC_MAX_QUEUE_SIZE*sizeof(OMX_MARKTYPE));*/
195 pthread_mutex_init(&(queue->mMutex), NULL);
199 queue->CounterElements[count] = 0;
207 OMX_ERRORTYPE VIDDEC_Queue_Flush(VIDDEC_QUEUE_TYPE *queue)
212 if (pthread_mutex_lock (&(queue->mMutex)) != 0) {
216 queue->nHead = 0;
217 queue->nTail = 0;
218 queue->nElements = 0;
222 queue->CounterElements[count] = 0;
226 if (pthread_mutex_unlock (&(queue->mMutex)) != 0) {
234 OMX_ERRORTYPE VIDDEC_Queue_Add(VIDDEC_QUEUE_TYPE *queue, OMX_PTR pElement, VIDDEC_QUEUE_TYPES type)
238 if (pthread_mutex_lock (&(queue->mMutex)) != 0) {
242 if(queue->nElements == 0)
248 OMX_U32 *pLocal = (OMX_U32 *)queue->Elements;
249 pLocal[queue->nHead] = *(OMX_U32 *)pElement;
254 OMX_MARKTYPE *pLocal = (OMX_MARKTYPE *)queue->Elements;
255 pLocal[queue->nHead] = *(OMX_MARKTYPE *)pElement;
256 /*memcpy(&pLocal[queue->nHead], pElement, sizeof(OMX_MARKTYPE));*/
260 queue->CounterElements[queue->nHead] = 1;
261 queue->nElements++;
270 OMX_U32 *pLocal = (OMX_U32 *)queue->Elements;
272 if(pLocal[queue->nHead] == *(OMX_U32 *)pElement)
274 queue->CounterElements[queue->nHead]++;
279 if(queue->nElements >= VIDDEC_MAX_QUEUE_SIZE)
284 queue->nHead++;
285 if(queue->nHead >= VIDDEC_MAX_QUEUE_SIZE)
287 queue->nHead = 0;
289 pLocal[queue->nHead] = *(OMX_U32 *)pElement;
290 queue->CounterElements[queue->nHead] = 1;
291 queue->nElements++;
297 OMX_MARKTYPE *pLocal = (OMX_MARKTYPE *)queue->Elements;
299 if(pLocal[queue->nHead].hMarkTargetComponent == ((OMX_MARKTYPE *)pElement)->hMarkTargetComponent
300 && pLocal[queue->nHead].pMarkData == ((OMX_MARKTYPE *)pElement)->pMarkData)
302 queue->CounterElements[queue->nHead]++;
307 if(queue->nElements >= VIDDEC_MAX_QUEUE_SIZE)
312 queue->nHead++;
313 if(queue->nHead >= VIDDEC_MAX_QUEUE_SIZE)
315 queue->nHead = 0;
317 pLocal[queue->nHead] = *(OMX_MARKTYPE *)pElement;
318 queue->CounterElements[queue->nHead] = 1;
319 queue->nElements++;
328 if (pthread_mutex_unlock (&(queue->mMutex)) != 0) {
336 OMX_ERRORTYPE VIDDEC_Queue_Remove(VIDDEC_QUEUE_TYPE *queue, OMX_PTR pElement, VIDDEC_QUEUE_TYPES type)
340 if (pthread_mutex_lock (&(queue->mMutex)) != 0) {
345 if(queue->nElements > 0)
353 OMX_U32 *pLocal = (OMX_U32 *)queue->Elements;
354 *(OMX_U32 *)pElement = pLocal[queue->nTail];
359 OMX_MARKTYPE *pLocal = (OMX_MARKTYPE *)queue->Elements;
360 *(OMX_MARKTYPE *)pElement = pLocal[queue->nTail];
365 queue->CounterElements[queue->nTail]--;
366 if(queue->CounterElements[queue->nTail] == 0)
368 queue->nElements--;
369 if(queue->nElements > 0)
371 queue->nTail++;
372 if(queue->nTail == VIDDEC_MAX_QUEUE_SIZE)
374 queue->nTail = 0;
381 if (pthread_mutex_unlock (&(queue->mMutex)) != 0) {
388 OMX_ERRORTYPE VIDDEC_Queue_Get_Tail(VIDDEC_QUEUE_TYPE *queue, OMX_PTR pElement, VIDDEC_QUEUE_TYPES type)
392 if (pthread_mutex_lock (&(queue->mMutex)) != 0) {
396 if(queue->nElements > 0)
402 OMX_U32 *pLocal = (OMX_U32 *)queue->Elements;
403 *(OMX_U32 *)pElement = pLocal[queue->nTail];
408 OMX_MARKTYPE *pLocal = (OMX_MARKTYPE *)queue->Elements;
409 *(OMX_MARKTYPE *)pElement = pLocal[queue->nTail];
415 if (pthread_mutex_unlock (&(queue->mMutex)) != 0) {
423 OMX_ERRORTYPE VIDDEC_Queue_Replace_Tail(VIDDEC_QUEUE_TYPE *queue, OMX_PTR pElement, VIDDEC_QUEUE_TYPES type)
427 if (pthread_mutex_lock (&(queue->mMutex)) != 0) {
431 if(queue->nElements > 0)
437 OMX_U32 *pLocal = (OMX_U32 *)queue->Elements;
438 if(*(OMX_U32 *)pElement != pLocal[queue->nTail])
440 if(queue->CounterElements[queue->nTail] != 1)
442 if(queue->nElements >= VIDDEC_MAX_QUEUE_SIZE)
447 queue->CounterElements[queue->nTail]--;
448 queue->nTail--;
449 if(queue->nTail >= VIDDEC_MAX_QUEUE_SIZE)
451 queue->nTail = VIDDEC_MAX_QUEUE_SIZE-1;
453 queue->CounterElements[queue->nTail] = 1;
454 queue->nElements++;
456 pLocal[queue->nTail] = *(OMX_U32 *)pElement;
464 OMX_MARKTYPE *pLocal = (OMX_MARKTYPE *)queue->Elements;
465 if(pLocal[queue->nTail].hMarkTargetComponent != ((OMX_MARKTYPE *)pElement)->hMarkTargetComponent
466 || pLocal[queue->nTail].pMarkData != ((OMX_MARKTYPE *)pElement)->pMarkData)
468 if(queue->CounterElements[queue->nTail] != 1)
470 if(queue->nElements >= VIDDEC_MAX_QUEUE_SIZE)
475 queue->CounterElements[queue->nTail]--;
476 queue->nTail--;
477 if(queue->nTail >= VIDDEC_MAX_QUEUE_SIZE)
479 queue->nTail = VIDDEC_MAX_QUEUE_SIZE-1;
481 queue->CounterElements[queue->nTail] = 1;
482 queue->nElements++;
484 pLocal[queue->nTail] = *(OMX_MARKTYPE *)pElement;
493 if (pthread_mutex_unlock (&(queue->mMutex)) != 0) {
500 OMX_ERRORTYPE VIDDEC_Queue_Free(VIDDEC_QUEUE_TYPE *queue)
504 queue->nHead = 0;
505 queue->nTail = 0;
506 queue->nElements = 0;
508 if(queue->Elements)
510 free(queue->Elements);
512 queue->Elements = NULL;
514 if (pthread_mutex_destroy (&(queue->mMutex)) != 0) {