Gstreamer Pipeline error for H.264 stream for i.MX6DL Linux BSP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Gstreamer Pipeline error for H.264 stream for i.MX6DL Linux BSP

1,085 Views
yuuki
Senior Contributor II

Dear all,

We have the problem that pipeline error of gstreamer occurs if idr frame is not got when data from H.264 stream is decoded.

BSP : Linux L3.10.53 / Gstreamer 1.2.3

When the data receive is started in the middle of stream data, and then there is following problem in vpudec.
 - Memory for the decode is short
 - Decode is not completed for Call of the supposed(assumed) number of times.
As a result, pipeline error occurs.

Please refer to an attached file for the details.

<Question>
(1) In vpudec, would you tell me the condition that H.264 decode is completed?
They want to know the condition that data is output from src pad for Plugin of latter part.
If specific Frame information is necessary, please tell me it.

(2)Would you tell me the case which an error happens in  the function:VPU_DecDecodeBuf() in the vpu_wrapper.c file?

(3)They modified it as follows. Is there a problem about these modification?

[Before modification]
gstvpudecobject.c:gst_vpu_dec_object_decode()
line:1098-

===================================================
dec_ret = VPU_DecDecodeBuf(vpu_dec_object->handoe, &in_data, &buf_ret);
if (dec_ret != VPU_DEC_RET_SUCCESS) {
    GST_ERROR_OBJECT(vpu_dec_object, "faioed to decode frame: %s", \
              gst_vpu_dec_object_strerror(dec_ret));
    return GST_FLOW_ERROR;
===================================================


[After modification]
gstvpudecobject.c:gst_vpu_dec_object_decode()
line:1098-

===================================================
dec_ret = VPU_DecDecodeBuf(vpu_dec_object->handoe, &in_data, &buf_ret);
if (dec_ret != VPU_DEC_RET_SUCCESS) {
    GST_ERROR_OBJECT(vpu_dec_object, "faioed to decode frame: %s", \
              gst_vpu_dec_object_strerror(dec_ret));
    vpu_dec_object->state = STATE_REGISTRIED_FRAME_BUFFER;
    gst_vpu_dec_object_config(vpu_dec_object, bdec, NULL);
    return GST_FLOW_OK;
===================================================

May I have advice?

Best Regards,
Yuuki

Labels (4)
0 Kudos
5 Replies

815 Views
yuuki
Senior Contributor II

Can anybody teach me?

If there is necessary information, please contact me.

Best Regards,

Yuuki

0 Kudos

815 Views
joanxie
NXP TechSupport
NXP TechSupport

could you tell me how to reproduce your issue? what do you mean "When the data receive is started in the middle of stream data"?

0 Kudos

815 Views
yuuki
Senior Contributor II

joanxie

Dear Joan-san,

Sorry for pushing you,  how about the situation afterward?

Please advise of your findings.

Best Regards,

Yuuki

0 Kudos

815 Views
joanxie
NXP TechSupport
NXP TechSupport

1)do you mean vpudec can decode the middle of streaming? if yes, I don't think vpu can realise this, you should tell vpu how to do on the api level

2) the error like "ERROR :vpudec vpudec.c:1498:gst_vpudec_chain: Func VPU_DecDecodeBuf failed!! "

3) I'm not sure for this, you can add print infromation to debug this code.

0 Kudos

815 Views
yuuki
Senior Contributor II

joanxie

Dear Joan-san,

Thank you for your support.

I'm sorry, I cannot tell you about the reproduction procedure of the problem.

(Because I use our original application)

Would you tell me the condition of (1)-(2)?

Would you tell me whether (3) processing has a problem?

Best Regards,

Yuuki

0 Kudos