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

📄 genprofile_lib.h

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 H
字号:
//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName:            GenProfile_lib.h
//
// Abstract:            The header file which contains the structures and
//                      functions used by the library to create a profile
//
//*****************************************************************************


#ifndef __GENPROFILE_H__
#define __GENPROFILE_H__

#include <wmsdk.h>
#include "ff_wmv9.h"

#define MAX_DATA_UNIT_EXTENSIONS 5 // An arbitrarily chosen maximum for the number of data unit extensions


//
// Enumeration of the different kinds of streams
//
enum StreamType
{
 ST_Unknown,		               // Unknown stream type
 ST_Audio,                   // Audio stream
 ST_Video,                   // Video stream
 ST_Script,                  // Script stream
 ST_Image,                   // Image stream
 ST_Web,                     // Web stream
 ST_File,                    // File stream
 ST_Arbitrary                // Arbitrary data stream
};

enum MUTEX_TYPE
{
 MT_Bitrate,                 // Exclude the streams based on bitrate
 MT_Language,                // Exclude the streams based on language
 MT_Presentation             // Exclude the streams based on the presentation format (for example, different aspect ratios)
};


/*
** Methods helpful in creation of a profile
*/
///////////////////////////////////////////////////////////////////////////////
class Twmv9dll;
STDMETHODIMP EnsureIWMCodecInfo3(  Twmv9dll *dll,IWMCodecInfo3** ppCodecInfo3 );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP SetCodecVBRSettings( IWMCodecInfo3* pCodecInfo3, GUID guidCodecType, DWORD dwCodecIndex, BOOL bIsVBR, DWORD dwVBRPasses );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP SetStreamLanguage( IWMStreamConfig * pStreamConfig, LCID dwLanguage );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateUncompressedAudioMediaType(  WM_MEDIA_TYPE** ppmtMediaType,
  DWORD dwSamplesPerSecond,
  WORD wNumChannels,
  WORD wBitsPerSample );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateVideoMediaType(  Twmv9dll *dll,
                                    WM_MEDIA_TYPE** ppmtMediaType,
                                    IWMCodecInfo3* pCodecInfo3,
                                    DWORD dwCodecIndex,
                                    double dwFPS,
                                    DWORD dwWidth,
                                    DWORD dwHeight,
                                    DWORD dwBitrate,
                                    BOOL bIsVBR,
                                    DWORD dwNumberOfPasses );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateUncompressedVideoMediaType(  WM_MEDIA_TYPE** ppmtMediaType,
  GUID guidFormat,
  DWORD dwFourCC,
  WORD wBitsPerPixel,
  BYTE* pbPaletteData,
  DWORD cbPaletteDataSize,
  DWORD dwFPS,
  DWORD dwWidth,
  DWORD dwHeight );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateScriptMediaType( WM_MEDIA_TYPE** ppmtMediaType );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateImageMediaType( WM_MEDIA_TYPE** ppmtMediaType, DWORD dwBitrate, DWORD dwWidth, DWORD dwHeight );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateWebMediaType( WM_MEDIA_TYPE** ppmtMediaType );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateFileMediaType( WM_MEDIA_TYPE** ppmtMediaType );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateMediatypeForFormat( Twmv9dll *dll,
                                       WM_MEDIA_TYPE** ppmtDestination,
                                       IWMCodecInfo3* pCodecInfo,
                                       IWMStreamConfig** ppFormatConfig,
                                       GUID guidStreamType,
                                       DWORD dwCodecIndex,
                                       DWORD dwFormatIndex );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateMediatypeForFormat( Twmv9dll *dll,
                                       WM_MEDIA_TYPE** ppmtDestination,
                                       IWMCodecInfo3* pCodecInfo3,
                                       IWMStreamConfig** ppFormatConfig,
                                       GUID guidCodecType,
                                       DWORD dwCodecIndex,
                                       DWORD dwFormatIndex,
                                       BOOL bIsVBR,
                                       DWORD dwVBRPasses );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CreateVideoStream( Twmv9dll *dll,
                                IWMStreamConfig** ppStreamConfig,
                                IWMCodecInfo3* pCodecInfo3,
                                IWMProfile *pProfile,
                                DWORD dwCodecIndex,
                                DWORD dwBitrate,
                                DWORD dwBufferWindow,
                                DWORD dwWidth,
                                DWORD dwHeight,
                                double dFPS,
                                DWORD dwQuality,
                                DWORD dwSecPerKey,
                                BOOL fIsVBR,
                                VIDEO_VBR_MODE vbrMode,
                                DWORD dwVBRQuality,
                                DWORD dwMaxBitrate,
                                DWORD dwMaxBufferWindow,
                                LCID dwLanguage );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP WriteProfileAsPRX( LPCTSTR tszFilename, LPCWSTR wszProfileData, DWORD dwProfileDataLength );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP AddSMPTEExtensionToStream( IWMStreamConfig* pStream );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP GetUncompressedWaveFormatCount( DWORD * pdwCount );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP GetUncompressedWaveFormat( DWORD dwIndex,
                                        DWORD * pdwSamplesPerSecond,
                                        WORD * pwNumChannels,
                                        WORD * pwBitsPerSample );


///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP GetUncompressedPixelFormatCount( DWORD * pdwCount );

///////////////////////////////////////////////////////////////////////////////
STDMETHODIMP GetUncompressedPixelFormat( DWORD dwIndex,
  GUID * pguidFormat,
  DWORD * pdwFourCC,
  WORD * pwBitsPerPixel );

#endif

⌨️ 快捷键说明

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