Lines Matching refs:p

217     VP8DParserContext_t *p = (VP8DParserContext_t *)c->parse_ctx;  in vp8d_parser_init()  local
221 if (p == NULL) { in vp8d_parser_init()
222 p = (VP8DParserContext_t*)mpp_calloc(VP8DParserContext_t, 1); in vp8d_parser_init()
223 if (NULL == p) { in vp8d_parser_init()
228 c->parse_ctx = p; in vp8d_parser_init()
230 p->packet_slots = parser_cfg->packet_slots; in vp8d_parser_init()
231 p->frame_slots = parser_cfg->frame_slots; in vp8d_parser_init()
233 mpp_buf_slot_setup(p->frame_slots, 15); in vp8d_parser_init()
235 p->dxva_ctx = mpp_calloc(DXVA_PicParams_VP8, 1); in vp8d_parser_init()
237 if (NULL == p->dxva_ctx) { in vp8d_parser_init()
242 p->decMode = VP8HWD_VP8; in vp8d_parser_init()
243 p->bitstream_sw_buf = mpp_malloc(RK_U8, VP8D_BUF_SIZE_BITMEM); in vp8d_parser_init()
244 mpp_packet_init(&p->input_packet, p->bitstream_sw_buf, in vp8d_parser_init()
246 p->max_stream_size = VP8D_BUF_SIZE_BITMEM; in vp8d_parser_init()
252 static void vp8d_unref_frame(VP8DParserContext_t *p, VP8Frame *frame) in vp8d_unref_frame() argument
268 mpp_buf_slot_get_prop(p->frame_slots, frame->slot_index, SLOT_BUFFER, &framebuf); in vp8d_unref_frame()
272 mpp_buf_slot_clr_flag(p->frame_slots, frame->slot_index, SLOT_CODEC_USE); in vp8d_unref_frame()
284 static void vp8d_unref_allframe(VP8DParserContext_t *p) in vp8d_unref_allframe() argument
288 if (NULL != p->frame_out) { in vp8d_unref_allframe()
289 vp8d_unref_frame(p, p->frame_out); in vp8d_unref_allframe()
290 p->frame_out = NULL; in vp8d_unref_allframe()
293 if (NULL != p->frame_ref) { in vp8d_unref_allframe()
294 vp8d_unref_frame(p, p->frame_ref); in vp8d_unref_allframe()
295 p->frame_ref = NULL; in vp8d_unref_allframe()
298 if (NULL != p->frame_golden) { in vp8d_unref_allframe()
299 vp8d_unref_frame(p, p->frame_golden); in vp8d_unref_allframe()
300 p->frame_golden = NULL; in vp8d_unref_allframe()
303 if (NULL != p->frame_alternate) { in vp8d_unref_allframe()
304 vp8d_unref_frame(p, p->frame_alternate); in vp8d_unref_allframe()
305 p->frame_alternate = NULL; in vp8d_unref_allframe()
316 VP8DParserContext_t *p = (VP8DParserContext_t *)c->parse_ctx; in vp8d_parser_deinit() local
320 if (NULL != p->bitstream_sw_buf) { in vp8d_parser_deinit()
321 mpp_free(p->bitstream_sw_buf); in vp8d_parser_deinit()
322 p->bitstream_sw_buf = NULL; in vp8d_parser_deinit()
325 if (NULL != p->dxva_ctx) { in vp8d_parser_deinit()
326 mpp_free(p->dxva_ctx); in vp8d_parser_deinit()
327 p->dxva_ctx = NULL; in vp8d_parser_deinit()
330 vp8d_unref_allframe(p); in vp8d_parser_deinit()
332 if (p->input_packet) { in vp8d_parser_deinit()
333 mpp_packet_deinit(&p->input_packet); in vp8d_parser_deinit()
334 p->input_packet = NULL; in vp8d_parser_deinit()
337 if (p->stream_fp) in vp8d_parser_deinit()
338 fclose(p->stream_fp); in vp8d_parser_deinit()
340 if ( NULL != p) { in vp8d_parser_deinit()
341 mpp_free(p); in vp8d_parser_deinit()
356 VP8DParserContext_t *p = (VP8DParserContext_t *)c->parse_ctx; in vp8d_parser_reset() local
359 vp8d_unref_allframe(p); in vp8d_parser_reset()
360 p->needKeyFrame = 0; in vp8d_parser_reset()
361 p->eos = 0; in vp8d_parser_reset()
433 VP8DParserContext_t *p = (VP8DParserContext_t *)c->parse_ctx; in vp8d_parser_prepare() local
434 MppPacket input_packet = p->input_packet; in vp8d_parser_prepare()
441 p->pts = mpp_packet_get_pts(pkt); in vp8d_parser_prepare()
442 p->dts = mpp_packet_get_dts(pkt); in vp8d_parser_prepare()
445 p->eos = mpp_packet_get_eos(pkt); in vp8d_parser_prepare()
447 if (len_in > p->max_stream_size) { in vp8d_parser_prepare()
448 mpp_free(p->bitstream_sw_buf); in vp8d_parser_prepare()
449 p->bitstream_sw_buf = NULL; in vp8d_parser_prepare()
450 p->bitstream_sw_buf = mpp_malloc(RK_U8, (len_in + 1024)); in vp8d_parser_prepare()
451 if (NULL == p->bitstream_sw_buf) { in vp8d_parser_prepare()
455 p->max_stream_size = len_in + 1024; in vp8d_parser_prepare()
460 p->bitstream_sw_buf, in vp8d_parser_prepare()
466 if (out_size == 0 && p->eos) { in vp8d_parser_prepare()
467 task->flags.eos = p->eos; in vp8d_parser_prepare()
475 mpp_packet_set_data(input_packet, p->bitstream_sw_buf); in vp8d_parser_prepare()
476 mpp_packet_set_size(input_packet, p->max_stream_size); in vp8d_parser_prepare()
478 p->stream_size = out_size; in vp8d_parser_prepare()
487 vp8d_convert_to_syntx( VP8DParserContext_t *p, HalDecTask *in_task) in vp8d_convert_to_syntx() argument
492 DXVA_PicParams_VP8 *pic_param = p->dxva_ctx; in vp8d_convert_to_syntx()
495 tmp = (p->bitstr.pos) * 8 + (8 - p->bitstr.count); in vp8d_convert_to_syntx()
497 if (p->frameTagSize == 4) in vp8d_convert_to_syntx()
500 if (p->decMode == VP8HWD_VP8 && p->keyFrame) in vp8d_convert_to_syntx()
511 pic_param->frame_type = !p->keyFrame; in vp8d_convert_to_syntx()
512 pic_param->stVP8Segments.segmentation_enabled = p->segmentationEnabled; in vp8d_convert_to_syntx()
514 p->segmentationMapUpdate; in vp8d_convert_to_syntx()
515 pic_param->mode_ref_lf_delta_enabled = p->modeRefLfEnabled; in vp8d_convert_to_syntx()
516 pic_param->mb_no_coeff_skip = p->coeffSkipMode; in vp8d_convert_to_syntx()
517 pic_param->width = p->width; in vp8d_convert_to_syntx()
518 pic_param->height = p->height; in vp8d_convert_to_syntx()
519 pic_param->decMode = p->decMode; in vp8d_convert_to_syntx()
520 pic_param->filter_type = p->loopFilterType; in vp8d_convert_to_syntx()
521 pic_param->sharpness = p->loopFilterSharpness; in vp8d_convert_to_syntx()
522 pic_param->filter_level = p->loopFilterLevel; in vp8d_convert_to_syntx()
524 p->segmentFeatureMode; in vp8d_convert_to_syntx()
525 pic_param->version = p->vpVersion; in vp8d_convert_to_syntx()
526 pic_param->bool_value = ((p->bitstr.value >> 24) & (0xFFU)); in vp8d_convert_to_syntx()
527 pic_param->bool_range = (p->bitstr.range & (0xFFU)); in vp8d_convert_to_syntx()
528 pic_param->frameTagSize = p->frameTagSize; in vp8d_convert_to_syntx()
529 pic_param->streamEndPos = p->bitstr.streamEndPos; in vp8d_convert_to_syntx()
530 pic_param->log2_nbr_of_dct_partitions = p->nbrDctPartitions; in vp8d_convert_to_syntx()
531 pic_param->offsetToDctParts = p->offsetToDctParts; in vp8d_convert_to_syntx()
533 pic_param->y1ac_delta_q = p->qpYAc; in vp8d_convert_to_syntx()
534 pic_param->y1dc_delta_q = p->qpYDc; in vp8d_convert_to_syntx()
535 pic_param->y2ac_delta_q = p->qpY2Ac; in vp8d_convert_to_syntx()
536 pic_param->y2dc_delta_q = p->qpY2Dc; in vp8d_convert_to_syntx()
537 pic_param->uvac_delta_q = p->qpChAc; in vp8d_convert_to_syntx()
538 pic_param->uvdc_delta_q = p->qpChDc; in vp8d_convert_to_syntx()
539 pic_param->probe_skip_false = p->probMbSkipFalse; in vp8d_convert_to_syntx()
540 pic_param->prob_intra = p->probIntra; in vp8d_convert_to_syntx()
541 pic_param->prob_last = p->probRefLast; in vp8d_convert_to_syntx()
542 pic_param->prob_golden = p->probRefGolden; in vp8d_convert_to_syntx()
544 memcpy(pic_param->vp8_coef_update_probs, p->entropy.probCoeffs, in vp8d_convert_to_syntx()
546 memcpy(pic_param->vp8_mv_update_probs, p->entropy.probMvContext, in vp8d_convert_to_syntx()
550 pic_param->intra_chroma_prob[i] = p->entropy.probChromaPredMode[i]; in vp8d_convert_to_syntx()
551 pic_param->stVP8Segments.mb_segment_tree_probs[i] = p->probSegment[i]; in vp8d_convert_to_syntx()
554 pic_param->ref_frame_sign_bias_golden = p->refFrameSignBias[0]; in vp8d_convert_to_syntx()
555 pic_param->ref_frame_sign_bias_altref = p->refFrameSignBias[1]; in vp8d_convert_to_syntx()
559 pic_param->stVP8Segments.segment_feature_data[0][i] = p->segmentQp[i]; in vp8d_convert_to_syntx()
560 pic_param->ref_lf_deltas[i] = p->mbRefLfDelta[i]; in vp8d_convert_to_syntx()
561 pic_param->mode_lf_deltas[i] = p->mbModeLfDelta[i]; in vp8d_convert_to_syntx()
563 p->segmentLoopfilter[i]; in vp8d_convert_to_syntx()
564 pic_param->intra_16x16_prob[i] = p->entropy.probLuma16x16PredMode[i]; in vp8d_convert_to_syntx()
567 p->dxva_ctx->CurrPic.Index7Bits = p->frame_out->slot_index; in vp8d_convert_to_syntx()
570 if (p->frame_ref != NULL) { in vp8d_convert_to_syntx()
571 pic_param->lst_fb_idx.Index7Bits = p->frame_ref->slot_index; in vp8d_convert_to_syntx()
572 mpp_buf_slot_set_flag(p->frame_slots, p->frame_ref->slot_index, in vp8d_convert_to_syntx()
574 in_task->refer[0] = p->frame_ref->slot_index; in vp8d_convert_to_syntx()
579 if (p->frame_golden != NULL) { in vp8d_convert_to_syntx()
580 pic_param->gld_fb_idx.Index7Bits = p->frame_golden->slot_index; in vp8d_convert_to_syntx()
581 mpp_buf_slot_set_flag(p->frame_slots, p->frame_golden->slot_index, in vp8d_convert_to_syntx()
583 in_task->refer[1] = p->frame_golden->slot_index; in vp8d_convert_to_syntx()
588 if (p->frame_alternate != NULL) { in vp8d_convert_to_syntx()
589 pic_param->alt_fb_idx.Index7Bits = p->frame_alternate->slot_index; in vp8d_convert_to_syntx()
590 mpp_buf_slot_set_flag(p->frame_slots, p->frame_alternate->slot_index, in vp8d_convert_to_syntx()
592 in_task->refer[2] = p->frame_alternate->slot_index; in vp8d_convert_to_syntx()
597 memcpy(pic_param->dctPartitionOffsets, p->dctPartitionOffsets, in vp8d_convert_to_syntx()
598 sizeof(p->dctPartitionOffsets)); in vp8d_convert_to_syntx()
604 static MPP_RET vp8d_alloc_frame(VP8DParserContext_t *p) in vp8d_alloc_frame() argument
609 if (NULL == p->frame_out) { in vp8d_alloc_frame()
610 p->frame_out = mpp_calloc(VP8Frame, 1); in vp8d_alloc_frame()
611 if (NULL == p->frame_out) { in vp8d_alloc_frame()
616 if (NULL == p->frame_out->f) { in vp8d_alloc_frame()
617 mpp_frame_init(&p->frame_out->f); in vp8d_alloc_frame()
618 if (NULL == p->frame_out->f) { in vp8d_alloc_frame()
623 p->frame_out->slot_index = 0xff; in vp8d_alloc_frame()
624 p->frame_out->invisible = !p->showFrame; in vp8d_alloc_frame()
627 if (p->frame_out->slot_index == 0xff) { in vp8d_alloc_frame()
628 mpp_frame_set_width(p->frame_out->f, p->width); in vp8d_alloc_frame()
629 mpp_frame_set_height(p->frame_out->f, p->height); in vp8d_alloc_frame()
630 mpp_frame_set_hor_stride(p->frame_out->f, 0); in vp8d_alloc_frame()
631 mpp_frame_set_ver_stride(p->frame_out->f, 0); in vp8d_alloc_frame()
632 mpp_frame_set_errinfo(p->frame_out->f, 0); in vp8d_alloc_frame()
633 mpp_frame_set_pts(p->frame_out->f, p->pts); in vp8d_alloc_frame()
634 mpp_frame_set_dts(p->frame_out->f, p->dts); in vp8d_alloc_frame()
635 ret = mpp_buf_slot_get_unused(p->frame_slots, in vp8d_alloc_frame()
636 &p->frame_out->slot_index); in vp8d_alloc_frame()
641 mpp_buf_slot_set_prop(p->frame_slots, p->frame_out->slot_index, in vp8d_alloc_frame()
642 SLOT_FRAME, p->frame_out->f); in vp8d_alloc_frame()
643 mpp_buf_slot_set_flag(p->frame_slots, p->frame_out->slot_index, in vp8d_alloc_frame()
645 mpp_buf_slot_set_flag(p->frame_slots, p->frame_out->slot_index, in vp8d_alloc_frame()
647 mpp_frame_set_mode(p->frame_out->f, 0); in vp8d_alloc_frame()
649 if (p->showFrame) { in vp8d_alloc_frame()
650 mpp_buf_slot_set_flag(p->frame_slots, p->frame_out->slot_index, in vp8d_alloc_frame()
652 mpp_buf_slot_enqueue(p->frame_slots, p->frame_out->slot_index, in vp8d_alloc_frame()
655 p->frame_out->ref_count++; in vp8d_alloc_frame()
676 static MPP_RET vp8d_ref_update(VP8DParserContext_t *p) in vp8d_ref_update() argument
680 if (p->decMode != VP8HWD_WEBP) { in vp8d_ref_update()
681 if (p->copyBufferToAlternate == 1) { in vp8d_ref_update()
682 if (NULL != p->frame_alternate) { in vp8d_ref_update()
683 vp8d_unref_frame(p, p->frame_alternate); in vp8d_ref_update()
684 p->frame_alternate = NULL; in vp8d_ref_update()
686 p->frame_alternate = p->frame_ref; in vp8d_ref_update()
687 vp8d_ref_frame(p->frame_alternate); in vp8d_ref_update()
688 } else if (p->copyBufferToAlternate == 2) { in vp8d_ref_update()
689 if (NULL != p->frame_alternate) { in vp8d_ref_update()
690 vp8d_unref_frame(p, p->frame_alternate); in vp8d_ref_update()
691 p->frame_alternate = NULL; in vp8d_ref_update()
693 p->frame_alternate = p->frame_golden; in vp8d_ref_update()
694 vp8d_ref_frame(p->frame_alternate); in vp8d_ref_update()
697 if (p->copyBufferToGolden == 1) { in vp8d_ref_update()
698 if (NULL != p->frame_golden) { in vp8d_ref_update()
699 vp8d_unref_frame(p, p->frame_golden); in vp8d_ref_update()
700 p->frame_golden = NULL; in vp8d_ref_update()
702 p->frame_golden = p->frame_ref; in vp8d_ref_update()
703 vp8d_ref_frame(p->frame_golden); in vp8d_ref_update()
704 } else if (p->copyBufferToGolden == 2) { in vp8d_ref_update()
705 if (NULL != p->frame_golden) { in vp8d_ref_update()
706 vp8d_unref_frame(p, p->frame_golden); in vp8d_ref_update()
707 p->frame_golden = NULL; in vp8d_ref_update()
709 p->frame_golden = p->frame_alternate; in vp8d_ref_update()
710 vp8d_ref_frame(p->frame_golden); in vp8d_ref_update()
713 if (p->refreshGolden) { in vp8d_ref_update()
714 if (NULL != p->frame_golden) { in vp8d_ref_update()
715 vp8d_unref_frame(p, p->frame_golden); in vp8d_ref_update()
716 p->frame_golden = NULL; in vp8d_ref_update()
718 p->frame_golden = p->frame_out; in vp8d_ref_update()
719 vp8d_ref_frame(p->frame_golden); in vp8d_ref_update()
722 if (p->refreshAlternate) { in vp8d_ref_update()
723 if (NULL != p->frame_alternate) { in vp8d_ref_update()
724 vp8d_unref_frame(p, p->frame_alternate); in vp8d_ref_update()
725 p->frame_alternate = NULL; in vp8d_ref_update()
727 p->frame_alternate = p->frame_out; in vp8d_ref_update()
728 vp8d_ref_frame(p->frame_out); in vp8d_ref_update()
731 if (p->refreshLast) { in vp8d_ref_update()
732 if (NULL != p->frame_ref) { in vp8d_ref_update()
733 vp8d_unref_frame(p, p->frame_ref); in vp8d_ref_update()
734 p->frame_ref = NULL; in vp8d_ref_update()
736 p->frame_ref = p->frame_out; in vp8d_ref_update()
737 vp8d_ref_frame(p->frame_ref); in vp8d_ref_update()
739 vp8d_unref_frame(p, p->frame_out); in vp8d_ref_update()
740 p->frame_out = NULL; in vp8d_ref_update()
747 static void vp8hwdResetProbs(VP8DParserContext_t *p) in vp8hwdResetProbs() argument
757 p->vp7ScanOrder[i] = Vp7DefaultScan[i]; in vp8hwdResetProbs()
761 p->entropy.probLuma16x16PredMode[0] = 112; in vp8hwdResetProbs()
762 p->entropy.probLuma16x16PredMode[1] = 86; in vp8hwdResetProbs()
763 p->entropy.probLuma16x16PredMode[2] = 140; in vp8hwdResetProbs()
764 p->entropy.probLuma16x16PredMode[3] = 37; in vp8hwdResetProbs()
765 p->entropy.probChromaPredMode[0] = 162; in vp8hwdResetProbs()
766 p->entropy.probChromaPredMode[1] = 101; in vp8hwdResetProbs()
767 p->entropy.probChromaPredMode[2] = 204; in vp8hwdResetProbs()
770 p->mbRefLfDelta[i] = 0; in vp8hwdResetProbs()
773 p->mbModeLfDelta[i] = 0; in vp8hwdResetProbs()
777 if (p->decMode == VP8HWD_VP8) { in vp8hwdResetProbs()
780 p->entropy.probMvContext[i][j] = Vp8DefaultMvProbs[i][j]; in vp8hwdResetProbs()
784 p->entropy.probMvContext[i][j] = Vp7DefaultMvProbs[i][j]; in vp8hwdResetProbs()
792 p->entropy.probCoeffs[i][j][k][l] = in vp8hwdResetProbs()
798 static void vp8hwdDecodeCoeffUpdate(VP8DParserContext_t *p) in vp8hwdDecodeCoeffUpdate() argument
807 if (vp8hwdDecodeBool(&p->bitstr, in vp8hwdDecodeCoeffUpdate()
809 p->entropy.probCoeffs[i][j][k][l] = in vp8hwdDecodeCoeffUpdate()
810 vp8hwdReadBits(&p->bitstr, 8); in vp8hwdDecodeCoeffUpdate()
818 static MPP_RET vp8_header_parser(VP8DParserContext_t *p, RK_U8 *pbase, in vp8_header_parser() argument
823 vpBoolCoder_t *bit_ctx = &p->bitstr; in vp8_header_parser()
826 if (p->keyFrame) { in vp8_header_parser()
831 p->width = tmp & 0x3fff; in vp8_header_parser()
832 p->scaledWidth = ScaleDimension(p->width, tmp >> 14); in vp8_header_parser()
834 p->height = tmp & 0x3fff; in vp8_header_parser()
835 p->scaledHeight = ScaleDimension(p->height, tmp >> 14); in vp8_header_parser()
840 if (p->keyFrame) { in vp8_header_parser()
841 p->colorSpace = (vpColorSpace_e)vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
842 p->clamping = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
844 p->segmentationEnabled = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
845 p->segmentationMapUpdate = 0; in vp8_header_parser()
846 if (p->segmentationEnabled) { in vp8_header_parser()
847 p->segmentationMapUpdate = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
849 p->segmentFeatureMode = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
850 memset(&p->segmentQp[0], 0, MAX_NBR_OF_SEGMENTS * sizeof(RK_S32)); in vp8_header_parser()
851 memset(&p->segmentLoopfilter[0], 0, in vp8_header_parser()
855 p->segmentQp[i] = vp8hwdReadBits(bit_ctx, 7); in vp8_header_parser()
857 p->segmentQp[i] = -p->segmentQp[i]; in vp8_header_parser()
862 p->segmentLoopfilter[i] = vp8hwdReadBits(bit_ctx, 6); in vp8_header_parser()
864 p->segmentLoopfilter[i] = -p->segmentLoopfilter[i]; in vp8_header_parser()
868 if (p->segmentationMapUpdate) { in vp8_header_parser()
869 p->probSegment[0] = 255; in vp8_header_parser()
870 p->probSegment[1] = 255; in vp8_header_parser()
871 p->probSegment[2] = 255; in vp8_header_parser()
874 p->probSegment[i] = vp8hwdReadBits(bit_ctx, 8); in vp8_header_parser()
884 p->loopFilterType = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
885 p->loopFilterLevel = vp8hwdReadBits(bit_ctx, 6); in vp8_header_parser()
886 p->loopFilterSharpness = vp8hwdReadBits(bit_ctx, 3); in vp8_header_parser()
887 p->modeRefLfEnabled = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
888 if (p->modeRefLfEnabled) { in vp8_header_parser()
892 p->mbRefLfDelta[i] = vp8hwdReadBits(bit_ctx, 6); in vp8_header_parser()
894 p->mbRefLfDelta[i] = -p->mbRefLfDelta[i]; in vp8_header_parser()
898 if (vp8hwdDecodeBool128(&p->bitstr)) { in vp8_header_parser()
899 p->mbModeLfDelta[i] = vp8hwdReadBits(bit_ctx, 6); in vp8_header_parser()
901 p->mbModeLfDelta[i] = -p->mbModeLfDelta[i]; in vp8_header_parser()
911 p->nbrDctPartitions = vp8hwdReadBits(bit_ctx, 2); in vp8_header_parser()
912 p->qpYAc = vp8hwdReadBits(bit_ctx, 7); in vp8_header_parser()
913 p->qpYDc = DecodeQuantizerDelta(bit_ctx); in vp8_header_parser()
914 p->qpY2Dc = DecodeQuantizerDelta(bit_ctx); in vp8_header_parser()
915 p->qpY2Ac = DecodeQuantizerDelta(bit_ctx); in vp8_header_parser()
916 p->qpChDc = DecodeQuantizerDelta(bit_ctx); in vp8_header_parser()
917 p->qpChAc = DecodeQuantizerDelta(bit_ctx); in vp8_header_parser()
918 if (p->keyFrame) { in vp8_header_parser()
919 p->refreshGolden = 1; in vp8_header_parser()
920 p->refreshAlternate = 1; in vp8_header_parser()
921 p->copyBufferToGolden = 0; in vp8_header_parser()
922 p->copyBufferToAlternate = 0; in vp8_header_parser()
925 p->refreshEntropyProbs = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
927 p->refFrameSignBias[0] = 0; in vp8_header_parser()
928 p->refFrameSignBias[1] = 0; in vp8_header_parser()
929 p->refreshLast = 1; in vp8_header_parser()
932 p->refreshGolden = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
934 p->refreshAlternate = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
935 if ( p->refreshGolden == 0 ) { in vp8_header_parser()
937 p->copyBufferToGolden = vp8hwdReadBits(bit_ctx, 2); in vp8_header_parser()
939 p->copyBufferToGolden = 0; in vp8_header_parser()
941 if ( p->refreshAlternate == 0 ) { in vp8_header_parser()
943 p->copyBufferToAlternate = vp8hwdReadBits(bit_ctx, 2); in vp8_header_parser()
945 p->copyBufferToAlternate = 0; in vp8_header_parser()
948 p->refFrameSignBias[0] = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
950 p->refFrameSignBias[1] = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
952 p->refreshEntropyProbs = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
954 p->refreshLast = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
958 if (p->refreshEntropyProbs == 0) { in vp8_header_parser()
959 memcpy((void*)&p->entropyLast, (void*)&p->entropy, in vp8_header_parser()
961 memcpy( (void*)p->vp7PrevScanOrder, (void*)p->vp7ScanOrder, in vp8_header_parser()
962 (unsigned long)sizeof(p->vp7ScanOrder)); in vp8_header_parser()
965 vp8hwdDecodeCoeffUpdate(p); in vp8_header_parser()
966 p->coeffSkipMode = vp8hwdDecodeBool128(bit_ctx); in vp8_header_parser()
967 if (!p->keyFrame) { in vp8_header_parser()
969 if (p->coeffSkipMode) in vp8_header_parser()
970 p->probMbSkipFalse = vp8hwdReadBits(bit_ctx, 8); in vp8_header_parser()
971 p->probIntra = vp8hwdReadBits(bit_ctx, 8); in vp8_header_parser()
972 p->probRefLast = vp8hwdReadBits(bit_ctx, 8); in vp8_header_parser()
973 p->probRefGolden = vp8hwdReadBits(bit_ctx, 8); in vp8_header_parser()
976 p->entropy.probLuma16x16PredMode[i] = vp8hwdReadBits(bit_ctx, 8); in vp8_header_parser()
980 p->entropy.probChromaPredMode[i] = vp8hwdReadBits(bit_ctx, 8); in vp8_header_parser()
991 p->entropy.probMvContext[i][j] = tmp; in vp8_header_parser()
996 if (p->coeffSkipMode) in vp8_header_parser()
997 p->probMbSkipFalse = vp8hwdReadBits(bit_ctx, 8); in vp8_header_parser()
1009 vp7_header_parser(VP8DParserContext_t *p, RK_U8 *pbase, RK_U32 size) in vp7_header_parser() argument
1015 vpBoolCoder_t *bit_ctx = &p->bitstr; in vp7_header_parser()
1018 if (p->keyFrame) { in vp7_header_parser()
1019 p->width = vp8hwdReadBits(bit_ctx, 12); in vp7_header_parser()
1020 p->height = vp8hwdReadBits(bit_ctx, 12); in vp7_header_parser()
1022 p->scaledWidth = ScaleDimension(p->width, tmp); in vp7_header_parser()
1024 p->scaledHeight = ScaleDimension(p->height, tmp); in vp7_header_parser()
1030 if (p->vpVersion == 0) in vp7_header_parser()
1052 p->nbrDctPartitions = 0; in vp7_header_parser()
1054 p->qpYAc = (RK_S32)vp8hwdReadBits(bit_ctx, 7 ); in vp7_header_parser()
1055 p->qpYDc = vp8hwdReadBits(bit_ctx, 1 ) in vp7_header_parser()
1056 ? (RK_S32)vp8hwdReadBits(bit_ctx, 7 ) : p->qpYAc; in vp7_header_parser()
1057 p->qpY2Dc = vp8hwdReadBits(bit_ctx, 1 ) in vp7_header_parser()
1058 ? (RK_S32)vp8hwdReadBits(bit_ctx, 7 ) : p->qpYAc; in vp7_header_parser()
1059 p->qpY2Ac = vp8hwdReadBits(bit_ctx, 1 ) in vp7_header_parser()
1060 ? (RK_S32)vp8hwdReadBits(bit_ctx, 7 ) : p->qpYAc; in vp7_header_parser()
1061 p->qpChDc = vp8hwdReadBits(bit_ctx, 1 ) in vp7_header_parser()
1062 ? (RK_S32)vp8hwdReadBits(bit_ctx, 7 ) : p->qpYAc; in vp7_header_parser()
1063 p->qpChAc = vp8hwdReadBits(bit_ctx, 1 ) in vp7_header_parser()
1064 ? (RK_S32)vp8hwdReadBits(bit_ctx, 7 ) : p->qpYAc; in vp7_header_parser()
1065 if (!p->keyFrame) { in vp7_header_parser()
1066 p->refreshGolden = vp8hwdDecodeBool128(bit_ctx); in vp7_header_parser()
1067 if (p->vpVersion >= 1) { in vp7_header_parser()
1068 p->refreshEntropyProbs = vp8hwdDecodeBool128(bit_ctx); in vp7_header_parser()
1069 p->refreshLast = vp8hwdDecodeBool128(bit_ctx); in vp7_header_parser()
1071 p->refreshEntropyProbs = 1; in vp7_header_parser()
1072 p->refreshLast = 1; in vp7_header_parser()
1075 p->refreshGolden = 1; in vp7_header_parser()
1076 p->refreshAlternate = 1; in vp7_header_parser()
1077 p->copyBufferToGolden = 0; in vp7_header_parser()
1078 p->copyBufferToAlternate = 0; in vp7_header_parser()
1079 if (p->vpVersion >= 1) in vp7_header_parser()
1080 p->refreshEntropyProbs = vp8hwdDecodeBool128(bit_ctx); in vp7_header_parser()
1082 p->refreshEntropyProbs = 1; in vp7_header_parser()
1083 p->refFrameSignBias[0] = 0; in vp7_header_parser()
1084 p->refFrameSignBias[1] = 0; in vp7_header_parser()
1085 p->refreshLast = 1; in vp7_header_parser()
1088 if (!p->refreshEntropyProbs) { in vp7_header_parser()
1089 memcpy(&p->entropyLast, &p->entropy, in vp7_header_parser()
1091 memcpy(p->vp7PrevScanOrder, p->vp7ScanOrder, in vp7_header_parser()
1092 (unsigned long)sizeof(p->vp7ScanOrder)); in vp7_header_parser()
1094 if (p->refreshLast) { in vp7_header_parser()
1102 if (p->vpVersion == 0) { in vp7_header_parser()
1103 p->loopFilterType = vp8hwdDecodeBool128(bit_ctx); in vp7_header_parser()
1110 p->vp7ScanOrder[0] = 0; in vp7_header_parser()
1112 p->vp7ScanOrder[i] = Vp7DefaultScan[vp8hwdReadBits(bit_ctx, 4)]; in vp7_header_parser()
1114 if (p->vpVersion >= 1) in vp7_header_parser()
1115 p->loopFilterType = vp8hwdDecodeBool128(bit_ctx); in vp7_header_parser()
1116 p->loopFilterLevel = vp8hwdReadBits(bit_ctx, 6); in vp7_header_parser()
1117 p->loopFilterSharpness = vp8hwdReadBits(bit_ctx, 3); in vp7_header_parser()
1118 vp8hwdDecodeCoeffUpdate(p); in vp7_header_parser()
1119 if (!p->keyFrame) { in vp7_header_parser()
1120 p->probIntra = vp8hwdReadBits(bit_ctx, 8); in vp7_header_parser()
1121 p->probRefLast = vp8hwdReadBits(bit_ctx, 8); in vp7_header_parser()
1124 p->entropy.probLuma16x16PredMode[i] = in vp7_header_parser()
1129 p->entropy.probChromaPredMode[i] = vp8hwdReadBits(bit_ctx, 8); in vp7_header_parser()
1139 p->entropy.probMvContext[i][j] = tmp; in vp7_header_parser()
1154 vp8hwdSetPartitionOffsets(VP8DParserContext_t *p, RK_U8 *stream, RK_U32 len) in vp8hwdSetPartitionOffsets() argument
1162 if (p->decMode == VP8HWD_VP8 && p->keyFrame) in vp8hwdSetPartitionOffsets()
1165 stream += p->frameTagSize; in vp8hwdSetPartitionOffsets()
1167 baseOffset = p->frameTagSize + p->offsetToDctParts in vp8hwdSetPartitionOffsets()
1168 + 3 * ( (1 << p->nbrDctPartitions) - 1); in vp8hwdSetPartitionOffsets()
1170 stream += p->offsetToDctParts + extraBytesPacked; in vp8hwdSetPartitionOffsets()
1171 for ( i = 0 ; i < (RK_U32)(1 << p->nbrDctPartitions) - 1 ; ++i ) { in vp8hwdSetPartitionOffsets()
1174 p->dctPartitionOffsets[i] = baseOffset + offset; in vp8hwdSetPartitionOffsets()
1179 p->dctPartitionOffsets[i] = baseOffset + offset; in vp8hwdSetPartitionOffsets()
1181 return (p->dctPartitionOffsets[i] < len ? MPP_OK : MPP_ERR_STREAM); in vp8hwdSetPartitionOffsets()
1185 decoder_frame_header(VP8DParserContext_t *p, RK_U8 *pbase, RK_U32 size) in decoder_frame_header() argument
1190 p->keyFrame = !(pbase[0] & 1); in decoder_frame_header()
1191 p->vpVersion = (pbase[0] >> 1) & 7; in decoder_frame_header()
1192 p->showFrame = 1; in decoder_frame_header()
1193 if (p->keyFrame && !p->needKeyFrame) { in decoder_frame_header()
1194 p->needKeyFrame = 1; in decoder_frame_header()
1196 if (!p->needKeyFrame) { in decoder_frame_header()
1201 if (p->decMode == VP8HWD_VP7) { in decoder_frame_header()
1202 p->offsetToDctParts = (pbase[0] >> 4) | (pbase[1] << 4) | (pbase[2] << 12); in decoder_frame_header()
1203 p->frameTagSize = p->vpVersion >= 1 ? 3 : 4; in decoder_frame_header()
1205 p->offsetToDctParts = (pbase[0] >> 5) | (pbase[1] << 3) | (pbase[2] << 11); in decoder_frame_header()
1208 p->offsetToDctParts, pbase[0], pbase[1], pbase[2]); in decoder_frame_header()
1210 p->showFrame = (pbase[0] >> 4) & 1; in decoder_frame_header()
1211 p->frameTagSize = 3; in decoder_frame_header()
1213 pbase += p->frameTagSize; in decoder_frame_header()
1214 size -= p->frameTagSize; in decoder_frame_header()
1215 if (p->keyFrame) in decoder_frame_header()
1216 vp8hwdResetProbs(p); in decoder_frame_header()
1218 if (p->decMode == VP8HWD_VP8) { in decoder_frame_header()
1219 ret = vp8_header_parser(p, pbase, size); in decoder_frame_header()
1221 ret = vp7_header_parser(p, pbase, size); in decoder_frame_header()
1289 VP8DParserContext_t *p = (VP8DParserContext_t *)c->parse_ctx; in vp8d_parser_parse() local
1292 ret = decoder_frame_header(p, p->bitstream_sw_buf, p->stream_size); in vp8d_parser_parse()
1300 vp8hwdSetPartitionOffsets(p, p->bitstream_sw_buf, p->stream_size); in vp8d_parser_parse()
1302 ret = vp8d_alloc_frame(p); in vp8d_parser_parse()
1309 vp8d_convert_to_syntx(p, in_task); in vp8d_parser_parse()
1311 if (p->refreshEntropyProbs == 0) { in vp8d_parser_parse()
1312 memcpy((void*)&p->entropy, (void*)&p->entropyLast, in vp8d_parser_parse()
1314 memcpy((void*)p->vp7ScanOrder, (void*)p->vp7PrevScanOrder, in vp8d_parser_parse()
1315 (unsigned long)sizeof(p->vp7ScanOrder)); in vp8d_parser_parse()
1317 in_task->syntax.data = (void *)p->dxva_ctx; in vp8d_parser_parse()
1319 in_task->output = p->frame_out->slot_index; in vp8d_parser_parse()
1321 if (p->eos) { in vp8d_parser_parse()
1322 in_task->flags.eos = p->eos; in vp8d_parser_parse()
1324 vp8d_ref_update(p); in vp8d_parser_parse()
1327 if (!p->stream_fp) { in vp8d_parser_parse()
1331 p->stream_fp = fopen(name, "wb"); in vp8d_parser_parse()
1333 if (p->stream_fp) { in vp8d_parser_parse()
1334 if (!p->ivf_header_flag) { in vp8d_parser_parse()
1335 write_ivf_header(p, p->stream_fp); in vp8d_parser_parse()
1336 p->ivf_header_flag = 1; in vp8d_parser_parse()
1338 write_ivf_frame(p->stream_fp, p->stream_size, p->frame_cnt); in vp8d_parser_parse()
1339 fwrite(p->bitstream_sw_buf, 1, p->stream_size, p->stream_fp); in vp8d_parser_parse()
1340 fflush(p->stream_fp); in vp8d_parser_parse()
1343 p->frame_cnt++; in vp8d_parser_parse()