rockchip-linux / mpp

Media Process Platform (MPP) module
468 stars 156 forks source link

关于decode_put_packet的问题 #561

Closed Kevin111369 closed 3 months ago

Kevin111369 commented 3 months ago

使用ffmpeg读取h264文件,然后进行分帧,将每一帧送入mpp_decode进行解码。

将ffmpeg分帧后的数据送入mpp_packet之后,提示decode_put_packet failed,返回的错误信息如下

mpp_log: data size is: 154045
mpp_log: 0x21af7ec0 decode_put_packet failed ret -1002

以下是关键代码

AVPacket* av_packet = av_data->packet;
MppPacket mpp_packet = mpp_data->packet;

mpp_log("data size is: %d\n", av_packet->size);

mpp_packet_set_data(mpp_packet, av_packet->data);
mpp_packet_set_size(mpp_packet, av_packet->size);
mpp_packet_set_pos(mpp_packet, av_packet->data);
mpp_packet_set_length(mpp_packet, av_packet->size);
mpp_packet_set_pts(mpp_packet, av_packet->pts);

do {
        RK_U32 frm_eos = 0;
        RK_S32 times = 30;

        // send the packet first if packet is not done
        if (!pkt_done) {
            ret = mpp_mpi->decode_put_packet(mpp_ctx, mpp_packet);
            if (MPP_OK == ret) {
                pkt_done = 1;
                if (!mpp_data->first_pkt)
                    mpp_data->first_pkt = mpp_time();
            }
            else
            {
                mpp_err("%p decode_put_packet failed ret %d\n", mpp_ctx, ret);
                break;
            }
        }

        /*
        frame process code
        */
}while(1);

请问我现在如何根据返回的错误码去定位错误呢?

Kevin111369 commented 3 months ago

我仔细检查了代码,缺少了mpp_init的步骤,现在已经解决了