/* * Copyright (C) Roman Arutyunyan */ #ifndef _NGX_RTMP_CODEC_H_INCLUDED_ #define _NGX_RTMP_CODEC_H_INCLUDED_ #include #include #include "ngx_rtmp.h" /* Audio codecs */ enum { /* Uncompressed codec id is actually 0, * but we use another value for consistency */ NGX_RTMP_AUDIO_UNCOMPRESSED = 16, NGX_RTMP_AUDIO_ADPCM = 1, NGX_RTMP_AUDIO_MP3 = 2, NGX_RTMP_AUDIO_LINEAR_LE = 3, NGX_RTMP_AUDIO_NELLY16 = 4, NGX_RTMP_AUDIO_NELLY8 = 5, NGX_RTMP_AUDIO_NELLY = 6, NGX_RTMP_AUDIO_G711A = 7, NGX_RTMP_AUDIO_G711U = 8, NGX_RTMP_AUDIO_AAC = 10, NGX_RTMP_AUDIO_SPEEX = 11, NGX_RTMP_AUDIO_MP3_8 = 14, NGX_RTMP_AUDIO_DEVSPEC = 15, }; /* Video codecs */ enum { NGX_RTMP_VIDEO_JPEG = 1, NGX_RTMP_VIDEO_SORENSON_H263 = 2, NGX_RTMP_VIDEO_SCREEN = 3, NGX_RTMP_VIDEO_ON2_VP6 = 4, NGX_RTMP_VIDEO_ON2_VP6_ALPHA = 5, NGX_RTMP_VIDEO_SCREEN2 = 6, NGX_RTMP_VIDEO_H264 = 7 }; u_char * ngx_rtmp_get_audio_codec_name(ngx_uint_t id); u_char * ngx_rtmp_get_video_codec_name(ngx_uint_t id); typedef struct { ngx_uint_t width; ngx_uint_t height; double duration; double frame_rate; double video_data_rate; double video_keyframe_frequency; ngx_uint_t video_codec_id; double audio_data_rate; ngx_uint_t audio_codec_id; ngx_uint_t aac_profile; ngx_uint_t aac_chan_conf; ngx_uint_t aac_sbr; ngx_uint_t aac_ps; ngx_uint_t avc_profile; ngx_uint_t avc_compat; ngx_uint_t avc_level; ngx_uint_t avc_nal_bytes; ngx_uint_t avc_ref_frames; ngx_uint_t sample_rate; /* 5512, 11025, 22050, 44100 */ ngx_uint_t sample_size; /* 1=8bit, 2=16bit */ ngx_uint_t audio_channels; /* 1, 2 */ u_char profile[32]; u_char level[32]; ngx_chain_t *avc_header; ngx_chain_t *aac_header; ngx_chain_t *meta; ngx_uint_t meta_version; } ngx_rtmp_codec_ctx_t; extern ngx_module_t ngx_rtmp_codec_module; #endif /* _NGX_RTMP_LIVE_H_INCLUDED_ */