Lines Matching refs:p_strm
128 static void reset_nalu(H264dCurStream_t *p_strm) in reset_nalu() argument
130 if (p_strm->endcode_found) { in reset_nalu()
131 p_strm->startcode_found = p_strm->endcode_found; in reset_nalu()
132 p_strm->nalu_len = 0; in reset_nalu()
133 p_strm->nalu_type = H264_NALU_TYPE_NULL; in reset_nalu()
134 p_strm->endcode_found = 0; in reset_nalu()
138 static void find_prefix_code(RK_U8 *p_data, H264dCurStream_t *p_strm) in find_prefix_code() argument
142 if ((p_strm->prefixdata & 0x00FFFFFF) == 0x00000001) { in find_prefix_code()
143 if (p_strm->startcode_found) { in find_prefix_code()
144 p_strm->endcode_found = 1; in find_prefix_code()
146 p_strm->startcode_found = 1; in find_prefix_code()
321 static MPP_RET add_empty_nalu(H264dCurStream_t *p_strm) in add_empty_nalu() argument
327 if ((p_strm->head_offset + add_size) >= p_strm->head_max_size) { in add_empty_nalu()
328 … FUN_CHECK(ret = realloc_buffer(&p_strm->head_buf, &p_strm->head_max_size, HEAD_BUF_ADD_SIZE)); in add_empty_nalu()
330 p_des = &p_strm->head_buf[p_strm->head_offset]; in add_empty_nalu()
334 p_strm->head_offset += add_size; in add_empty_nalu()
376 static MPP_RET store_cur_nalu(H264dCurCtx_t *p_Cur, H264dCurStream_t *p_strm, H264dDxvaCtx_t *dxva_… in store_cur_nalu() argument
382 if ( (p_strm->nalu_type == H264_NALU_TYPE_SLICE) in store_cur_nalu()
383 || (p_strm->nalu_type == H264_NALU_TYPE_IDR) in store_cur_nalu()
384 || (p_strm->nalu_type == H264_NALU_TYPE_SPS) in store_cur_nalu()
385 || (p_strm->nalu_type == H264_NALU_TYPE_PPS) in store_cur_nalu()
386 || (p_strm->nalu_type == H264_NALU_TYPE_SUB_SPS) in store_cur_nalu()
387 || (p_strm->nalu_type == H264_NALU_TYPE_SEI) in store_cur_nalu()
388 || (p_strm->nalu_type == H264_NALU_TYPE_PREFIX) in store_cur_nalu()
389 || (p_strm->nalu_type == H264_NALU_TYPE_SLC_EXT)) { in store_cur_nalu()
391 RK_U32 head_size = MPP_MIN(HEAD_SYNTAX_MAX_SIZE, p_strm->nalu_len); in store_cur_nalu()
395 if (p_strm->tmp_offset && !p_strm->head_offset) { in store_cur_nalu()
396 memcpy(p_strm->head_buf, p_strm->tmp_buf, p_strm->tmp_offset); in store_cur_nalu()
397 p_strm->head_offset += p_strm->tmp_offset; in store_cur_nalu()
398 p_strm->tmp_offset = 0; in store_cur_nalu()
403 if ((p_strm->head_offset + add_size) >= p_strm->head_max_size) { in store_cur_nalu()
404 FUN_CHECK(ret = realloc_buffer(&p_strm->head_buf, &p_strm->head_max_size, add_size)); in store_cur_nalu()
406 p_des = &p_strm->head_buf[p_strm->head_offset]; in store_cur_nalu()
408 ((H264dNaluHead_t *)p_des)->nalu_type = p_strm->nalu_type; in store_cur_nalu()
410 memcpy(p_des + sizeof(H264dNaluHead_t), p_strm->nalu_buf, head_size); in store_cur_nalu()
411 p_strm->head_offset += add_size; in store_cur_nalu()
413 H264D_LOG("store current header, NAL type %d", p_strm->nalu_type); in store_cur_nalu()
416 if (p_Cur->p_Dec->have_slice_data && p_strm->nalu_type != H264_NALU_TYPE_IDR && in store_cur_nalu()
417 p_strm->nalu_type != H264_NALU_TYPE_SLICE) { in store_cur_nalu()
420 if ((p_strm->tmp_offset + add_size) >= p_strm->tmp_max_size) { in store_cur_nalu()
421 FUN_CHECK(ret = realloc_buffer(&p_strm->tmp_buf, &p_strm->tmp_max_size, add_size)); in store_cur_nalu()
424 p_tmp = &p_strm->tmp_buf[p_strm->tmp_offset]; in store_cur_nalu()
426 p_strm->tmp_offset += add_size; in store_cur_nalu()
428 H264D_LOG("store current header to tmp header, NAL type %d", p_strm->nalu_type); in store_cur_nalu()
431 if ((p_strm->nalu_type == H264_NALU_TYPE_SLICE) in store_cur_nalu()
432 || (p_strm->nalu_type == H264_NALU_TYPE_IDR)) { in store_cur_nalu()
434 RK_U32 add_size = p_strm->nalu_len + sizeof(g_start_precode); in store_cur_nalu()
442 memcpy(p_des + sizeof(g_start_precode), p_strm->nalu_buf, p_strm->nalu_len); in store_cur_nalu()
447 … if (p_Cur->p_Dec->cfg->base.enable_hdr_meta && p_strm->nalu_type == H264_NALU_TYPE_UNSPECIFIED28) in store_cur_nalu()
448 mpp_h264d_fill_dynamic_meta(p_Cur, p_strm->nalu_buf + 2, p_strm->nalu_len - 2, DLBY); in store_cur_nalu()
452 if ((p_strm->nalu_type == H264_NALU_TYPE_SPS) in store_cur_nalu()
453 || (p_strm->nalu_type == H264_NALU_TYPE_PPS)) { in store_cur_nalu()
457 memcpy(p_des + sizeof(g_start_precode), p_strm->nalu_buf, p_strm->nalu_len); in store_cur_nalu()
458 p_Inp->spspps_offset += p_strm->nalu_len + sizeof(g_start_precode); in store_cur_nalu()
461 } else if ((p_strm->nalu_type == H264_NALU_TYPE_SLICE) in store_cur_nalu()
462 || (p_strm->nalu_type == H264_NALU_TYPE_IDR)) { in store_cur_nalu()
473 static MPP_RET judge_is_new_frame(H264dCurCtx_t *p_Cur, H264dCurStream_t *p_strm) in judge_is_new_frame() argument
483 mpp_set_bitread_ctx(p_bitctx, p_strm->nalu_buf, 4); in judge_is_new_frame()
489 READ_BITS(p_bitctx, 5, &p_strm->nalu_type); in judge_is_new_frame()
492 if ((p_strm->nalu_type == H264_NALU_TYPE_PREFIX) in judge_is_new_frame()
493 || (p_strm->nalu_type == H264_NALU_TYPE_SLC_EXT)) { in judge_is_new_frame()
494 if (p_strm->nalu_type == H264_NALU_TYPE_SLC_EXT) { in judge_is_new_frame()
495 p_strm->nalu_type = H264_NALU_TYPE_SLICE; in judge_is_new_frame()
500 if ((p_strm->nalu_len == 1) in judge_is_new_frame()
501 && (p_strm->nalu_type == H264_NALU_TYPE_SEI in judge_is_new_frame()
502 || p_strm->nalu_type == H264_NALU_TYPE_SPS in judge_is_new_frame()
503 || p_strm->nalu_type == H264_NALU_TYPE_PPS in judge_is_new_frame()
504 || p_strm->nalu_type == H264_NALU_TYPE_SUB_SPS in judge_is_new_frame()
505 || p_strm->nalu_type == H264_NALU_TYPE_AUD in judge_is_new_frame()
515 } else if ((p_strm->nalu_len > 1) in judge_is_new_frame()
516 && (p_strm->nalu_type == H264_NALU_TYPE_SLICE in judge_is_new_frame()
517 || p_strm->nalu_type == H264_NALU_TYPE_IDR)) { in judge_is_new_frame()
519 mpp_set_bitread_ctx(p_bitctx, (p_strm->nalu_buf + nalu_header_bytes), 4); // reset in judge_is_new_frame()
531 } else if (p_strm->tmp_offset != 0 && in judge_is_new_frame()
533 p_strm->tmp_offset = 0; in judge_is_new_frame()
622 static MPP_RET clear_extra_header(H264dCurStream_t *p_strm) in clear_extra_header() argument
626 if (p_strm->tmp_offset >= p_strm->head_offset) { in clear_extra_header()
630 RK_U32 pos = p_strm->head_offset - p_strm->tmp_offset; in clear_extra_header()
631 RK_U8 *p_des = &p_strm->head_buf[pos]; in clear_extra_header()
633 memset(p_des, 0, p_strm->tmp_offset); in clear_extra_header()
634 p_strm->head_offset -= p_strm->tmp_offset; in clear_extra_header()
652 H264dCurStream_t *p_strm = &p_Cur->strm; in parse_prepare() local
660 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Dec->dxva_ctx)); in parse_prepare()
661 FUN_CHECK(ret = add_empty_nalu(p_strm)); in parse_prepare()
674 p_strm->curdata = &p_Inp->in_buf[p_strm->nalu_offset++]; in parse_prepare()
676 p_strm->prefixdata = (p_strm->prefixdata << 8) | (*p_strm->curdata); in parse_prepare()
677 if (p_strm->startcode_found) { in parse_prepare()
678 if (p_strm->nalu_len >= p_strm->nalu_max_size) { in parse_prepare()
679 … FUN_CHECK(ret = realloc_buffer(&p_strm->nalu_buf, &p_strm->nalu_max_size, NALU_BUF_ADD_SIZE)); in parse_prepare()
681 p_strm->nalu_buf[p_strm->nalu_len++] = *p_strm->curdata; in parse_prepare()
682 if ((p_strm->nalu_len == NALU_TYPE_NORMAL_LENGTH) in parse_prepare()
683 || (p_strm->nalu_len == NALU_TYPE_EXT_LENGTH)) { in parse_prepare()
684 FUN_CHECK(ret = judge_is_new_frame(p_Cur, p_strm)); in parse_prepare()
686 if (p_strm->tmp_offset) in parse_prepare()
687 clear_extra_header(p_strm); in parse_prepare()
688 FUN_CHECK(ret = add_empty_nalu(p_strm)); in parse_prepare()
689 p_strm->head_offset = 0; in parse_prepare()
690 p_strm->first_mb_in_slice = 0; in parse_prepare()
700 find_prefix_code(p_strm->curdata, p_strm); in parse_prepare()
702 if (p_strm->endcode_found) { in parse_prepare()
703 p_strm->nalu_len -= START_PREFIX_3BYTE; in parse_prepare()
704 if (p_strm->nalu_len > START_PREFIX_3BYTE) { in parse_prepare()
705 while ((p_strm->nalu_len > 0) && in parse_prepare()
706 (p_strm->nalu_buf[p_strm->nalu_len - 1] == 0x00)) { in parse_prepare()
707 p_strm->nalu_len--; in parse_prepare()
711 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Dec->dxva_ctx)); in parse_prepare()
712 reset_nalu(p_strm); in parse_prepare()
719 p_strm->nalu_offset = 0; in parse_prepare()
724 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Dec->dxva_ctx)); in parse_prepare()
725 FUN_CHECK(ret = add_empty_nalu(p_strm)); in parse_prepare()
749 H264dCurStream_t *p_strm = &p_Cur->strm; in parse_prepare_fast() local
756 p_strm->curdata = &p_Inp->in_buf[p_strm->nalu_offset++]; in parse_prepare_fast()
758 p_strm->prefixdata = (p_strm->prefixdata << 8) | (*p_strm->curdata); in parse_prepare_fast()
759 if (p_strm->startcode_found) { in parse_prepare_fast()
760 if (p_strm->nalu_len >= p_strm->nalu_max_size) { in parse_prepare_fast()
761 … FUN_CHECK(ret = realloc_buffer(&p_strm->nalu_buf, &p_strm->nalu_max_size, NALU_BUF_ADD_SIZE)); in parse_prepare_fast()
763 p_strm->nalu_buf[p_strm->nalu_len++] = *p_strm->curdata; in parse_prepare_fast()
764 if (p_strm->nalu_len == 1) { in parse_prepare_fast()
765 p_strm->nalu_type = p_strm->nalu_buf[0] & 0x1F; in parse_prepare_fast()
767 if (p_strm->nalu_type == H264_NALU_TYPE_SLICE in parse_prepare_fast()
768 … || p_strm->nalu_type == H264_NALU_TYPE_IDR || p_strm->nalu_type == H264_NALU_TYPE_SLC_EXT) { in parse_prepare_fast()
770 if (p_strm->nalu_type == H264_NALU_TYPE_SLC_EXT) in parse_prepare_fast()
771 p_strm->nalu_type = H264_NALU_TYPE_SLICE; in parse_prepare_fast()
773 p_strm->nalu_len += (RK_U32)pkt_impl->length; in parse_prepare_fast()
774 if (p_strm->nalu_len >= p_strm->nalu_max_size) { in parse_prepare_fast()
775 RK_U32 add_size = pkt_impl->length + 1 - p_strm->nalu_max_size; in parse_prepare_fast()
776 …FUN_CHECK(ret = realloc_buffer(&p_strm->nalu_buf, &p_strm->nalu_max_size, MPP_MAX(NALU_BUF_ADD_SIZ… in parse_prepare_fast()
778 memcpy(&p_strm->nalu_buf[0], p_strm->curdata, pkt_impl->length + 1); in parse_prepare_fast()
786 find_prefix_code(p_strm->curdata, p_strm); in parse_prepare_fast()
788 if (p_strm->endcode_found) { in parse_prepare_fast()
789 p_strm->nalu_len -= START_PREFIX_3BYTE; in parse_prepare_fast()
790 while (p_strm->nalu_len > 0 && p_strm->nalu_buf[p_strm->nalu_len - 1] == 0x00) { in parse_prepare_fast()
791 p_strm->nalu_len--; in parse_prepare_fast()
794 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Dec->dxva_ctx)); in parse_prepare_fast()
795 reset_nalu(p_strm); in parse_prepare_fast()
800 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Dec->dxva_ctx)); in parse_prepare_fast()
801 FUN_CHECK(ret = add_empty_nalu(p_strm)); in parse_prepare_fast()
802 p_strm->head_offset = 0; in parse_prepare_fast()
811 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Dec->dxva_ctx)); in parse_prepare_fast()
815 p_strm->nalu_offset = 0; in parse_prepare_fast()
816 p_strm->endcode_found = 1; in parse_prepare_fast()
818 reset_nalu(p_strm); in parse_prepare_fast()
819 p_strm->startcode_found = 0; in parse_prepare_fast()
837 H264dCurStream_t *p_strm = &p_Cur->strm; in parse_prepare_avcC_header() local
842 MPP_FREE(p_strm->nalu_buf); in parse_prepare_avcC_header()
857 p_strm->nalu_len = U16_AT(pdata); in parse_prepare_avcC_header()
859 p_strm->nalu_type = H264_NALU_TYPE_SPS; in parse_prepare_avcC_header()
860 p_strm->nalu_buf = pdata; in parse_prepare_avcC_header()
861 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Cur->p_Dec->dxva_ctx)); in parse_prepare_avcC_header()
862 pdata += p_strm->nalu_len; in parse_prepare_avcC_header()
864 p_strm->nalu_buf = NULL; in parse_prepare_avcC_header()
868 p_strm->nalu_len = U16_AT(pdata); in parse_prepare_avcC_header()
870 p_strm->nalu_type = H264_NALU_TYPE_PPS; in parse_prepare_avcC_header()
871 p_strm->nalu_buf = pdata; in parse_prepare_avcC_header()
872 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Cur->p_Dec->dxva_ctx)); in parse_prepare_avcC_header()
873 pdata += p_strm->nalu_len; in parse_prepare_avcC_header()
876 p_strm->nalu_buf = NULL; in parse_prepare_avcC_header()
877 p_strm->startcode_found = 1; in parse_prepare_avcC_header()
893 H264dCurStream_t *p_strm = &p_Cur->strm; in parse_prepare_avcC_data() local
896 p_strm->nalu_buf = NULL; in parse_prepare_avcC_data()
905 p_strm->curdata = &p_Inp->in_buf[p_strm->nalu_offset]; in parse_prepare_avcC_data()
907 if (p_strm->startcode_found) { in parse_prepare_avcC_data()
908 p_strm->nalu_len = parse_nal_size(p_Inp->nal_size, p_strm->curdata); in parse_prepare_avcC_data()
909 if (p_strm->nalu_len <= 0 || p_strm->nalu_len >= p_Inp->in_length) { in parse_prepare_avcC_data()
914 p_strm->nalu_len = 0; in parse_prepare_avcC_data()
915 p_strm->nalu_offset = 0; in parse_prepare_avcC_data()
916 p_strm->startcode_found = 1; in parse_prepare_avcC_data()
917 p_strm->endcode_found = 0; in parse_prepare_avcC_data()
918 p_strm->nalu_buf = NULL; in parse_prepare_avcC_data()
922 p_strm->nalu_buf = p_strm->curdata + p_Inp->nal_size; in parse_prepare_avcC_data()
923 judge_is_new_frame(p_Cur, p_strm); in parse_prepare_avcC_data()
926 p_strm->startcode_found = 1; in parse_prepare_avcC_data()
927 p_strm->endcode_found = 0; in parse_prepare_avcC_data()
931 p_strm->curdata += p_Inp->nal_size; in parse_prepare_avcC_data()
932 p_strm->nalu_offset += p_Inp->nal_size; in parse_prepare_avcC_data()
936 p_strm->nalu_buf = p_strm->curdata; in parse_prepare_avcC_data()
937 p_strm->nalu_type = p_strm->nalu_buf[0] & 0x1F; in parse_prepare_avcC_data()
938 p_strm->startcode_found = 0; in parse_prepare_avcC_data()
939 p_strm->endcode_found = 1; in parse_prepare_avcC_data()
941 FUN_CHECK(ret = store_cur_nalu(p_Cur, p_strm, p_Cur->p_Dec->dxva_ctx)); in parse_prepare_avcC_data()
942 p_strm->curdata += p_strm->nalu_len; in parse_prepare_avcC_data()
943 p_strm->nalu_offset += p_strm->nalu_len; in parse_prepare_avcC_data()
944 pkt_impl->length -= p_strm->nalu_len; in parse_prepare_avcC_data()
945 p_Inp->in_length -= p_strm->nalu_len; in parse_prepare_avcC_data()
946 p_strm->startcode_found = 1; in parse_prepare_avcC_data()
947 p_strm->endcode_found = 0; in parse_prepare_avcC_data()
948 p_strm->nalu_len = 0; in parse_prepare_avcC_data()
956 p_strm->nalu_len = 0; in parse_prepare_avcC_data()
957 p_strm->nalu_offset = 0; in parse_prepare_avcC_data()
958 p_strm->startcode_found = 1; in parse_prepare_avcC_data()
959 p_strm->endcode_found = 0; in parse_prepare_avcC_data()
960 p_strm->nalu_buf = NULL; in parse_prepare_avcC_data()
966 if (p_strm->tmp_offset) in parse_prepare_avcC_data()
967 clear_extra_header(p_strm); in parse_prepare_avcC_data()
969 FUN_CHECK(ret = add_empty_nalu(p_strm)); in parse_prepare_avcC_data()
971 p_strm->head_offset = 0; in parse_prepare_avcC_data()
972 p_strm->first_mb_in_slice = 0; in parse_prepare_avcC_data()
979 p_strm->nalu_buf = NULL; in parse_prepare_avcC_data()