Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

79 linhas
1.8 KiB

  1. #include "XNetSDKTest.h"
  2. int CALLBACK Test_TalkCallBack(XSDK_HANDLE hMedia, const unsigned char *pData, int nDataLen, int nDataType, void *pDataInfo, int nDataInfoSize, void *pUserData)
  3. {
  4. if (EXSDK_DATA_FORMATE_FRAME == nDataType && nDataInfoSize > 0)
  5. {
  6. SXSDK_FRAME_INFO *pFrame = (SXSDK_FRAME_INFO *)pDataInfo;
  7. printf("Media[hMedia:%ld][Len:%d][Type:%d/%d/%d][%d-%d]\r\n", hMedia, nDataLen, pFrame->nType, pFrame->nSubType, pFrame->nEncodeType, pFrame->nBitsPerSample, pFrame->nSamplesPerSecond);
  8. }
  9. else if (EXSDK_DATA_MEDIA_ON_PLAY_STATE == nDataType)
  10. {
  11. printf("EXSDK_DATA_MEDIA_ON_PLAY_STATE[%d][%d]\r\n", hMedia, nDataLen);
  12. }
  13. else if (ESXSDK_MEDIA_START_REAL_PLAY == nDataType)
  14. {
  15. printf("OnRealPlayResult[%d][%s]\r\n", hMedia, nDataLen >= 0 ? "Success" : "Failed");
  16. }
  17. else
  18. {
  19. printf("Media[hMedia:%ld][Len:%d][Type:%d]\r\n", hMedia, nDataLen, nDataType);
  20. }
  21. return 0;
  22. }
  23. int TestDevTalk()
  24. {
  25. printf("%s\r\n", __FUNCTION__);
  26. XSDK_HANDLE hPlayer = 0;
  27. char c = 0;
  28. while((c = getchar()) != 'q')
  29. {
  30. switch(c)
  31. {
  32. case 's':
  33. {
  34. if (hPlayer)
  35. {
  36. XSDK_MediaStop(hPlayer);
  37. hPlayer = 0;
  38. }
  39. SXMediaTalkReq param = {0};
  40. param.nBitRate = 128;
  41. param.nSampleBit = 8;
  42. param.nSampleRate = 8000;
  43. strcpy((char *)param.nEncodeType, "G711_ALAW");
  44. param.nRequestType = EXSDK_DATA_FORMATE_FRAME;
  45. param.pMediaCallback = Test_TalkCallBack;
  46. hPlayer = XSDK_StartTalk(g_hDevice, &param);
  47. }
  48. break;
  49. case 't':
  50. {
  51. if (hPlayer)
  52. {
  53. XSDK_MediaStop(hPlayer);
  54. hPlayer = 0;
  55. }
  56. }
  57. break;
  58. default:
  59. {
  60. if (hPlayer)
  61. {
  62. char pcmData[320] = {0};
  63. memset(pcmData, 100, 320);
  64. XSDK_SendTalkData(hPlayer, pcmData, 320);
  65. }
  66. }
  67. }
  68. }
  69. if (hPlayer)
  70. {
  71. XSDK_MediaStop(hPlayer);
  72. hPlayer = 0;
  73. }
  74. return 0;
  75. }