Hi,
I'm trying to use TI's encoder/decoder on the Beagleboard (C4) with the demo Angstrom Distribution and all the appropriate packages installed.
I'm currently concentrating on the decoding part and over RTP, the following pipelines work :
RTP server :
gst-launch-0.10 videotestsrc is-live=true ! ffenc_mpeg4 ! rtpmp4vpay ! udpsink host=192.168.1.4 port=4444 -v
RTP client :
gst-launch-0.10 udpsrc port=4444 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800f50a041e1463000001b24c61766335322e32302e31, payload=(int)96, ssrc=(guint)794308899, clock-base=(guint)1522495155, seqnum-base=(guint)48205' ! rtpmp4vdepay ! TIViddec2 codecName=mpeg4dec engineName=codecServer ! xvimagesink -v
where the caps are pasted from those generated on the RTP server. In this case, the decoding is extremely slow and the video is very very sluggish.
Now, MY application does the following :
RTP server :
App's v4l2src --> gst pipeline (appsrc --> ffenc_mpeg4 --> appsink) --> rtp payload --> send
RTP client :
RTP recieve and depay --> gst pipeline (appsrc -- > TIViddec2 --> appsink ) --> output
Now, the above setup works correctly for other decoders like ffdec_mpeg4, ffdec_mpeg2, etc. and so the RTP function and the appsrc/appsink pipeline are doing their jobs.
However, in the TI decoder, I am stuck to a point where no consumption is happening and hence no data is seen on the appsink.
This is true even if the RTP server and client are the same machine.
I see the decoder thread being invoked and waiting for data.
I see the data being fed by RTP recieving function and being queued up. But no consumption seems to happen.
The following is a snippet of my logs with custom debug messages (displayed with GST_ERROR to highlight) . I see the same logs in a loop and the code doesn't seem to go ahead.
0:00:07.548828125 1559 0x15a688 ERROR TIViddec2 gsttividdec2.c:851:gst_tividdec2_parse_and_queue_buffer: Raseel : gst_tividdec2_parse_and_queue_buffer : 851 : We are on the right path
0:00:07.549072266 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:268:gst_ticircbuffer_queue_data: Raseel : gst_ticircbuffer_queue_data : 268
0:00:07.549316406 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:377:gst_ticircbuffer_queue_data: Raseel : gst_ticircbuffer_queue_data : 377 : memcpy()ing of size : 1438
0:00:07.549591064 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:379:gst_ticircbuffer_queue_data: Raseel : gst_ticircbuffer_queue_data : 379 : memcpy() done of size : 1438
0:00:07.549713135 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:792:gst_ticircbuffer_window_available: Raseel : gst_ticircbuffer_window_available : Checking if data is available
0:00:07.549865723 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:810:gst_ticircbuffer_data_available: Raseel : gst_ticircbuffer_data_available
0:00:07.549957275 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:794:gst_ticircbuffer_window_available: Raseel : gst_ticircbuffer_window_available : data available = 1
[R=====================|===W ]
0:00:07.550140381 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:393:gst_ticircbuffer_queue_data: Raseel : gst_ticircbuffer_queue_data
0:00:07.550231934 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:398:gst_ticircbuffer_queue_data: Raseel : gst_ticircbuffer_queue_data : gst_buffer_duration
0:00:07.550354004 1559 0x15a688 ERROR TICircBuffer gstticircbuffer.c:848:gst_ticircbuffer_data_size: Raseel : gst_ticircbuffer_data_size : circBuf is not empty
Can someone throw a light on what might be probably going wrong or any way I can debug this ?