obs-av1.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // SPDX-FileCopyrightText: 2023 David Rosca <[email protected]>
  2. //
  3. // SPDX-License-Identifier: GPL-2.0-or-later
  4. #pragma once
  5. #include "util/c99defs.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. enum {
  10. OBS_OBU_SEQUENCE_HEADER = 1,
  11. OBS_OBU_TEMPORAL_DELIMITER = 2,
  12. OBS_OBU_FRAME_HEADER = 3,
  13. OBS_OBU_TILE_GROUP = 4,
  14. OBS_OBU_METADATA = 5,
  15. OBS_OBU_FRAME = 6,
  16. OBS_OBU_REDUNDANT_FRAME_HEADER = 7,
  17. OBS_OBU_TILE_LIST = 8,
  18. OBS_OBU_PADDING = 15,
  19. };
  20. enum av1_obu_metadata_type {
  21. METADATA_TYPE_HDR_CLL = 1,
  22. METADATA_TYPE_HDR_MDCV,
  23. METADATA_TYPE_SCALABILITY,
  24. METADATA_TYPE_ITUT_T35,
  25. METADATA_TYPE_TIMECODE,
  26. METADATA_TYPE_USER_PRIVATE_6
  27. };
  28. /* Helpers for parsing AV1 OB units. */
  29. EXPORT bool obs_av1_keyframe(const uint8_t *data, size_t size);
  30. EXPORT void obs_extract_av1_headers(const uint8_t *packet, size_t size,
  31. uint8_t **new_packet_data,
  32. size_t *new_packet_size,
  33. uint8_t **header_data, size_t *header_size);
  34. EXPORT void metadata_obu_itu_t35(const uint8_t *itut_t35_buffer,
  35. size_t itut_bufsize, uint8_t **out_buffer,
  36. size_t *outbuf_size);
  37. EXPORT void metadata_obu(const uint8_t *source_buffer, size_t source_bufsize,
  38. uint8_t **out_buffer, size_t *outbuf_size,
  39. uint8_t metadata_type);
  40. #ifdef __cplusplus
  41. }
  42. #endif