You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.5KB

  1. /*
  2. * Copyright (C) 2007 Marco Gerards <marco@gnu.org>
  3. * Copyright (C) 2009 David Conrad
  4. *
  5. * This file is part of Libav.
  6. *
  7. * Libav is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Lesser General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2.1 of the License, or (at your option) any later version.
  11. *
  12. * Libav is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public
  18. * License along with Libav; if not, write to the Free Software
  19. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20. */
  21. #ifndef AVCODEC_DIRAC_H
  22. #define AVCODEC_DIRAC_H
  23. /**
  24. * @file
  25. * Interface to Dirac Decoder/Encoder
  26. * @author Marco Gerards <marco@gnu.org>
  27. */
  28. #include "avcodec.h"
  29. typedef struct AVDiracSeqHeader {
  30. unsigned width;
  31. unsigned height;
  32. uint8_t chroma_format; ///< 0: 444 1: 422 2: 420
  33. uint8_t interlaced;
  34. uint8_t top_field_first;
  35. uint8_t frame_rate_index; ///< index into dirac_frame_rate[]
  36. uint8_t aspect_ratio_index; ///< index into dirac_aspect_ratio[]
  37. uint16_t clean_width;
  38. uint16_t clean_height;
  39. uint16_t clean_left_offset;
  40. uint16_t clean_right_offset;
  41. uint8_t pixel_range_index; ///< index into dirac_pixel_range_presets[]
  42. uint8_t color_spec_index; ///< index into dirac_color_spec_presets[]
  43. int profile;
  44. int level;
  45. AVRational framerate;
  46. AVRational sample_aspect_ratio;
  47. enum AVPixelFormat pix_fmt;
  48. enum AVColorRange color_range;
  49. enum AVColorPrimaries color_primaries;
  50. enum AVColorTransferCharacteristic color_trc;
  51. enum AVColorSpace colorspace;
  52. } AVDiracSeqHeader;
  53. /**
  54. * Parse a Dirac sequence header.
  55. *
  56. * @param dsh this function will allocate and fill an AVDiracSeqHeader struct
  57. * and write it into this pointer. The caller must free it with
  58. * av_free().
  59. * @param buf the data buffer
  60. * @param buf_size the size of the data buffer in bytes
  61. * @param log_ctx if non-NULL, this function will log errors here
  62. * @return 0 on success, a negative AVERROR code on failure
  63. */
  64. int av_dirac_parse_sequence_header(AVDiracSeqHeader **dsh,
  65. const uint8_t *buf, size_t buf_size,
  66. void *log_ctx);
  67. #endif /* AVCODEC_DIRAC_H */