Lines Matching defs:ctx
153 MMALDecodeContext *ctx = avctx->priv_data;
154 MMAL_COMPONENT_T *decoder = ctx->decoder;
165 while ((buffer = mmal_queue_get(ctx->queue_decoded_frames)))
168 while (ctx->waiting_buffers) {
169 FFBufferEntry *buffer = ctx->waiting_buffers;
171 ctx->waiting_buffers = buffer->next;
174 atomic_fetch_add(&ctx->packets_buffered, -1);
179 ctx->waiting_buffers_tail = NULL;
181 av_assert0(atomic_load(&ctx->packets_buffered) == 0);
183 ctx->frames_output = ctx->eos_received = ctx->eos_sent = ctx->packets_sent = ctx->extradata_sent = 0;
188 MMALDecodeContext *ctx = avctx->priv_data;
190 if (ctx->decoder)
193 mmal_component_destroy(ctx->decoder);
194 ctx->decoder = NULL;
195 mmal_queue_destroy(ctx->queue_decoded_frames);
196 mmal_pool_destroy(ctx->pool_in);
197 ffmmal_poolref_unref(ctx->pool_out);
207 MMALDecodeContext *ctx = avctx->priv_data;
213 atomic_fetch_add(&ctx->packets_buffered, -1);
222 MMALDecodeContext *ctx = avctx->priv_data;
224 mmal_queue_put(ctx->queue_decoded_frames, buffer);
246 MMALDecodeContext *ctx = avctx->priv_data;
250 if (!ctx->pool_out)
253 while ((buffer = mmal_queue_get(ctx->pool_out->pool->queue))) {
254 if ((status = mmal_port_send_buffer(ctx->decoder->output[0], buffer))) {
279 MMALDecodeContext *ctx = avctx->priv_data;
282 MMAL_COMPONENT_T *decoder = ctx->decoder;
286 ffmmal_poolref_unref(ctx->pool_out);
287 if (!(ctx->pool_out = av_mallocz(sizeof(*ctx->pool_out)))) {
291 atomic_init(&ctx->pool_out->refcount, 1);
296 if ((status = mmal_port_parameter_set_uint32(decoder->output[0], MMAL_PARAMETER_EXTRA_BUFFERS, ctx->extra_buffers)))
317 ctx->interlaced_frame = (interlace_type.eMode != MMAL_InterlaceProgressive);
318 ctx->top_field_first = (interlace_type.eMode == MMAL_InterlaceFieldsInterleavedUpperFirst);
339 FFMAX(decoder->output[0]->buffer_num_min, decoder->output[0]->buffer_num_recommended) + ctx->extra_buffers;
340 ctx->pool_out->pool = mmal_pool_create(decoder->output[0]->buffer_num,
342 if (!ctx->pool_out->pool) {
355 MMALDecodeContext *ctx = avctx->priv_data;
361 ctx->pkt = avctx->internal->in_pkt;
375 if ((status = mmal_component_create(MMAL_COMPONENT_DEFAULT_VIDEO_DECODER, &ctx->decoder)))
378 decoder = ctx->decoder;
412 -1 - ctx->extra_decoder_buffers)) {
424 ctx->pool_in = mmal_pool_create(decoder->input[0]->buffer_num, 0);
425 if (!ctx->pool_in) {
433 ctx->queue_decoded_frames = mmal_queue_create();
434 if (!ctx->queue_decoded_frames)
460 MMALDecodeContext *ctx = avctx->priv_data;
461 MMAL_COMPONENT_T *decoder = ctx->decoder;
488 MMALDecodeContext *ctx = avctx->priv_data;
503 ctx->packets_sent++;
505 if (ctx->eos_sent)
507 if (!ctx->packets_sent) {
509 ctx->eos_sent = 1;
510 ctx->eos_received = 1;
525 buffer->length = FFMIN(size, ctx->decoder->input[0]->buffer_size);
541 atomic_fetch_add(&ctx->packets_buffered, 1);
546 ctx->eos_sent = 1;
559 if (!ctx->waiting_buffers)
560 ctx->waiting_buffers = buffer;
561 if (ctx->waiting_buffers_tail)
562 ctx->waiting_buffers_tail->next = buffer;
563 ctx->waiting_buffers_tail = buffer;
574 MMALDecodeContext *ctx = avctx->priv_data;
576 while (ctx->waiting_buffers) {
581 mbuffer = mmal_queue_get(ctx->pool_in->queue);
585 buffer = ctx->waiting_buffers;
595 mbuffer->alloc_size = ctx->decoder->input[0]->buffer_size;
598 ctx->waiting_buffers = buffer->next;
599 if (ctx->waiting_buffers_tail == buffer)
600 ctx->waiting_buffers_tail = NULL;
602 if ((status = mmal_port_send_buffer(ctx->decoder->input[0], mbuffer))) {
606 atomic_fetch_add(&ctx->packets_buffered, -1);
622 MMALDecodeContext *ctx = avctx->priv_data;
625 frame->interlaced_frame = ctx->interlaced_frame;
626 frame->top_field_first = ctx->top_field_first;
629 if (!ctx->pool_out)
635 if ((ret = ffmmal_set_ref(frame, ctx->pool_out, buffer)) < 0)
669 MMALDecodeContext *ctx = avctx->priv_data;
674 if (ctx->eos_received)
689 if (atomic_load(&ctx->packets_buffered) > MAX_DELAYED_FRAMES ||
690 (ctx->packets_sent && ctx->eos_sent)) {
695 buffer = mmal_queue_timedwait(ctx->queue_decoded_frames, 100);
702 buffer = mmal_queue_get(ctx->queue_decoded_frames);
707 ctx->eos_received |= !!(buffer->flags & MMAL_BUFFER_HEADER_FLAG_EOS);
708 if (ctx->eos_received)
712 MMAL_COMPONENT_T *decoder = ctx->decoder;
721 while ((stale_buffer = mmal_queue_get(ctx->queue_decoded_frames)))
750 ctx->frames_output++;
769 MMALDecodeContext *ctx = avctx->priv_data;
770 AVPacket *const avpkt = ctx->pkt;
774 if (avctx->extradata_size && !ctx->extradata_sent) {
777 ctx->extradata_sent = 1;