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

📄 media_dev.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 / Media 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_MEDIA_DEV_H_#define _GF_MEDIA_DEV_H_#include <gpac/media_tools.h>GF_Err gf_import_message(GF_MediaImporter *import, GF_Err e, char *format, ...);/*returns 0 if not a start code, or size of start code (3 or 4 bytes). If start code, bitstreamis positionned AFTER start code*/u32 AVC_IsStartCode(GF_BitStream *bs);/*returns size of chunk between current and next startcode (excluding startcode sizes), 0 if no more startcodes (eos)*/u32 AVC_NextStartCode(GF_BitStream *bs);/*returns NAL unit type - bitstream must be sync'ed!!*/u8 AVC_NALUType(GF_BitStream *bs);/*slice NALU*/Bool AVC_NALUIsSlice(u8 type);typedef struct{    s32 profile_idc;    s32 level_idc;    s32 prof_compat;    s32 log2_max_frame_num;    u32 poc_type, poc_cycle_length;    s32 log2_max_poc_lsb;    s32 delta_pic_order_always_zero_flag;	s32 offset_for_non_ref_pic, offset_for_top_to_bottom_field;	Bool frame_mbs_only_flag;    s16 offset_for_ref_frame[256];    s32 timing_info_present_flag;    u32 num_units_in_tick;    u32 time_scale;    s32 fixed_frame_rate_flag;	u32 width, height;	u32 par_num, par_den;	/*used to discard repeated SPSs - 0: not parsed, 1 parsed, 2 sent*/	u32 status;} AVC_SPS;typedef struct {    s32 sps_id;    s32 pic_order_present;      /* pic_order_present_flag*/    s32 redundant_pic_cnt_present; /* redundant_pic_cnt_present_flag */    int slice_group_count;      /* num_slice_groups_minus1 + 1*/	/*used to discard repeated SPSs - 0: not parsed, 1 parsed, 2 sent*/	u32 status;} AVC_PPS;typedef struct{	u8 nal_ref_idc, nal_unit_type, field_pic_flag, bottom_field_flag;	u32 frame_num, idr_pic_id, poc_lsb, slice_type;	s32 delta_poc_bottom;	s32 delta_poc[2];	s32 redundant_pic_cnt;	s32 poc;	u32 poc_msb, poc_msb_prev, poc_lsb_prev, frame_num_prev;	s32 frame_num_offset, frame_num_offset_prev;	AVC_SPS *sps;	AVC_PPS *pps;} AVCSliceInfo;typedef struct {	u32 frame_cnt;	u8 exact_match_flag;	u8 broken_link_flag;	u8 changing_slice_group_idc;	u8 valid;} AVCSeiRecoveryPoint;typedef struct {	AVCSeiRecoveryPoint recovery_point;	/*to be eventually completed by other sei*/} AVCSei;typedef struct{	AVC_SPS sps[32];	AVC_PPS pps[255];	AVCSliceInfo s_info;	AVCSei sei;} AVCState;/*return sps ID or -1 if error*/s32 AVC_ReadSeqInfo(GF_BitStream *bs, AVCState *avc, u32 *vui_flag_pos);/*return pps ID or -1 if error*/s32 AVC_ReadPictParamSet(GF_BitStream *bs, AVCState *avc);/*is slice a RAP*/Bool AVC_SliceIsIDR(AVCState *avc);/*parses NALU, updates avc state and returns:	1 if NALU part of new frame	0 if NALU part of prev frame	-1 if bitstream error*/s32 AVC_ParseNALU(GF_BitStream *bs, u32 nal_hdr, AVCState *avc);/*remove SEI messages not allowed in MP4*/u32 AVC_ReformatSEI_NALU(char *buffer, u32 nal_size, AVCState *avc);GF_Err AVC_ChangePAR(GF_AVCConfig *avcc, s32 ar_n, s32 ar_d);typedef struct{	u8 rate_idx;	u8 pck_size;} QCPRateTable;#endif		/*_GF_MEDIA_DEV_H_*/

⌨️ 快捷键说明

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