📄 rmasfdemux.h
字号:
/***************************************** Copyright © 2001-2003 Sigma Designs, Inc. All Rights Reserved Proprietary and Confidential *****************************************//** @file rmasfdemux.h @brief Interface to an ASF demux. Typical use will be like this: 1. declare and allocate (struct asf_demux_state_t*) 2. call asf_demux_init 3. register the callbacks 4. call asf_demux as many times as you need to @author Pascal Cannenterre @date 2004-01-20*/#ifndef __RMASFDEMUX_H__#define __RMASFDEMUX_H__#include "../../rmcore/include/rmcore.h"#include "../../rmproperties/include/rmexternalproperties.h"#include "../../rmlibcw/include/rmfile.h"#ifndef RMVDEMUX_LOCAL_RMOBJECT#include "../../rmmpeg2_framework/include/rmdemuxbase.h"#endif // RMVDEMUX_LOCAL_RMOBJECT#include "../../rmcpputils/include/rmobject.h"#ifndef __ENUM_PAYLOADEXTENSIONSYSTEMID__#define __ENUM_PAYLOADEXTENSIONSYSTEMID__enum RMStandardASFPayloadExtensionSytemID { RMASFPayloadExtensionSystemPixelAspectRatio = 0x0001, RMASFPayloadExtensionSystemEncryptionSampleID = 0x0002, RMASFPayloadExtensionSystemTimecode = 0x0004, RMASFPayloadExtensionSystemFileName = 0x0008, RMASFPayloadExtensionSystemContentType = 0x0010, RMASFPayloadExtensionSystemSampleDuration = 0x0020, RMASFPayloadExtensionSystemDVRMSpts = 0x0040};#endif // __ENUM_PAYLOADEXTENSIONSYSTEMID__typedef void (*RMasfdemuxApplicationSpecificObjectCallback) ( void *context, RMuint8 GUID[16], RMuint8 *Name, RMuint8 *Data, RMuint64 Partial_Size, // bytes RMuint64 Size // bytes );typedef void (*RMasfdemuxFilePropertiesCallback) ( void *context, RMuint64 File_Size, // bytes (invalid if Broadcast) RMuint64 Creation_Date, // See MSDN Library RMuint64 Data_Packets_Count, // (invalid if Broadcast) RMuint64 Play_Duration, // 100-ns units (invalid if Broadcast) RMuint64 Send_Duration, // 100-ns units (invalid if Broadcast) RMuint64 Preroll, // milliseconds RMuint32 Minimum_Data_Packet_Size, // bytes RMuint32 Maximum_Data_Packet_Size, // bytes RMuint32 Maximum_Bitrate, // bits/s RMuint8 Broadcast, // boolean RMuint8 Seekable // boolean );typedef void (*RMasfdemuxStreamBitratePropertiesCallback) ( void *context, RMuint8 Stream_Number, // 1..127 RMuint32 Average_Bitrate // bits/s );typedef void (*RMasfdemuxVideoStreamPropertiesCallback) ( void *context, RMuint8 Stream_Number, // 1..127 RMuint32 Compression_ID, // See MSDN Library RMuint32 Image_Width, // pixels RMuint32 Image_Height, // pixels RMuint8 *Codec_Specific_Data, RMuint32 Partial_Codec_Specific_Data_Size, RMuint32 Codec_Specific_Data_Size // bytes );typedef void (*RMasfdemuxAudioStreamPropertiesCallback) ( void *context, RMuint8 Stream_Number, // 1..127 RMuint16 Codec_ID, // see MSDN Library RMuint16 Number_of_Channels, RMuint32 Samples_Per_Second, RMuint32 Average_Number_of_Bytes_Per_Second, RMuint16 Block_Alignment, RMuint16 Bits_Per_Sample, RMuint8 *Codec_Specific_Data, RMuint32 Partial_Codec_Specific_Data_Size, RMuint32 Codec_Specific_Data_Size // bytes );typedef void (*RMasfdemuxBitrateMutualExclusionCallback) ( void *context, RMuint32 mutex_index, RMuint16 Stream_Numbers_Count, RMuint8 bitrate_exclusion, // boolean RMuint8 Stream_Number // 1..127 );typedef void (*RMasfdemuxContentEncryptionCallback) ( void *context, RMuint8 *Secret_Data, RMuint32 Partial_Secret_Data_Length, RMuint32 Secret_Data_Length, RMuint8 *Key_ID, // ASCII char RMuint32 Partial_Key_ID_Length, RMuint32 Key_ID_Length, RMuint8 *License_URL, // ASCII char RMuint32 Partial_License_URL_Length, RMuint32 License_URL_Length );typedef void (*RMasfdemuxExtendedContentEncryptionCallback) ( void *context, RMuint8 *Data, RMuint32 Partial_Data_Size, RMuint32 Data_Size );typedef void (*RMasfdemuxPayloadExtensionSystemCallback) ( void *context, RMuint16 Stream_Number, RMuint32 Media_Object_Number, RMuint8 Media_Object_Number_valid, // boolean RMuint16 Payload_Extension_System_ID, // refers to enum RMStandardASFPayloadExtensionSystemID RMuint8 *Payload_Extension_System_Data, RMuint16 Partial_Payload_Extension_System_Data_Size, RMuint16 Payload_Extension_System_Data_Size, RMuint16 bytes_left );typedef void (*RMasfdemuxDigitalSignatureCallback) ( void *context, RMuint8 *Signature_Data, RMuint32 Partial_Signature_Data_Length, RMuint32 Signature_Data_Length );typedef void (*RMasfdemuxLanguageListCallback) ( void *context, RMuint16 Language_ID_Records_Count, RMuint16 Language_ID_Records_Index, RMuint8 *Language_ID, // handle as a WCHAR string RMuint8 Partial_Language_ID_Length, RMuint8 Language_ID_Length );typedef void (*RMasfdemuxExtendedStreamPropertiesCallback) ( void *context, RMuint16 Stream_Number, // 1..127 RMuint16 Stream_Language_ID_Index, RMuint16 Stream_Name_Count, // if 0 ignore all the following parameters RMuint16 Stream_Name_Count_Index, RMuint16 Language_ID_Index, // the "name" of the stream is also localized RMuint8 *Stream_Name, // handle as a WCHAR string RMuint16 Partial_Stream_Name_Length, RMuint16 Stream_Name_Length, RMuint16 Payload_Extension_System_Count,// number of payload extension systems for Stream_Number RMuint16 Payload_Extension_System_ID // refers to enum RMStandardASFPayloadExtensionSystemID );typedef void (*RMasfdemuxPayloadCallback) ( void *context, RMuint8 Stream_Number, // 1..127 RMuint8 *buf, RMuint32 size, // bytes RMuint32 bytes_left, // bytes of payload remaining RMuint8 Is_Key_Frame, // boolean RMuint32 Media_Object_Number, RMuint8 Media_Object_Number_valid, // boolean RMuint32 Presentation_Time, // milliseconds RMuint8 Presentation_Time_valid, // boolean RMuint32 Offset_Into_Media_Object // RMuint32 );typedef void (*RMasfdemuxSimpleIndexEntryCallback) ( void *context, RMuint8 simple_index_number, RMuint32 index_index, RMuint32 Index_Entries_Count, RMuint64 Index_Entry_Time_Interval, // 100-ns units RMuint32 Packet_Number, RMuint16 Packet_Count );typedef void (*RMasfdemuxIndexEntryCallback) ( void *context, RMuint8 phase_num, RMuint16 specifier_number, RMuint32 block_number, RMuint32 entry_number, RMuint32 index_entry_time_interval, // 100-ns units RMuint16 index_specifiers_count, RMuint32 index_block_count, RMuint16 stream_number, RMuint16 index_type, RMuint32 index_entry_count, RMuint64 position, RMuint32 offset );typedef void (*RMasfdemuxAspectRatioCallback) ( void *context, RMuint16 Stream_Num, RMuint32 aspectRatioX, RMuint32 aspectRatioY );typedef struct{ RMuint32 Packet_Number; RMuint16 Packet_Count;}typeSimpleIndexEntry;typedef struct { RMuint32 index_Entries_Count; RMuint64 index_Entry_Time_Interval; // 100-ns units typeSimpleIndexEntry *entry;}typeSimpleIndex;typedef struct{ RMuint16 stream_number; RMuint16 index_type;}typeIndexSpecifier;typedef struct{ RMuint32 entry_count; RMuint64 *position; RMuint32 **offset;}typedIndexBlock;typedef struct{ RMuint32 time_interval; RMuint16 specifier_count; RMuint32 block_count; typeIndexSpecifier *specifier; typedIndexBlock *block;}typeIndex;#define _INDEXTYPE_DEFINED_ 1#define MAX_INDEX_NUMBER 10#define APP_SPEC_OBJ_CB 1#define FILE_PROP_CB (1<<1)#define STREAM_BITRATE_PROP_CB (1<<2)#define VIDEO_PROP_CB (1<<3)#define AUDIO_PROP_CB (1<<4)#define BITRATE_MUTEX_CB (1<<5)#define DRM_CB (1<<6)#define EXT_DRM_CB (1<<7)#define PAYLOAD_EXT_CB (1<<8)#define DIGITAL_SIGNATURE_CB (1<<9)#define LANG_LIST_CB (1<<10)#define EXT_PROP_CB (1<<11)#define PAYLOAD_CB (1<<12)#define SIMPLE_INDEX_CB (1<<13)#define INDEX_CB (1<<14)#define ASPECT_RATIO_CB (1<<15)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -