Browse Source

vda: remove async decoder leftovers

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
tags/n2.0
Luca Barbato 12 years ago
parent
commit
202c2acc40
1 changed files with 3 additions and 44 deletions
  1. +3
    -44
      libavcodec/vda_h264.c

+ 3
- 44
libavcodec/vda_h264.c View File

@@ -43,42 +43,7 @@ static void vda_decoder_callback(void *vda_hw_ctx,
if (vda_ctx->cv_pix_fmt_type != CVPixelBufferGetPixelFormatType(image_buffer))
return;

if (vda_ctx->use_sync_decoding) {
vda_ctx->cv_buffer = CVPixelBufferRetain(image_buffer);
} else {
vda_frame *new_frame;
vda_frame *queue_walker;

if (!(new_frame = av_mallocz(sizeof(*new_frame))))
return;
new_frame->next_frame = NULL;
new_frame->cv_buffer = CVPixelBufferRetain(image_buffer);
new_frame->pts = vda_pts_from_dictionary(user_info);

pthread_mutex_lock(&vda_ctx->queue_mutex);

queue_walker = vda_ctx->queue;

if (!queue_walker || new_frame->pts < queue_walker->pts) {
/* we have an empty queue, or this frame earlier than the current queue head */
new_frame->next_frame = queue_walker;
vda_ctx->queue = new_frame;
} else {
/* walk the queue and insert this frame where it belongs in display order */
vda_frame *next_frame;
while (1) {
next_frame = queue_walker->next_frame;
if (!next_frame || new_frame->pts < next_frame->pts) {
new_frame->next_frame = next_frame;
queue_walker->next_frame = new_frame;
break;
}
queue_walker = next_frame;
}
}

pthread_mutex_unlock(&vda_ctx->queue_mutex);
}
vda_ctx->cv_buffer = CVPixelBufferRetain(image_buffer);
}

static int vda_sync_decode(struct vda_context *vda_ctx)
@@ -152,14 +117,8 @@ static int vda_h264_end_frame(AVCodecContext *avctx)
if (!vda_ctx->decoder || !vda_ctx->priv_bitstream)
return -1;

if (vda_ctx->use_sync_decoding) {
status = vda_sync_decode(vda_ctx);
frame->data[3] = (void*)vda_ctx->cv_buffer;
} else {
status = vda_decoder_decode(vda_ctx, vda_ctx->priv_bitstream,
vda_ctx->priv_bitstream_size,
frame->reordered_opaque);
}
status = vda_sync_decode(vda_ctx);
frame->data[3] = (void*)vda_ctx->cv_buffer;

if (status)
av_log(avctx, AV_LOG_ERROR, "Failed to decode frame (%d)\n", status);


Loading…
Cancel
Save