Lines Matching refs:p_dec
353 static AvsdFrame_t *get_one_save(AvsdCtx_t *p_dec, HalDecTask *task) in get_one_save() argument
358 for (i = 0; i < MPP_ARRAY_ELEMS(p_dec->mem->save); i++) { in get_one_save()
359 if (!p_dec->mem->save[i].valid) { in get_one_save()
360 p_dec->mem->save[i].valid = 1; in get_one_save()
361 p_cur = &p_dec->mem->save[i]; in get_one_save()
366 mpp_err("mem_save dpb %d slots has not get\n", MPP_ARRAY_ELEMS(p_dec->mem->save)); in get_one_save()
388 MPP_RET set_frame_output(AvsdCtx_t *p_dec, AvsdFrame_t *p) in set_frame_output() argument
391 mpp_buf_slot_set_flag(p_dec->frame_slots, p->slot_idx, SLOT_QUEUE_USE); in set_frame_output()
392 mpp_buf_slot_enqueue(p_dec->frame_slots, p->slot_idx, QUEUE_DISPLAY); in set_frame_output()
405 MPP_RET avsd_reset_parameters(AvsdCtx_t *p_dec) in avsd_reset_parameters() argument
409 set_frame_output(p_dec, p_dec->dpb[1]); in avsd_reset_parameters()
410 set_frame_output(p_dec, p_dec->dpb[0]); in avsd_reset_parameters()
411 set_frame_output(p_dec, p_dec->cur); in avsd_reset_parameters()
412 set_frame_unref(p_dec, p_dec->dpb[1]); in avsd_reset_parameters()
413 set_frame_unref(p_dec, p_dec->dpb[0]); in avsd_reset_parameters()
414 set_frame_unref(p_dec, p_dec->cur); in avsd_reset_parameters()
416 p_dec->cur = NULL; in avsd_reset_parameters()
417 p_dec->dpb[0] = NULL; in avsd_reset_parameters()
418 p_dec->dpb[1] = NULL; in avsd_reset_parameters()
420 p_dec->vsh.version_checked = 0; in avsd_reset_parameters()
422 for (i = 0; i < MPP_ARRAY_ELEMS(p_dec->mem->save); i++) { in avsd_reset_parameters()
423 AvsdFrame_t *frm = &p_dec->mem->save[i]; in avsd_reset_parameters()
439 MPP_RET avsd_set_dpb(AvsdCtx_t *p_dec, HalDecTask *task) in avsd_set_dpb() argument
443 AvsdFrame_t *p_cur = p_dec->cur; in avsd_set_dpb()
446 mpp_buf_slot_get_unused(p_dec->frame_slots, &slot_idx); in avsd_set_dpb()
453 p_cur->pic_type = p_dec->ph.picture_coding_type; in avsd_set_dpb()
454 p_cur->width = p_dec->vsh.horizontal_size; in avsd_set_dpb()
455 p_cur->height = p_dec->vsh.vertical_size; in avsd_set_dpb()
456 p_cur->hor_stride = MPP_ALIGN(p_dec->vsh.horizontal_size, 16); in avsd_set_dpb()
457 p_cur->ver_stride = MPP_ALIGN(p_dec->vsh.vertical_size, 16); in avsd_set_dpb()
469 if (p_dec->ph.picture_structure) { //!< data combine 2 field in avsd_set_dpb()
471 if (p_dec->ph.top_field_first) { in avsd_set_dpb()
479 if (p_dec->init.cfg->base.enable_vproc & MPP_VPROC_MODE_DETECTION) { in avsd_set_dpb()
484 mpp_buf_slot_set_prop(p_dec->frame_slots, slot_idx, SLOT_FRAME, mframe); in avsd_set_dpb()
487 mpp_buf_slot_set_flag(p_dec->frame_slots, p_cur->slot_idx, SLOT_CODEC_USE); in avsd_set_dpb()
488 mpp_buf_slot_set_flag(p_dec->frame_slots, p_cur->slot_idx, SLOT_HAL_OUTPUT); in avsd_set_dpb()
491 task->output = p_dec->cur->slot_idx; in avsd_set_dpb()
493 if (p_dec->dpb[0] && p_dec->dpb[0]->slot_idx >= 0 && in avsd_set_dpb()
494 (p_dec->dpb[0]->slot_idx != p_dec->cur->slot_idx)) { in avsd_set_dpb()
495 mpp_buf_slot_set_flag(p_dec->frame_slots, p_dec->dpb[0]->slot_idx, SLOT_HAL_INPUT); in avsd_set_dpb()
496 if (p_dec->ph.picture_coding_type == B_PICTURE) { in avsd_set_dpb()
497 task->refer[1] = p_dec->dpb[0]->slot_idx; in avsd_set_dpb()
499 task->refer[0] = p_dec->dpb[0]->slot_idx; in avsd_set_dpb()
502 if (p_dec->dpb[1] && p_dec->dpb[1]->slot_idx >= 0 && in avsd_set_dpb()
503 (p_dec->dpb[1]->slot_idx != p_dec->cur->slot_idx)) { in avsd_set_dpb()
504 mpp_buf_slot_set_flag(p_dec->frame_slots, p_dec->dpb[1]->slot_idx, SLOT_HAL_INPUT); in avsd_set_dpb()
505 if (p_dec->ph.picture_coding_type == B_PICTURE) { in avsd_set_dpb()
506 task->refer[0] = p_dec->dpb[1]->slot_idx; in avsd_set_dpb()
508 task->refer[1] = p_dec->dpb[1]->slot_idx; in avsd_set_dpb()
513 if (p_dec->ph.picture_coding_type == I_PICTURE) { in avsd_set_dpb()
516 } else if (p_dec->ph.picture_coding_type == P_PICTURE) { in avsd_set_dpb()
519 mpp_buf_slot_get_prop(p_dec->frame_slots, task->refer[0], SLOT_FRAME_PTR, &mframe); in avsd_set_dpb()
523 } else if (p_dec->ph.picture_coding_type == B_PICTURE) { in avsd_set_dpb()
526 mpp_buf_slot_get_prop(p_dec->frame_slots, task->refer[0], SLOT_FRAME_PTR, &mframe); in avsd_set_dpb()
531 mpp_buf_slot_get_prop(p_dec->frame_slots, task->refer[1], SLOT_FRAME_PTR, &mframe); in avsd_set_dpb()
562 MPP_RET avsd_update_dpb(AvsdCtx_t *p_dec) in avsd_update_dpb() argument
564 if (p_dec->ph.picture_coding_type != B_PICTURE) { in avsd_update_dpb()
565 set_frame_output(p_dec, p_dec->dpb[0]); in avsd_update_dpb()
566 set_frame_unref(p_dec, p_dec->dpb[1]); in avsd_update_dpb()
567 p_dec->dpb[1] = p_dec->dpb[0]; in avsd_update_dpb()
568 p_dec->dpb[0] = p_dec->cur; in avsd_update_dpb()
569 p_dec->cur = NULL; in avsd_update_dpb()
571 set_frame_output(p_dec, p_dec->cur); in avsd_update_dpb()
572 set_frame_unref(p_dec, p_dec->cur); in avsd_update_dpb()
573 p_dec->cur = NULL; in avsd_update_dpb()
585 MPP_RET avsd_fill_parameters(AvsdCtx_t *p_dec, AvsdSyntax_t *syn) in avsd_fill_parameters() argument
591 pp->profileId = p_dec->vsh.profile_id; in avsd_fill_parameters()
592 pp->levelId = p_dec->vsh.level_id; in avsd_fill_parameters()
593 pp->progressiveSequence = p_dec->vsh.progressive_sequence; in avsd_fill_parameters()
594 pp->horizontalSize = p_dec->vsh.horizontal_size; in avsd_fill_parameters()
595 pp->verticalSize = p_dec->vsh.vertical_size; in avsd_fill_parameters()
596 pp->chromaFormat = p_dec->vsh.chroma_format; in avsd_fill_parameters()
597 pp->aspectRatio = p_dec->vsh.aspect_ratio; in avsd_fill_parameters()
598 pp->frameRateCode = p_dec->vsh.frame_rate_code; in avsd_fill_parameters()
599 pp->bitRateValue = p_dec->vsh.bit_rate; in avsd_fill_parameters()
600 pp->lowDelay = p_dec->vsh.low_delay; in avsd_fill_parameters()
601 pp->bbvBufferSize = p_dec->vsh.bbv_buffer_size; in avsd_fill_parameters()
604 pp->videoFormat = p_dec->ext.video_format; in avsd_fill_parameters()
605 pp->sampleRange = p_dec->ext.sample_range; in avsd_fill_parameters()
606 pp->colorDescription = p_dec->ext.color_description; in avsd_fill_parameters()
607 pp->colorPrimaries = p_dec->ext.color_primaries; in avsd_fill_parameters()
608 pp->transferCharacteristics = p_dec->ext.transfer_characteristics; in avsd_fill_parameters()
609 pp->matrixCoefficients = p_dec->ext.matrix_coefficients; in avsd_fill_parameters()
610 pp->displayHorizontalSize = p_dec->ext.display_horizontalSize; in avsd_fill_parameters()
611 pp->displayVerticalSize = p_dec->ext.display_verticalSize; in avsd_fill_parameters()
614 pp->picCodingType = p_dec->ph.picture_coding_type; in avsd_fill_parameters()
615 pp->bbvDelay = p_dec->ph.bbv_delay; in avsd_fill_parameters()
616 pp->bbvDelayExtension = p_dec->ph.bbv_delay_extension; in avsd_fill_parameters()
617 pp->timeCodeFlag = p_dec->ph.time_code_flag; in avsd_fill_parameters()
618 pp->timeCode = p_dec->ph.time_code; in avsd_fill_parameters()
620 pp->pictureDistance = p_dec->ph.picture_distance; in avsd_fill_parameters()
621 pp->progressiveFrame = p_dec->ph.progressive_frame; in avsd_fill_parameters()
622 pp->pictureStructure = p_dec->ph.picture_structure; in avsd_fill_parameters()
623 pp->advancedPredModeDisable = p_dec->ph.advanced_pred_mode_disable; in avsd_fill_parameters()
624 pp->topFieldFirst = p_dec->ph.top_field_first; in avsd_fill_parameters()
625 pp->repeatFirstField = p_dec->ph.repeat_first_field; in avsd_fill_parameters()
626 pp->fixedPictureQp = p_dec->ph.fixed_picture_qp; in avsd_fill_parameters()
627 pp->pictureQp = p_dec->ph.picture_qp; in avsd_fill_parameters()
628 pp->pictureReferenceFlag = p_dec->ph.picture_reference_flag; in avsd_fill_parameters()
629 pp->skipModeFlag = p_dec->ph.skip_mode_flag; in avsd_fill_parameters()
630 pp->loopFilterDisable = p_dec->ph.loop_filter_disable; in avsd_fill_parameters()
631 pp->alphaOffset = p_dec->ph.alpha_c_offset; in avsd_fill_parameters()
632 pp->betaOffset = p_dec->ph.beta_offset; in avsd_fill_parameters()
635 pp->weightingQuantFlag = p_dec->ph.weighting_quant_flag; in avsd_fill_parameters()
636 pp->chromaQuantParamDisable = p_dec->ph.chroma_quant_param_disable; in avsd_fill_parameters()
637 pp->chromaQuantParamDeltaCb = p_dec->ph.chroma_quant_param_delta_cb; in avsd_fill_parameters()
638 pp->chromaQuantParamDeltaCr = p_dec->ph.chroma_quant_param_delta_cr; in avsd_fill_parameters()
639 pp->weightingQuantParamIndex = p_dec->ph.weighting_quant_param_index; in avsd_fill_parameters()
640 pp->weightingQuantModel = p_dec->ph.weighting_quant_model; in avsd_fill_parameters()
642 pp->weightingQuantParamDelta1[i] = p_dec->ph.weighting_quant_param_delta1[i]; in avsd_fill_parameters()
643 pp->weightingQuantParamDelta2[i] = p_dec->ph.weighting_quant_param_delta2[i]; in avsd_fill_parameters()
644 pp->weightingQuantParam[i] = p_dec->ph.weighting_quant_param[i]; in avsd_fill_parameters()
647 pp->aecEnable = p_dec->ph.aec_enable; in avsd_fill_parameters()
650 pp->noForwardReferenceFlag = p_dec->ph.no_forward_reference_flag; in avsd_fill_parameters()
651 pp->pbFieldEnhancedFlag = p_dec->ph.pb_field_enhanced_flag; in avsd_fill_parameters()
654 syn->bitstream_size = p_dec->cur->stream_len; in avsd_fill_parameters()
655 syn->bitstream_offset = p_dec->cur->stream_offset; in avsd_fill_parameters()
740 MPP_RET avsd_parse_stream(AvsdCtx_t *p_dec, HalDecTask *task) in avsd_parse_stream() argument
750 mpp_set_bitread_ctx(p_dec->bx, data, length); in avsd_parse_stream()
751 AVSD_DBG(AVSD_DBG_SYNTAX, "bytes_left_=%d\n", p_dec->bx->bytes_left_); in avsd_parse_stream()
752 while (p_dec->bx->bytes_left_ && !got_slice) { in avsd_parse_stream()
754 mpp_align_get_bits(p_dec->bx); in avsd_parse_stream()
755 mpp_read_bits(p_dec->bx, 8, &tmp); in avsd_parse_stream()
762 if (!p_dec->got_vsh && in avsd_parse_stream()
770 ret = get_sequence_header(p_dec->bx, &p_dec->vsh); in avsd_parse_stream()
772 p_dec->got_vsh = 1; in avsd_parse_stream()
774 AVSD_DBG(AVSD_DBG_WARNNING, "got vsh %d\n", p_dec->got_vsh); in avsd_parse_stream()
781 p_dec->vec_flag = 0; in avsd_parse_stream()
785 if (!p_dec->got_keyframe) { in avsd_parse_stream()
786 avsd_reset_parameters(p_dec); in avsd_parse_stream()
787 p_dec->got_keyframe = 1; in avsd_parse_stream()
789 ret = get_i_picture_header(p_dec->bx, &p_dec->vsh, &p_dec->ph); in avsd_parse_stream()
791 p_dec->cur = get_one_save(p_dec, task); in avsd_parse_stream()
792 p_dec->got_ph = 1; in avsd_parse_stream()
794 p_dec->cur->pic_type = pic_type = I_PICTURE; in avsd_parse_stream()
795 p_dec->vec_flag++; in avsd_parse_stream()
798 ret = get_extension_header(p_dec->bx, &p_dec->ext); in avsd_parse_stream()
802 if (!p_dec->got_keyframe) { in avsd_parse_stream()
803 avsd_reset_parameters(p_dec); in avsd_parse_stream()
806 ret = get_pb_picture_header(p_dec->bx, &p_dec->vsh, &p_dec->ph); in avsd_parse_stream()
808 p_dec->cur = get_one_save(p_dec, task); in avsd_parse_stream()
809 p_dec->got_ph = 1; in avsd_parse_stream()
811 p_dec->cur->pic_type = pic_type = p_dec->ph.picture_coding_type; in avsd_parse_stream()
812 p_dec->vec_flag += (p_dec->vec_flag == 1 && pic_type == P_PICTURE); in avsd_parse_stream()
815 if (p_dec->cur in avsd_parse_stream()
819 p_dec->cur->stream_len = length; in avsd_parse_stream()
820 p_dec->cur->stream_offset = p_dec->bx->used_bits / 8 - 4; in avsd_parse_stream()
821 task->valid = p_dec->got_vsh && p_dec->got_ph; in avsd_parse_stream()
823 p_dec->cur->stream_offset, p_dec->got_vsh, p_dec->got_ph, task->valid); in avsd_parse_stream()
826 if (p_dec->disable_error) in avsd_parse_stream()
829 if ((pic_type == P_PICTURE && !p_dec->dpb[0]) || in avsd_parse_stream()
830 (pic_type == B_PICTURE && !p_dec->dpb[0]) || in avsd_parse_stream()
831 (pic_type == B_PICTURE && !p_dec->dpb[1] && !p_dec->vsh.low_delay) || in avsd_parse_stream()
832 (pic_type == P_PICTURE && p_dec->vec_flag < 1) || in avsd_parse_stream()
833 (pic_type == B_PICTURE && p_dec->vec_flag < 2)) { in avsd_parse_stream()
835 if (!p_dec->disable_error) in avsd_parse_stream()
848 reset_one_save(p_dec->cur); in avsd_parse_stream()