⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avparse.h

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 H
字号:
/* *			GPAC - Multimedia Framework C SDK * *			Copyright (c) Jean Le Feuvre 2000-2005  *					All rights reserved * *  This file is part of GPAC / Authoring Tools sub-project * *  GPAC is free software; you can redistribute it and/or modify *  it under the terms of the GNU Lesser General Public License as published by *  the Free Software Foundation; either version 2, or (at your option) *  any later version. *    *  GPAC is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU Lesser General Public License for more details. *    *  You should have received a copy of the GNU Lesser General Public *  License along with this library; see the file COPYING.  If not, write to *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  * */#ifndef _GF_PARSERS_AV_H_#define _GF_PARSERS_AV_H_#ifdef __cplusplusextern "C" {#endif#include <gpac/bitstream.h>/*basic MPEG (1,2,4) visual object parser (DSI extraction and timing/framing)*/typedef struct{	/*video PL*/	u8 VideoPL;	u8 RAP_stream, objectType, has_shape, enh_layer;	/*video resolution*/	u16 width, height;	/*pixel aspect ratio*/	u8 par_num, par_den;	u16 clock_rate;	u8 NumBitsTimeIncrement;	u32 time_increment;	/*for MPEG 1/2*/	Double fps;} GF_M4VDecSpecInfo;typedef struct __tag_m4v_parser GF_M4VParser;GF_M4VParser *gf_m4v_parser_new(char *data, u32 data_size, Bool mpeg12video);GF_M4VParser *gf_m4v_parser_bs_new(GF_BitStream *bs, Bool mpeg12video);void gf_m4v_parser_del(GF_M4VParser *m4v);GF_Err gf_m4v_parse_config(GF_M4VParser *m4v, GF_M4VDecSpecInfo *dsi);/*get a frame (can contain GOP). The parser ALWAYS resync on the next object in the bitstreamthus you can seek the bitstream to copy the payload without re-seeking it */GF_Err gf_m4v_parse_frame(GF_M4VParser *m4v, GF_M4VDecSpecInfo dsi, u8 *frame_type, u32 *time_inc, u32 *size, u32 *start, Bool *is_coded);/*returns current object start in bitstream*/u32 gf_m4v_get_object_start(GF_M4VParser *m4v);/*returns 1 if current object is a valid MPEG-4 Visual object*/Bool gf_m4v_is_valid_object_type(GF_M4VParser *m4v);/*returns readable description of profile*/const char *gf_m4v_get_profile_name(u8 video_pl);/*decodes DSI*/GF_Err gf_m4v_get_config(char *rawdsi, u32 rawdsi_size, GF_M4VDecSpecInfo *dsi);/*rewrites PL code in DSI*/void gf_m4v_rewrite_pl(char **io_dsi, u32 *io_dsi_len, u8 PL);/*rewrites PAR code in DSI. Negative values will remove the par*/GF_Err gf_m4v_rewrite_par(char **o_data, u32 *o_dataLen, s32 par_n, s32 par_d);/*MP3 tools*/u8 gf_mp3_num_channels(u32 hdr);u16 gf_mp3_sampling_rate(u32 hdr);u16 gf_mp3_window_size(u32 hdr);u16 gf_mp3_bit_rate(u32 hdr);u8 gf_mp3_object_type_indication(u32 hdr);u8 gf_mp3_layer(u32 hdr);u8 gf_mp3_version(u32 hdr);const char *gf_mp3_version_name(u32 hdr);u16 gf_mp3_frame_size(u32 hdr);u32 gf_mp3_get_next_header(FILE* in);u32 gf_mp3_get_next_header_mem(char *buffer, u32 size, u32 *pos);/*vorbis tools*/typedef struct{	u32 sample_rate, channels, version;	s32 max_r, avg_r, low_r;	u32 min_block, max_block;	/*do not touch, parser private*/	Bool is_init;	u32 modebits;	Bool mode_flag[64];} GF_VorbisParser;/*call with vorbis header packets - you MUST initialize the structure to 0 before!!returns 1 if success, 0 if error.*/Bool gf_vorbis_parse_header(GF_VorbisParser *vp, char *data, u32 data_len);/*returns 0 if init error or not a vorbis frame, otherwise returns the number of audio samplesin this frame*/u32 gf_vorbis_check_frame(GF_VorbisParser *vp, char *data, u32 data_length);enum{    GF_M4A_AAC_MAIN = 1,    GF_M4A_AAC_LC = 2,    GF_M4A_AAC_SSR = 3,    GF_M4A_AAC_LTP = 4,    GF_M4A_AAC_SBR = 5,    GF_M4A_AAC_SCALABLE = 6,    GF_M4A_TWINVQ = 7,    GF_M4A_CELP = 8,     GF_M4A_HVXC = 9,    GF_M4A_TTSI = 12,    GF_M4A_MAIN_SYNTHETIC = 13,    GF_M4A_WAVETABLE_SYNTHESIS = 14,    GF_M4A_GENERAL_MIDI = 15,    GF_M4A_ALGO_SYNTH_AUDIO_FX = 16,    GF_M4A_ER_AAC_LC = 17,    GF_M4A_ER_AAC_LTP = 19,    GF_M4A_ER_AAC_SCALABLE = 20,    GF_M4A_ER_TWINVQ = 21,    GF_M4A_ER_BSAC = 22,    GF_M4A_ER_AAC_LD = 23,    GF_M4A_ER_CELP = 24,    GF_M4A_ER_HVXC = 25,    GF_M4A_ER_HILN = 26,    GF_M4A_ER_PARAMETRIC = 27,    GF_M4A_SSC = 28,    GF_M4A_PS = 29,    GF_M4A_LAYER1 = 32,    GF_M4A_LAYER2 = 33,    GF_M4A_LAYER3 = 34,    GF_M4A_DST = 35,    GF_M4A_ALS = 36,};static const u32 GF_M4ASampleRates[] ={    96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 	16000, 12000, 11025, 8000, 7350, 0, 0, 0};/*get Audio type from dsi. return audio codec type:*/typedef struct{	u32 nb_chan;	u32 base_object_type, base_sr, base_sr_index;	/*SBR*/	Bool has_sbr;	u32 sbr_object_type, sbr_sr, sbr_sr_index;	/*PL indication*/	u8 audioPL;} GF_M4ADecSpecInfo;/*parses dsi and updates audioPL*/GF_Err gf_m4a_get_config(char *dsi, u32 dsi_size, GF_M4ADecSpecInfo *cfg);/*gets audioPL for given cfg*/u32 gf_m4a_get_profile(GF_M4ADecSpecInfo *cfg);const char *gf_m4a_object_type_name(u32 objectType);const char *gf_m4a_get_profile_name(u8 audio_pl);typedef struct{	u32 bitrate;	u32 sample_rate;	u32 framesize;	u32 channels;} GF_AC3Header;Bool gf_ac3_parser(u8 *buffer, u32 buffer_size, u32 *pos, GF_AC3Header *out_hdr);/*gets image size (bs must contain the whole image) @OTI: image type (JPEG=0x6C, PNG=0x6D)@width, height: image resolution - for jpeg max size if thumbnail included*/void gf_img_parse(GF_BitStream *bs, u8 *OTI, u32 *mtype, u32 *width, u32 *height, char **dsi, u32 *dsi_len);GF_Err gf_avc_get_sps_info(char *sps, u32 sps_size, u32 *width, u32 *height, s32 *par_n, s32 *par_d);const char *gf_avc_get_profile_name(u8 video_prof);#ifdef __cplusplus}#endif#endif	/*_GF_PARSERS_AV_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -