| |
| /*! |
| ************************************************************************************** |
| * \file |
| * nalucommon.h |
| * \brief |
| * NALU handling common to encoder and decoder |
| * \author |
| * Main contributors (see contributors.h for copyright, address and affiliation details) |
| * - Stephan Wenger <stewe@cs.tu-berlin.de> |
| * - Karsten Suehring <suehring@hhi.de> |
| *************************************************************************************** |
| */ |
| |
| #ifndef _NALUCOMMON_H_ |
| #define _NALUCOMMON_H_ |
| |
| #define MAXRBSPSIZE 64000 |
| |
| //! values for nal_unit_type |
| typedef enum { |
| NALU_TYPE_SLICE = 1, |
| NALU_TYPE_DPA = 2, |
| NALU_TYPE_DPB = 3, |
| NALU_TYPE_DPC = 4, |
| NALU_TYPE_IDR = 5, |
| NALU_TYPE_SEI = 6, |
| NALU_TYPE_SPS = 7, |
| NALU_TYPE_PPS = 8, |
| NALU_TYPE_AUD = 9, |
| NALU_TYPE_EOSEQ = 10, |
| NALU_TYPE_EOSTREAM = 11, |
| NALU_TYPE_FILL = 12 |
| } NaluType; |
| |
| //! values for nal_ref_idc |
| typedef enum { |
| NALU_PRIORITY_HIGHEST = 3, |
| NALU_PRIORITY_HIGH = 2, |
| NALU_PRIRITY_LOW = 1, |
| NALU_PRIORITY_DISPOSABLE = 0 |
| } NalRefIdc; |
| |
| //! NAL unit structure |
| typedef struct |
| { |
| int startcodeprefix_len; //!< 4 for parameter sets and first slice in picture, 3 for everything else (suggested) |
| unsigned len; //!< Length of the NAL unit (Excluding the start code, which does not belong to the NALU) |
| unsigned max_size; //!< NAL Unit Buffer size |
| NaluType nal_unit_type; //!< NALU_TYPE_xxxx |
| NalRefIdc nal_reference_idc; //!< NALU_PRIORITY_xxxx |
| int forbidden_bit; //!< should be always FALSE |
| byte *buf; //!< contains the first byte followed by the EBSP |
| } NALU_t; |
| |
| //! allocate one NAL Unit |
| NALU_t *AllocNALU(int); |
| |
| //! free one NAL Unit |
| void FreeNALU(NALU_t *n); |
| |
| #endif |