Advertisement
Guest User

Untitled

a guest
Jan 16th, 2015
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. // Generate ADTS header (Fluendo)
  2. //
  3. // http://wiki.multimedia.cx/index.php?title=ADTS
  4. // http://wiki.multimedia.cx/?title=Understanding_AAC
  5. // http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio
  6. void GenerateADTS(int data_length)
  7. {
  8. int obj_type = 2 - 1; // AAC LC
  9.  
  10. int length = data_length + 7;
  11. int rate_idx = 0;
  12.  
  13. if (samplerate == 22050)
  14. rate_idx = 7;
  15. else if (samplerate == 44100)
  16. rate_idx = 4;
  17. else {
  18. fprintf(stderr, "[-] Unhandled sample rate %ld!\n", samplerate);
  19. exit(-1);
  20. }
  21.  
  22. memset(adts_header, 0, 7);
  23.  
  24. /* Sync point over a full byte */
  25. adts_header[0] = 0xFF;
  26. /* Sync point continued over first 4 bits + static 4 bits
  27. * (ID, layer, protection)*/
  28. adts_header[1] = 0xF1; // CRC is absent
  29. /* Object type over first 2 bits */
  30. adts_header[2] = obj_type << 6;
  31. /* rate index over next 4 bits */
  32. adts_header[2] |= (rate_idx << 2);
  33. /* channels over last 2 bits */
  34. adts_header[2] |= (channels & 0x4) >> 2;
  35. /* channels continued over next 2 bits + 4 bits at zero */
  36. adts_header[3] = (channels & 0x3) << 6;
  37. /* frame size over last 2 bits */
  38. adts_header[3] |= (length & 0x1800) >> 11;
  39. /* frame size continued over full byte */
  40. adts_header[4] = (length & 0x1FF8) >> 3;
  41. /* frame size continued first 3 bits */
  42. adts_header[5] = (length & 0x7) << 5;
  43. /* buffer fullness (0x7FF for VBR) over 5 last bits*/
  44. // adts_header[5] |= 0x1F;
  45. adts_header[5] |= 0x00; // CBR
  46. /* buffer fullness (0x7FF for VBR) continued over 6 first bits + 2 zeros for
  47. * number of raw data blocks */
  48. // adts_header[6] = 0xFC;
  49. adts_header[6] = 0x00; // CBR
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement