This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TIViddec2 not decoding over RTP



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 ?