📄 rmasfdemux.h
字号:
class RMasfdemux : public RMobject{ public: RMasfdemux (); virtual ~RMasfdemux (); /** Should be called before any call to Demux (). @param callback @param context */ virtual void SetCallbacks ( RMasfdemuxApplicationSpecificObjectCallback appspecobjcb, RMasfdemuxFilePropertiesCallback filepropcb, RMasfdemuxStreamBitratePropertiesCallback streambitratepropcb, RMasfdemuxVideoStreamPropertiesCallback videostreampropcb, RMasfdemuxAudioStreamPropertiesCallback audiostreampropcb, RMasfdemuxBitrateMutualExclusionCallback bitratemutexcb, RMasfdemuxContentEncryptionCallback drmcb, RMasfdemuxExtendedContentEncryptionCallback extdrmcb, RMasfdemuxPayloadExtensionSystemCallback payloadextcb, RMasfdemuxDigitalSignatureCallback signaturecb, RMasfdemuxLanguageListCallback languagecb, RMasfdemuxExtendedStreamPropertiesCallback extstreampropcb, RMasfdemuxPayloadCallback payloadcb, RMasfdemuxSimpleIndexEntryCallback simpleindexentrycb, RMasfdemuxIndexEntryCallback indexentrycb, RMasfdemuxAspectRatioCallback aspectratiocb); /** Must be called to reset the demux' state, when changing the decoding bitstream. @param context */ virtual void Reset (void * context); virtual void ResetStateWithPacket(RMuint32 packet); virtual void Init (void * context); virtual void SetStreamingBehavior(); virtual void ResetState (void); /** Demuxes the data. @param buffer @param length */ virtual void Demux (RMuint8 *buffer, RMuint32 length); virtual RMstatus ConstructIndex (RMnonAscii *fileName, RMuint32 *packetSize, RMuint64 *header_size); virtual RMstatus ConstructIndexWithHandle (RMfile filehandle, RMuint32 *packetSize, RMuint64 *header_size); virtual RMstatus SeekToPacket(RMnonAscii *fileName, RMuint32 packetNum); virtual void RegisterCallbacks(); virtual void ActivateCallbacks(RMuint32 mask); virtual void DeactivateCallbacks(RMuint32 mask); virtual void MaskToCallbackName(RMuint32 mask); /* local index callbacks, they require a local context */ static void simpleIndexLOCALcb(void *context, RMuint8 simple_index_number, RMuint32 index_index, RMuint32 Index_Entries_Count, RMuint64 Index_Entry_Time_Interval, RMuint32 Packet_Number, RMuint16 Packet_Count); static void indexLOCALcb(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); /* all other callbacks have to be hooked in order to do the context switch (between the local one and the application's one) */ static void payloadLOCALcb( void *context, RMuint8 Stream_Number, RMuint8 *buf, RMuint32 size, RMuint32 bytes_left, RMuint8 Is_Key_Frame, RMuint32 Media_Object_Number, RMuint8 Media_Object_Number_valid, RMuint32 Presentation_Time, RMuint8 Presentation_Time_valid, RMuint32 Offset_Into_Media_Object); static void audiopropLOCALcb(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 static void filepropLOCALcb(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 static void videopropLOCALcb(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 static void drmLOCALcb(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); static void languagelistLOCALcb(void *context, RMuint16 Language_ID_Records_Count, RMuint16 Language_ID_Records_Index, RMuint8 *Language_ID, RMuint8 Partial_Language_ID_Length, RMuint8 Language_ID_Length); static void extpropLOCALcb( void *context, RMuint16 Stream_Number, RMuint16 Stream_Language_ID_Index, RMuint16 Stream_Name_Count, RMuint16 Stream_Name_Count_Index, RMuint16 Language_ID_Index, // for the string of the language name RMuint8 *Stream_Name, 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 Standard_Payload_Extension_Sytem_ID ); static void aspectRatioLOCALcb(void *context, RMuint16 Stream_Num, RMuint32 aspectRatioX, RMuint32 aspectRatioY); static void appSpecObjLOCALcb (void *context, RMuint8 GUID[16], RMuint8 *Name, RMuint8 *Data, RMuint64 Partial_Size, // bytes RMuint64 Size); // bytes static void streamBitratePropLOCALcb(void *context, RMuint8 Stream_Number, // 1..127 RMuint32 Average_Bitrate); // bits/s static void bitrateMutualExclusionLOCALcb(void *context, RMuint32 mutex_index, RMuint16 Stream_Numbers_Count, RMuint8 bitrate_exclusion, // boolean RMuint8 Stream_Number); // 1..127 static void extContentEncryptionLOCALcb(void *context, RMuint8 *Data, RMuint32 Partial_Data_Size, RMuint32 Data_Size); static void payloadExtensionLOCALcb(void *context, RMuint16 Stream_Number, RMuint32 Media_Object_Number, RMuint8 Media_Object_Number_valid, // boolean RMuint16 Payload_Extension_System_ID, RMuint8 *Payload_Extension_System_Data, RMuint16 Partial_Payload_Extension_System_Data_Size, RMuint16 Payload_Extension_System_Data_Size, RMuint16 bytes_left); static void digitalSignatureLOCALcb(void *context, RMuint8 *Signature_Data, RMuint32 Partial_Signature_Data_Length, RMuint32 Signature_Data_Length); virtual RMuint64 SeekToTime(RMuint32 time_ms, RMuint32 *seekingToPacket, RMuint64 *seekingToTime); virtual RMuint64 AlternateSeekToTime(RMuint32 time_ms, RMuint32 *seekingToPacket, RMuint64 *seekingToTime); virtual RMstatus GetNextIFrame(RMuint64 *position); virtual RMstatus GetNextIFrameSIZE(RMuint32 *size); virtual RMstatus GetNextIFramePacket(RMuint32 *packet); virtual RMstatus InitTrickMode(RMuint64 *position); virtual RMstatus SetTrickModeDirection(RMint32 dir); /* need to be public, because it's read by rmasfdemuxnode to know if it has to decrypt packets */ RMbool m_encryptedContent; RMint32 m_drmError; RMbool m_DRMPreventsPlayback; private: void *m_asf_demux_state; void *m_context; void *m_localContext; RMasfdemuxApplicationSpecificObjectCallback m_appspecobjcb; RMasfdemuxFilePropertiesCallback m_filepropcb; RMasfdemuxStreamBitratePropertiesCallback m_streambitratepropcb; RMasfdemuxVideoStreamPropertiesCallback m_videostreampropcb; RMasfdemuxAudioStreamPropertiesCallback m_audiostreampropcb; RMasfdemuxBitrateMutualExclusionCallback m_bitratemutexcb; RMasfdemuxContentEncryptionCallback m_drmcb; RMasfdemuxExtendedContentEncryptionCallback m_extdrmcb; RMasfdemuxPayloadExtensionSystemCallback m_payloadextcb; RMasfdemuxDigitalSignatureCallback m_signaturecb; RMasfdemuxLanguageListCallback m_languagecb; RMasfdemuxExtendedStreamPropertiesCallback m_extstreampropcb; RMasfdemuxPayloadCallback m_payloadcb; RMasfdemuxSimpleIndexEntryCallback m_simpleindexentrycb; RMasfdemuxIndexEntryCallback m_indexentrycb; RMasfdemuxAspectRatioCallback m_aspectratiocb; RMbool m_isIndexConstructed; RMuint32 m_packetSize; RMuint64 m_header_Object_Size; typeSimpleIndex m_simpleIndex[MAX_INDEX_NUMBER]; typeIndex m_index; RMuint32 m_numberOfIndex; RMbool m_usingLocalContext; RMuint32 m_activeCallbacks; RMuint32 m_registeredCallbacks; RMbool m_initentrynum; RMint32 m_ASFindexNum; RMbool m_isFileSeekable; RMint32 m_trickModeDirection; RMuint32 m_followingIFramePacket; RMuint32 m_followingIFramePacketSize; RMbool m_localIndex; RMbool m_isThereAnIndex; RMuint64 m_preroll; RMuint64 m_duration; RMuint32 m_lastIFrame; RMbool m_audioStreamFound; RMbool m_videoStreamFound; RMbool m_isAudioOnly; RMuint32 m_audioBYTERate; RMuint64 m_fileSize; RMint64 m_realFileSize; RMuint64 m_packetCount; RMbool m_Broadcast; };#endif // __RMASFDEMUX_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -