|  
static void
rtp_recv_thread(void *arg)
{        LCD_PrintString2Terminal ("Start rcv thread\n", LCD_TERMINAL_NoNL,COLOR_RED, COLOR_YELLOW);
#define STREAM_PORT             2421
#define STREAM_ADDRESS          "237.0.0.0"
   
  int sock;
  struct sockaddr_in in_addr;   /* Structure used for bind() */
  struct sockaddr_in src_addr;    /* Used to receive (addr,port) of sender */
  int src_addr_len;   /* Length of src_addr */
  struct ip_mreq mreq;
  unsigned char buffer[32];
  LWIP_UNUSED_ARG(arg);
  /* create new socket */
    if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0){
    LCD_PrintString2Terminal ("unable to create socket\n", LCD_TERMINAL_NoNL,COLOR_RED, COLOR_YELLOW);
          vTaskDelete(NULL);
    }
LCD_PrintString2Terminal ("socket created\n", LCD_TERMINAL_NoNL,COLOR_RED, COLOR_YELLOW);
    memset(&in_addr, 0, sizeof(in_addr));   /* Zero out structure */
      /* prepare local address */
      in_addr.sin_family=AF_INET;
      in_addr.sin_addr.s_addr= htonl(INADDR_ANY);
      in_addr.sin_port=htons(STREAM_PORT);
      /* bind to local address */
      if (bind(sock, (struct sockaddr *)&in_addr, sizeof(in_addr))){
    LCD_PrintString2Terminal ("unable to bind\n", LCD_TERMINAL_NoNL,COLOR_RED, COLOR_YELLOW);
      vTaskDelete(NULL);
      }
LCD_PrintString2Terminal ("bind success\n", LCD_TERMINAL_NoNL,COLOR_RED, COLOR_YELLOW);
        // prepare multicast "ip_mreq" struct
        mreq.imr_multiaddr.s_addr = inet_addr(STREAM_ADDRESS);
        mreq.imr_interface.s_addr = htonl(INADDR_ANY);
         //join multicast group
        if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP,(char *) &mreq, sizeof(mreq))== -1)
          { LCD_PrintString2Terminal ("cant join mcast\n", LCD_TERMINAL_NoNL,COLOR_RED, COLOR_YELLOW);
                     //EXITS HERE~
          vTaskDelete(NULL);
          }
        LCD_PrintString2Terminal ("mcast join success\n", LCD_TERMINAL_NoNL,COLOR_RED, COLOR_YELLOW);
          /* receive RTP packets */
          while(1) { //Endless loop
          }
}
}
 |