Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

34 строки
1.0KB

  1. #include "mov-internal.h"
  2. #include <assert.h>
  3. #include <stdlib.h>
  4. #include <errno.h>
  5. // extra_data: ISO/IEC 14496-15:2017 HEVCDecoderConfigurationRecord
  6. int mov_read_hvcc(struct mov_t* mov, const struct mov_box_t* box)
  7. {
  8. struct mov_track_t* track = mov->track;
  9. struct mov_sample_entry_t* entry = track->stsd.current;
  10. if (entry->extra_data_size < box->size)
  11. {
  12. void* p = realloc(entry->extra_data, (size_t)box->size);
  13. if (NULL == p) return -ENOMEM;
  14. entry->extra_data = p;
  15. }
  16. mov_buffer_read(&mov->io, entry->extra_data, (size_t)box->size);
  17. entry->extra_data_size = (int)box->size;
  18. return mov_buffer_error(&mov->io);
  19. }
  20. size_t mov_write_hvcc(const struct mov_t* mov)
  21. {
  22. const struct mov_track_t* track = mov->track;
  23. const struct mov_sample_entry_t* entry = track->stsd.current;
  24. mov_buffer_w32(&mov->io, entry->extra_data_size + 8); /* size */
  25. mov_buffer_write(&mov->io, "hvcC", 4);
  26. if (entry->extra_data_size > 0)
  27. mov_buffer_write(&mov->io, entry->extra_data, entry->extra_data_size);
  28. return entry->extra_data_size + 8;
  29. }