Hello
I'm a Tsuchiya's subordinate.
I've read all of your comments and advice.
I've not tried FFMPEG demux yet however, it can be one of the solutions.
Thank you for all of your advice and cooperation .
Today, I could play a specific mp4 file by modifying the source code of qtdemux.
I'd like to share the way and get comment about it.
1.Solve the differences of start code prefix of NAL
Thanks to Katagiri-san's advice, I noticed this difference.
In the case of aiurdemux, the first 4 byte is "00 00 00 01".
But in the case of qtdemux, it's the length of the each NAL data.
I modified qtdemux and solve this difference.
2.Solve the difference of "codec_data"
I noticed this difference by putting "-v" to the command line like below
gst-launch -v filesrc location=/mnt/floppy/1sec_10frame.mp4 ! 'video/quicktime' ! qtdemux ! queue ! vpudec ! mfw_isink
I saw the difference of the value of "codec_data".
/GstPipeline:pipeline0/GstVpuDec:vpudec0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)2, profile=(string)baseline,
codec_data=(buffer)0142e00dffe100162742e00da918283f600d418041adb7a02f01e97bdf0101000428ce0988,
width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1
In the case of aiurdemux
codec_data=(buffer)000000012742e00da918283f600d418041adb7a02f01e97bdf01 0000000128ce0988
In the case of qtdemux
codec_data=(buffer)0142e00dffe100162742e00da918283f600d418041adb7a02f01e97bdf0101000428ce0988
I don't know why this happens, so I just modified qtdemux to make it output the "codec_data" of aiurdemux above regardless of the read mp4 file on trial.
The two modification above solved the problem.
I mean I could play a specific mp4 file using qtdemux + vpudec.(non-aiurdemux)
(I cannot play other mp4 file because qtdemux decide "codec_data" statically on trial)
I guess "codec_data" is avcC Data which is in mp4 file.
In the case of qtdemux, "codec_data" equalls avcC, but in the case of aiurdemux, it's little bit modified.
According to the aiurdemux element source code, "codec_data" is decided by FslParserGetDecSpecificInfo() which is fsl parser API.
Could anyone advice me the way to convert "codec_data" of qtdemux to aiurdemux so that qtdemux can decide "codec_data" same as the aiurdemux and play any mp4 files?
Kuniaki