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

📄 libasf.h

📁 video linux conference
💻 H
字号:
/***************************************************************************** * libasf.h : ***************************************************************************** * Copyright (C) 2001-2003 VideoLAN * $Id: libasf.h 10101 2005-03-02 16:47:31Z robux4 $ * Authors: Laurent Aimar <fenrir@via.ecp.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA. *****************************************************************************//***************************************************************************** * Structure needed for decoder *****************************************************************************/typedef struct guid_s{    uint32_t v1; /* le */    uint16_t v2; /* le */    uint16_t v3; /* le */    uint8_t  v4[8];} guid_t;enum{    ASF_OBJECT_NULL = 0,    ASF_OBJECT_ROOT,    ASF_OBJECT_HEADER,    ASF_OBJECT_DATA,    ASF_OBJECT_INDEX,    ASF_OBJECT_FILE_PROPERTIES,    ASF_OBJECT_STREAM_PROPERTIES,    ASF_OBJECT_HEADER_EXTENSION,    ASF_OBJECT_CODEC_LIST,    ASF_OBJECT_MARKER,    ASF_OBJECT_CONTENT_DESCRIPTION,    ASF_OBJECT_METADATA,    ASF_OBJECT_PADDING,    ASF_OBJECT_OTHER,};static const guid_t asf_object_null_guid ={    0x00000000,    0x0000,    0x0000,    { 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00 }};static const guid_t asf_object_header_guid ={0x75B22630, 0x668E, 0x11CF, {0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C}};static const guid_t asf_object_data_guid ={0x75B22636, 0x668E, 0x11CF, {0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C}};static const guid_t asf_object_index_guid ={0x33000890, 0xE5B1, 0x11CF, {0x89, 0xF4, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0xCB}};static const guid_t asf_object_file_properties_guid ={0x8cabdca1, 0xa947, 0x11cf, {0x8e, 0xe4, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};static const guid_t asf_object_stream_properties_guid ={0xB7DC0791, 0xA9B7, 0x11CF, {0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};static const guid_t asf_object_content_description_guid ={0x75B22633, 0x668E, 0x11CF, {0xa6, 0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c}};static const guid_t asf_object_header_extension_guid ={0x5FBF03B5, 0xA92E, 0x11CF, {0x8E, 0xE3, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};static const guid_t asf_object_metadata_guid ={0xC5F8CBEA, 0x5BAF, 0x4877, {0x84, 0x67, 0xAA, 0x8C, 0x44, 0xFA, 0x4C, 0xCA}};static const guid_t asf_object_codec_list_guid ={0x86D15240, 0x311D, 0x11D0, {0xA3, 0xA4, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6}};static const guid_t asf_object_marker_guid ={0xF487CD01, 0xA951, 0x11CF, {0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};static const guid_t asf_object_stream_type_audio ={0xF8699E40, 0x5B4D, 0x11CF, {0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B}};static const guid_t asf_object_stream_type_video ={0xbc19efc0, 0x5B4D, 0x11CF, {0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B}};static const guid_t asf_object_stream_type_command ={0x59DACFC0, 0x59E6, 0x11D0, {0xA3, 0xAC, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6}};/* TODO */static const guid_t asf_object_stream_bitrate_properties ={0x7BF875CE, 0x468D, 0x11D1, {0x8D, 0x82, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xB2}};static const guid_t asf_object_language_list ={0x7C4346A9, 0xEFE0, 0x4BFC, {0xB2, 0x29, 0x39, 0x3E, 0xDE, 0x41, 0x5C, 0x85}};static const guid_t asf_object_extended_stream_properties ={0x14E6A5CB, 0xC672, 0x4332, {0x83, 0x99, 0xA9, 0x69, 0x52, 0x06, 0x5B, 0x5A}};static const guid_t asf_object_advanced_mutual_exclusion ={0xA08649CF, 0x4775, 0x4670, {0x8A, 0x16, 0x6E, 0x35, 0x35, 0x75, 0x66, 0xCD}};static const guid_t asf_object_padding ={0x1806D474, 0xCADF, 0x4509, {0xA4, 0xBA, 0x9A, 0xAB, 0xCB, 0x96, 0xAA, 0xE8}};static const guid_t asf_object_stream_prioritization ={0xD4FED15B, 0x88D3, 0x454F, {0x81, 0xF0, 0xED, 0x5C, 0x45, 0x99, 0x9E, 0x24}};static const guid_t asf_object_extended_content_description ={0xD2D0A440, 0xE307, 0x11D2, {0x97, 0xF0, 0x00, 0xA0, 0xC9, 0x5E, 0xA8, 0x50}};#define ASF_OBJECT_COMMON          \    int          i_type;           \    guid_t       i_object_id;      \    uint64_t     i_object_size;    \    uint64_t     i_object_pos;     \    union asf_object_u *p_father;  \    union asf_object_u *p_first;   \    union asf_object_u *p_last;    \    union asf_object_u *p_next;typedef struct{    ASF_OBJECT_COMMON} asf_object_common_t;typedef struct{    uint32_t i_packet_number;    uint16_t i_packet_count;} asf_index_entry_t;/**************************************************************************** * High level asf object ****************************************************************************//* This is the first header find in a asf file * It's the only object that have subobject */typedef struct{    ASF_OBJECT_COMMON    uint32_t i_sub_object_count;    uint8_t  i_reserved1; /* 0x01, but could be safely ignored */    uint8_t  i_reserved2; /* 0x02, if not must failed to source the contain */} asf_object_header_t;typedef struct{    ASF_OBJECT_COMMON    guid_t      i_file_id;    uint64_t    i_total_data_packets;    uint16_t    i_reserved;} asf_object_data_t;typedef struct{    ASF_OBJECT_COMMON    guid_t      i_file_id;    uint64_t    i_index_entry_time_interval;    uint32_t    i_max_packet_count;    uint32_t    i_index_entry_count;    asf_index_entry_t *index_entry;} asf_object_index_t;/**************************************************************************** * Sub level asf object ****************************************************************************/#define ASF_FILE_PROPERTIES_BROADCAST   0x01#define ASF_FILE_PROPERTIES_SEEKABLE    0x02typedef struct{    ASF_OBJECT_COMMON    guid_t  i_file_id;    uint64_t     i_file_size;    uint64_t     i_creation_date;    uint64_t     i_data_packets_count;    uint64_t     i_play_duration;    uint64_t     i_send_duration;    uint64_t     i_preroll;    uint32_t     i_flags;    uint32_t     i_min_data_packet_size;    uint32_t     i_max_data_packet_size;    uint32_t     i_max_bitrate;} asf_object_file_properties_t;#define ASF_STREAM_PROPERTIES_ENCRYPTED 0x8000typedef struct{    ASF_OBJECT_COMMON    guid_t  i_stream_type;    guid_t  i_error_correction_type;    uint64_t     i_time_offset;    uint32_t     i_type_specific_data_length;    uint32_t     i_error_correction_data_length;    uint16_t     i_flags;        /* extrated from flags */        uint8_t i_stream_number;    uint32_t    i_reserved;    uint8_t     *p_type_specific_data;    uint8_t     *p_error_correction_data;} asf_object_stream_properties_t;typedef struct{    ASF_OBJECT_COMMON    guid_t      i_reserved1;    uint16_t    i_reserved2;    uint32_t    i_header_extension_size;    uint8_t     *p_header_extension_data;} asf_object_header_extension_t;#define ASF_METADATA_TYPE_STRING 0x0000#define ASF_METADATA_TYPE_BYTE   0x0001#define ASF_METADATA_TYPE_BOOL   0x0002#define ASF_METADATA_TYPE_DWORD  0x0003#define ASF_METADATA_TYPE_QWORD  0x0004#define ASF_METADATA_TYPE_WORD   0x0005typedef struct{    uint16_t    i_stream;    uint16_t    i_type;    char        *psz_name;    int64_t i_val;    int i_data;    uint8_t *p_data;} asf_metadata_record_t;typedef struct{    ASF_OBJECT_COMMON    uint32_t i_record_entries_count;    asf_metadata_record_t *record;} asf_object_metadata_t;typedef struct{    ASF_OBJECT_COMMON    char *psz_title;    char *psz_author;    char *psz_copyright;    char *psz_description;    char *psz_rating;} asf_object_content_description_t;typedef struct{    uint16_t i_length;    uint16_t *i_char;} string16_t;#define ASF_CODEC_TYPE_VIDEO    0x0001#define ASF_CODEC_TYPE_AUDIO    0x0002#define ASF_CODEC_TYPE_UNKNOW   0xfffftypedef struct{    uint16_t    i_type;    char        *psz_name;    char        *psz_description;    uint16_t    i_information_length;    uint8_t     *p_information;} asf_codec_entry_t;typedef struct{    ASF_OBJECT_COMMON    guid_t      i_reserved;    uint32_t    i_codec_entries_count;    asf_codec_entry_t *codec;} asf_object_codec_list_t;typedef struct{    uint64_t     i_offset;    uint64_t     i_presentation_time;    uint16_t     i_entry_length;    uint32_t     i_send_time;    uint32_t     i_flags;    uint32_t     i_marker_description_length;    uint8_t      *i_marker_description;} asf_marker_t;typedef struct{    ASF_OBJECT_COMMON    guid_t      i_reserved1;    uint32_t    i_count;    uint16_t    i_reserved2;    string16_t name;    asf_marker_t *marker;} asf_object_marker_t;typedef struct{    ASF_OBJECT_COMMON    int  i_language;    char **ppsz_language;} asf_object_language_list_t;typedef struct{    ASF_OBJECT_COMMON    int i_bitrate;    struct    {        int      i_stream_number;        uint32_t i_avg_bitrate;    } bitrate[128];} asf_object_stream_bitrate_properties_t;typedef struct{    ASF_OBJECT_COMMON    int64_t i_start_time;    int64_t i_end_time;    int32_t i_data_bitrate;    int32_t i_buffer_size;    int32_t i_initial_buffer_fullness;    int32_t i_alternate_data_bitrate;    int32_t i_alternate_buffer_size;    int32_t i_alternate_initial_buffer_fullness;    int32_t i_maximum_object_size;    int32_t i_flags;    int16_t i_stream_number;    int16_t i_language_index;    int64_t i_average_time_per_frame;    int     i_stream_name_count;    int     i_payload_extention_system_count;    int     *pi_stream_name_language;    char    **ppsz_stream_name;    asf_object_stream_properties_t *p_sp;} asf_object_extended_stream_properties_t;typedef struct{    ASF_OBJECT_COMMON    guid_t  type;    int16_t i_stream_number_count;    int16_t *pi_stream_number;} asf_object_advanced_mutual_exclusion_t;typedef struct{    ASF_OBJECT_COMMON    int i_priority_count;    int *pi_priority_flag;    int *pi_priority_stream_number;} asf_object_stream_prioritization_t;typedef struct{    ASF_OBJECT_COMMON    int i_count;    char **ppsz_name;    char **ppsz_value;} asf_object_extended_content_description_t;/**************************************************************************** * Special Root Object ****************************************************************************/typedef struct{    ASF_OBJECT_COMMON    asf_object_header_t *p_hdr;    asf_object_data_t   *p_data;    /* could be NULL if !b_seekable or not-present */    asf_object_index_t  *p_index;    /* from asf_object_header_t */    asf_object_file_properties_t *p_fp;    /* from asf_object_header_extension_t */    asf_object_metadata_t *p_metadata;} asf_object_root_t;/**************************************************************************** * asf_object_t: union of all objects. ****************************************************************************/typedef union asf_object_u{    asf_object_common_t common;    asf_object_header_t header;    asf_object_data_t   data;    asf_object_index_t  index;    asf_object_root_t   root;    asf_object_file_properties_t    file_properties;    asf_object_stream_properties_t  stream_properties;    asf_object_header_extension_t   header_extension;    asf_object_metadata_t           metadata;    asf_object_codec_list_t         codec_list;    asf_object_marker_t             marker;    asf_object_language_list_t      lang;    asf_object_stream_bitrate_properties_t stream_bitrate;    asf_object_extended_stream_properties_t ext_stream;} asf_object_t;void ASF_GetGUID( guid_t *p_guid, uint8_t *p_data );int  ASF_CmpGUID( const guid_t *p_guid1, const guid_t *p_guid2 );asf_object_root_t *ASF_ReadObjectRoot( stream_t *, int b_seekable );void               ASF_FreeObjectRoot( stream_t *, asf_object_root_t *p_root );#define ASF_CountObject( a, b ) __ASF_CountObject( (asf_object_t*)(a), b )int  __ASF_CountObject ( asf_object_t *p_obj, const guid_t *p_guid );#define ASF_FindObject( a, b, c )  __ASF_FindObject( (asf_object_t*)(a), b, c )void *__ASF_FindObject( asf_object_t *p_obj, const guid_t *p_guid, int i_number );

⌨️ 快捷键说明

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