Lines Matching defs:decoder

92     RKMPPDecoder *decoder = (RKMPPDecoder *)rk_context->decoder_ref->data;
108 ret = decoder->mpi->decode_put_packet(decoder->ctx, packet);
111 av_log(avctx, AV_LOG_DEBUG, "Buffer full writing %d bytes to decoder\n", size);
117 av_log(avctx, AV_LOG_DEBUG, "Wrote %d bytes to decoder\n", size);
133 RKMPPDecoder *decoder = (RKMPPDecoder *)data;
135 if (decoder->mpi) {
136 decoder->mpi->reset(decoder->ctx);
137 mpp_destroy(decoder->ctx);
138 decoder->ctx = NULL;
141 if (decoder->frame_group) {
142 mpp_buffer_group_put(decoder->frame_group);
143 decoder->frame_group = NULL;
146 av_buffer_unref(&decoder->frames_ref);
147 av_buffer_unref(&decoder->device_ref);
149 av_free(decoder);
155 RKMPPDecoder *decoder = NULL;
163 // create a decoder and a ref to it
164 decoder = av_mallocz(sizeof(RKMPPDecoder));
165 if (!decoder) {
170 rk_context->decoder_ref = av_buffer_create((uint8_t *)decoder, sizeof(*decoder), rkmpp_release_decoder,
173 av_free(decoder);
178 av_log(avctx, AV_LOG_DEBUG, "Initializing RKMPP decoder.\n");
195 ret = mpp_create(&decoder->ctx, &decoder->mpi);
203 ret = mpp_init(decoder->ctx, MPP_CTX_DEC, codectype);
212 ret = decoder->mpi->control(decoder->ctx, MPP_SET_OUTPUT_BLOCK, &paramS32);
220 ret = decoder->mpi->control(decoder->ctx, MPP_SET_OUTPUT_BLOCK_TIMEOUT, &paramS64);
227 ret = mpp_buffer_group_get_internal(&decoder->frame_group, MPP_BUFFER_TYPE_ION);
234 ret = decoder->mpi->control(decoder->ctx, MPP_DEC_SET_EXT_BUF_GROUP, decoder->frame_group);
241 ret = mpp_buffer_group_limit_config(decoder->frame_group, 0, FRAMEGROUP_MAX_FRAMES);
248 decoder->first_packet = 1;
250 av_log(avctx, AV_LOG_DEBUG, "RKMPP decoder initialized successfully.\n");
252 decoder->device_ref = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_DRM);
253 if (!decoder->device_ref) {
257 ret = av_hwdevice_ctx_init(decoder->device_ref);
264 av_log(avctx, AV_LOG_ERROR, "Failed to initialize RKMPP decoder.\n");
272 RKMPPDecoder *decoder = (RKMPPDecoder *)rk_context->decoder_ref->data;
278 decoder->eos_reached = 1;
281 av_log(avctx, AV_LOG_ERROR, "Failed to send EOS to decoder (code = %d)\n", ret);
286 if (decoder->first_packet) {
292 av_log(avctx, AV_LOG_ERROR, "Failed to write extradata to decoder (code = %d)\n", ret);
296 decoder->first_packet = 0;
302 av_log(avctx, AV_LOG_ERROR, "Failed to write data to decoder (code = %d)\n", ret);
323 RKMPPDecoder *decoder = (RKMPPDecoder *)rk_context->decoder_ref->data;
335 ret = decoder->mpi->decode_get_frame(decoder->ctx, &mppframe);
353 decoder->mpi->control(decoder->ctx, MPP_DEC_SET_INFO_CHANGE_READY, NULL);
355 av_buffer_unref(&decoder->frames_ref);
357 decoder->frames_ref = av_hwframe_ctx_alloc(decoder->device_ref);
358 if (!decoder->frames_ref) {
366 hwframes = (AVHWFramesContext*)decoder->frames_ref->data;
371 ret = av_hwframe_ctx_init(decoder->frames_ref);
375 // here decoder is fully initialized, we need to feed it again with data
380 decoder->eos_reached = 1;
440 // for releasing properly MPP frames and decoder
447 // MPP decoder needs to be closed only when all frames have been released.
461 frame->hw_frames_ctx = av_buffer_ref(decoder->frames_ref);
472 } else if (decoder->eos_reached) {
499 RKMPPDecoder *decoder = (RKMPPDecoder *)rk_context->decoder_ref->data;
504 if (!decoder->eos_reached) {
505 // we get the available slots in decoder
506 ret = decoder->mpi->control(decoder->ctx, MPP_DEC_GET_STREAM_COUNT, &usedslots);
508 av_log(avctx, AV_LOG_ERROR, "Failed to get decoder used slots (code = %d).\n", ret);
523 av_log(avctx, AV_LOG_ERROR, "Failed to send packet to decoder (code = %d)\n", ret);
528 // make sure we keep decoder full
539 RKMPPDecoder *decoder = (RKMPPDecoder *)rk_context->decoder_ref->data;
544 ret = decoder->mpi->reset(decoder->ctx);
546 decoder->first_packet = 1;