Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

63 lines
1.4KB

  1. #include "mpeg-proto.h"
  2. #include "mpeg-util.h"
  3. void pcr_write(uint8_t *ptr, int64_t pcr)
  4. {
  5. int64_t pcr_base = pcr / 300;
  6. int64_t pcr_ext = pcr % 300;
  7. ptr[0] = (pcr_base >> 25) & 0xFF;
  8. ptr[1] = (pcr_base >> 17) & 0xFF;
  9. ptr[2] = (pcr_base >> 9) & 0xFF;
  10. ptr[3] = (pcr_base >> 1) & 0xFF;
  11. ptr[4] = ((pcr_base & 0x01) << 7) | 0x7E | ((pcr_ext>>8) & 0x01);
  12. ptr[5] = pcr_ext & 0xFF;
  13. }
  14. int mpeg_stream_type_video(int codecid)
  15. {
  16. switch (codecid)
  17. {
  18. case PSI_STREAM_H264:
  19. case PSI_STREAM_H265:
  20. case PSI_STREAM_MPEG1:
  21. case PSI_STREAM_MPEG2:
  22. case PSI_STREAM_MPEG4:
  23. case PSI_STREAM_VIDEO_VC1:
  24. case PSI_STREAM_VIDEO_SVAC:
  25. case PSI_STREAM_VIDEO_DIRAC:
  26. case PSI_STREAM_VIDEO_CAVS:
  27. case PSI_STREAM_VP8:
  28. case PSI_STREAM_VP9:
  29. case PSI_STREAM_AV1:
  30. return 1;
  31. default:
  32. return 0;
  33. }
  34. }
  35. int mpeg_stream_type_audio(int codecid)
  36. {
  37. switch (codecid)
  38. {
  39. case PSI_STREAM_AAC:
  40. case PSI_STREAM_MPEG4_AAC:
  41. case PSI_STREAM_MPEG4_AAC_LATM:
  42. case PSI_STREAM_AUDIO_MPEG1:
  43. case PSI_STREAM_MP3:
  44. case PSI_STREAM_AUDIO_AC3:
  45. case PSI_STREAM_AUDIO_DTS:
  46. case PSI_STREAM_AUDIO_EAC3:
  47. case PSI_STREAM_AUDIO_SVAC:
  48. case PSI_STREAM_AUDIO_G711A:
  49. case PSI_STREAM_AUDIO_G711U:
  50. case PSI_STREAM_AUDIO_G722:
  51. case PSI_STREAM_AUDIO_G723:
  52. case PSI_STREAM_AUDIO_G729:
  53. case PSI_STREAM_AUDIO_OPUS:
  54. return 1;
  55. default:
  56. return 0;
  57. }
  58. }