2222#ifndef DE265_H
2323#define DE265_H
2424
25- #ifdef __cplusplus
26- extern "C" {
27- #endif
2825
2926#include <libde265/de265-version.h>
3027
@@ -66,6 +63,11 @@ extern "C" {
6663#define LIBDE265_INLINE inline
6764#endif
6865
66+ #include "de265-error.h"
67+ #include "vps.h"
68+ #include "pps.h"
69+ #include "sps.h"
70+
6971/* === version numbers === */
7072
7173// version of linked libde265 library
@@ -77,67 +79,7 @@ LIBDE265_API int de265_get_version_number_minor(void);
7779LIBDE265_API int de265_get_version_number_maintenance (void );
7880
7981
80- /* === error codes === */
81-
82- typedef enum {
83- DE265_OK = 0 ,
84- DE265_ERROR_NO_SUCH_FILE = 1 ,
85- //DE265_ERROR_NO_STARTCODE=2, obsolet
86- //DE265_ERROR_EOF=3,
87- DE265_ERROR_COEFFICIENT_OUT_OF_IMAGE_BOUNDS = 4 ,
88- DE265_ERROR_CHECKSUM_MISMATCH = 5 ,
89- DE265_ERROR_CTB_OUTSIDE_IMAGE_AREA = 6 ,
90- DE265_ERROR_OUT_OF_MEMORY = 7 ,
91- DE265_ERROR_CODED_PARAMETER_OUT_OF_RANGE = 8 ,
92- DE265_ERROR_IMAGE_BUFFER_FULL = 9 ,
93- DE265_ERROR_CANNOT_START_THREADPOOL = 10 ,
94- DE265_ERROR_LIBRARY_INITIALIZATION_FAILED = 11 ,
95- DE265_ERROR_LIBRARY_NOT_INITIALIZED = 12 ,
96- DE265_ERROR_WAITING_FOR_INPUT_DATA = 13 ,
97- DE265_ERROR_CANNOT_PROCESS_SEI = 14 ,
98- DE265_ERROR_PARAMETER_PARSING = 15 ,
99- DE265_ERROR_NO_INITIAL_SLICE_HEADER = 16 ,
100- DE265_ERROR_PREMATURE_END_OF_SLICE = 17 ,
101- DE265_ERROR_UNSPECIFIED_DECODING_ERROR = 18 ,
102-
103- // --- errors that should become obsolete in later libde265 versions ---
104-
105- //DE265_ERROR_MAX_THREAD_CONTEXTS_EXCEEDED = 500, obsolet
106- //DE265_ERROR_MAX_NUMBER_OF_SLICES_EXCEEDED = 501, obsolet
107- DE265_ERROR_NOT_IMPLEMENTED_YET = 502 ,
108- //DE265_ERROR_SCALING_LIST_NOT_IMPLEMENTED = 502, obsolet
109-
110- // --- warnings ---
111-
112- DE265_WARNING_NO_WPP_CANNOT_USE_MULTITHREADING = 1000 ,
113- DE265_WARNING_WARNING_BUFFER_FULL = 1001 ,
114- DE265_WARNING_PREMATURE_END_OF_SLICE_SEGMENT = 1002 ,
115- DE265_WARNING_INCORRECT_ENTRY_POINT_OFFSET = 1003 ,
116- DE265_WARNING_CTB_OUTSIDE_IMAGE_AREA = 1004 ,
117- DE265_WARNING_SPS_HEADER_INVALID = 1005 ,
118- DE265_WARNING_PPS_HEADER_INVALID = 1006 ,
119- DE265_WARNING_SLICEHEADER_INVALID = 1007 ,
120- DE265_WARNING_INCORRECT_MOTION_VECTOR_SCALING = 1008 ,
121- DE265_WARNING_NONEXISTING_PPS_REFERENCED = 1009 ,
122- DE265_WARNING_NONEXISTING_SPS_REFERENCED = 1010 ,
123- DE265_WARNING_BOTH_PREDFLAGS_ZERO = 1011 ,
124- DE265_WARNING_NONEXISTING_REFERENCE_PICTURE_ACCESSED = 1012 ,
125- DE265_WARNING_NUMMVP_NOT_EQUAL_TO_NUMMVQ = 1013 ,
126- DE265_WARNING_NUMBER_OF_SHORT_TERM_REF_PIC_SETS_OUT_OF_RANGE = 1014 ,
127- DE265_WARNING_SHORT_TERM_REF_PIC_SET_OUT_OF_RANGE = 1015 ,
128- DE265_WARNING_FAULTY_REFERENCE_PICTURE_LIST = 1016 ,
129- DE265_WARNING_EOSS_BIT_NOT_SET = 1017 ,
130- DE265_WARNING_MAX_NUM_REF_PICS_EXCEEDED = 1018 ,
131- DE265_WARNING_INVALID_CHROMA_FORMAT = 1019 ,
132- DE265_WARNING_SLICE_SEGMENT_ADDRESS_INVALID = 1020 ,
133- DE265_WARNING_DEPENDENT_SLICE_WITH_ADDRESS_ZERO = 1021 ,
134- DE265_WARNING_NUMBER_OF_THREADS_LIMITED_TO_MAXIMUM = 1022 ,
135- DE265_NON_EXISTING_LT_REFERENCE_CANDIDATE_IN_SLICE_HEADER = 1023 ,
136- DE265_WARNING_CANNOT_APPLY_SAO_OUT_OF_MEMORY = 1024 ,
137- DE265_WARNING_SPS_MISSING_CANNOT_DECODE_SEI = 1025 ,
138- DE265_WARNING_COLLOCATED_MOTION_VECTOR_OUTSIDE_IMAGE_AREA = 1026
139- } de265_error ;
140-
82+ /* === error code management === */
14183LIBDE265_API const char * de265_get_error_text (de265_error err );
14284
14385/* Returns true, if 'err' is DE265_OK or a warning.
@@ -387,6 +329,20 @@ enum de265_param {
387329 //DE265_DECODER_PARAM_DISABLE_INTRA_RESIDUAL_IDCT=10 // (bool) disable decoding of IDCT residuals in MC blocks
388330};
389331
332+ /* --- callback --- */
333+ struct de265_callback_block
334+ {
335+ void (* get_vps )(video_parameter_set * vps );
336+ void (* get_sps )(seq_parameter_set * sps );
337+ void (* get_pps )(pic_parameter_set * pps );
338+ void (* get_image )(de265_image * img );
339+ };
340+ LIBDE265_API void de265_callback_register (de265_decoder_context * , de265_callback_block * );
341+ LIBDE265_API void de265_callback_unregister (de265_decoder_context * );
342+
343+ /* The user data pointer will be given to the get_buffer() and release_buffer() functions
344+ in de265_image_allocation. */
345+
390346// sorted such that a large ID includes all optimizations from lower IDs
391347enum de265_acceleration {
392348 de265_acceleration_SCALAR = 0 , // only fallback implementation
@@ -430,8 +386,5 @@ LIBDE265_API de265_error de265_init(void);
430386LIBDE265_API de265_error de265_free (void );
431387
432388
433- #ifdef __cplusplus
434- }
435- #endif
436389
437390#endif
0 commit comments