#ifndef _hls_media_h_ #define _hls_media_h_ #include #include #define HLS_FLAGS_KEYFRAME 0x8000 #ifdef __cplusplus extern "C" { #endif typedef struct hls_media_t hls_media_t; /// @param[in] param user-defined parameter(hls_media_create) /// @param[in] data ts file content /// @param[in] bytes ts file length in byte /// @param[in] pts ts file first pts/dts(ms) /// @param[in] dts ts file first pts/dts(ms) /// @param[in] duration file duration(ms) /// @return 0-ok, other-error typedef int (*hls_media_handler)(void* param, const void* data, size_t bytes, int64_t pts, int64_t dts, int64_t duration); /// param[in] duration ts segment duration(millisecond), 0-create segment per video key frame hls_media_t* hls_media_create(int64_t duration, hls_media_handler handler, void* param); void hls_media_destroy(hls_media_t* hls); /// @param[in] avtype audio/video type (mpeg-ps.h STREAM_VIDEO_XXX/STREAM_AUDIO_XXX) /// @param[in] data h264/h265 nalu with startcode(0x00000001), aac with adts /// @param[in] bytes data length in byte, NULL-force new segment /// @param[in] pts present timestamp in millisecond /// @param[in] dts decode timestamp in millisecond /// @param[in] flags HLS_FLAGS_XXX, such as HLS_FLAGS_KEYFRAME /// @return 0-ok, other-error int hls_media_input(hls_media_t* hls, int avtype, const void* data, size_t bytes, int64_t pts, int64_t dts, int flags); #ifdef __cplusplus } #endif #endif /* !_hls_media_h_*/