示例#1
0
int
ServePacket(STREAMING_SERVER *server, RTMP *r, RTMPPacket *packet)
{
  int ret = 0;

  RTMP_Log(RTMP_LOGDEBUG, "%s, received packet type %02X, size %lu bytes", __FUNCTION__,
    packet->m_packetType, packet->m_nBodySize);

  switch (packet->m_packetType)
    {
    case 0x01:
      // chunk size
//      HandleChangeChunkSize(r, packet);
      break;

    case 0x03:
      // bytes read report
      break;

    case 0x04:
      // ctrl
//      HandleCtrl(r, packet);
      break;

    case 0x05:
      // server bw
//      HandleServerBW(r, packet);
      break;

    case 0x06:
      // client bw
 //     HandleClientBW(r, packet);
      break;

    case 0x08:
      // audio data
      //RTMP_Log(RTMP_LOGDEBUG, "%s, received: audio %lu bytes", __FUNCTION__, packet.m_nBodySize);
      break;

    case 0x09:
      // video data
      //RTMP_Log(RTMP_LOGDEBUG, "%s, received: video %lu bytes", __FUNCTION__, packet.m_nBodySize);
      break;

    case 0x0F:			// flex stream send
      break;

    case 0x10:			// flex shared object
      break;

    case 0x11:			// flex message
      {
	RTMP_Log(RTMP_LOGDEBUG, "%s, flex message, size %lu bytes, not fully supported",
	    __FUNCTION__, packet->m_nBodySize);
	//RTMP_LogHex(packet.m_body, packet.m_nBodySize);

	// some DEBUG code
	/*RTMP_LIB_AMFObject obj;
	   int nRes = obj.Decode(packet.m_body+1, packet.m_nBodySize-1);
	   if(nRes < 0) {
	   RTMP_Log(RTMP_LOGERROR, "%s, error decoding AMF3 packet", __FUNCTION__);
	   //return;
	   }

	   obj.Dump(); */

	if (ServeInvoke(server, r, packet, 1))
	  RTMP_Close(r);
	break;
      }
    case 0x12:
      // metadata (notify)
      break;

    case 0x13:
      /* shared object */
      break;

    case 0x14:
      // invoke
      RTMP_Log(RTMP_LOGDEBUG, "%s, received: invoke %lu bytes", __FUNCTION__,
	  packet->m_nBodySize);
      //RTMP_LogHex(packet.m_body, packet.m_nBodySize);

      if (ServeInvoke(server, r, packet, 0))
	RTMP_Close(r);
      break;

    case 0x16:
      /* flv */
	break;
    default:
      RTMP_Log(RTMP_LOGDEBUG, "%s, unknown packet type received: 0x%02x", __FUNCTION__,
	  packet->m_packetType);
#ifdef _DEBUG
      RTMP_LogHex(RTMP_LOGDEBUG, packet->m_body, packet->m_nBodySize);
#endif
    }
  return ret;
}
示例#2
0
int
ServePacket(STREAMING_SERVER *server, RTMP *r, RTMPPacket *packet)
{
	int ret = 0;

	RTMP_Log(RTMP_LOGDEBUG, "%s, received packet type %02X, size %u bytes", __FUNCTION__,
		packet->m_packetType, packet->m_nBodySize);

	switch (packet->m_packetType)
	{
	case RTMP_PACKET_TYPE_CHUNK_SIZE:
		//      HandleChangeChunkSize(r, packet);
		break;

	case RTMP_PACKET_TYPE_BYTES_READ_REPORT:
		break;

	case RTMP_PACKET_TYPE_CONTROL:
		//      HandleCtrl(r, packet);
		break;

	case RTMP_PACKET_TYPE_SERVER_BW:
		//      HandleServerBW(r, packet);
		break;

	case RTMP_PACKET_TYPE_CLIENT_BW:
		//     HandleClientBW(r, packet);
		break;

	case RTMP_PACKET_TYPE_AUDIO:
		//RTMP_Log(RTMP_LOGDEBUG, "%s, received: audio %lu bytes", __FUNCTION__, packet.m_nBodySize);
		break;

	case RTMP_PACKET_TYPE_VIDEO:
		//RTMP_Log(RTMP_LOGDEBUG, "%s, received: video %lu bytes", __FUNCTION__, packet.m_nBodySize);
		break;

	case RTMP_PACKET_TYPE_FLEX_STREAM_SEND:
		break;

	case RTMP_PACKET_TYPE_FLEX_SHARED_OBJECT:
		break;

	case RTMP_PACKET_TYPE_FLEX_MESSAGE:
	{
		RTMP_Log(RTMP_LOGDEBUG, "%s, flex message, size %u bytes, not fully supported",
			__FUNCTION__, packet->m_nBodySize);
		//RTMP_LogHex(packet.m_body, packet.m_nBodySize);

		// some DEBUG code
		/*RTMP_LIB_AMFObject obj;
		int nRes = obj.Decode(packet.m_body+1, packet.m_nBodySize-1);
		if(nRes < 0) {
		RTMP_Log(RTMP_LOGERROR, "%s, error decoding AMF3 packet", __FUNCTION__);
		//return;
		}

		obj.Dump(); */

		if (ServeInvoke(server, r, packet, 1))
			RTMP_Close(r);
		break;
	}
	case RTMP_PACKET_TYPE_INFO:
		break;

	case RTMP_PACKET_TYPE_SHARED_OBJECT:
		break;

	case RTMP_PACKET_TYPE_INVOKE:
		RTMP_Log(RTMP_LOGDEBUG, "%s, received: invoke %u bytes", __FUNCTION__,
			packet->m_nBodySize);
		//RTMP_LogHex(packet.m_body, packet.m_nBodySize);

		if (ServeInvoke(server, r, packet, 0))
			RTMP_Close(r);
		break;

	case RTMP_PACKET_TYPE_FLASH_VIDEO:
		break;
	default:
		RTMP_Log(RTMP_LOGDEBUG, "%s, unknown packet type received: 0x%02x", __FUNCTION__,
			packet->m_packetType);
#ifdef _DEBUG
		RTMP_LogHex(RTMP_LOGDEBUG, (const uint8_t*)packet->m_body, packet->m_nBodySize);
#endif
	}
	return ret;
}