mp4vdfmt.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:4k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0 and Exhibits. 
  3.  * REALNETWORKS CONFIDENTIAL--NOT FOR DISTRIBUTION IN SOURCE CODE FORM 
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. 
  5.  * All Rights Reserved. 
  6.  * 
  7.  * The contents of this file, and the files included with this file, are 
  8.  * subject to the current version of the RealNetworks Community Source 
  9.  * License Version 1.0 (the "RCSL"), including Attachments A though H, 
  10.  * all available at http://www.helixcommunity.org/content/rcsl. 
  11.  * You may also obtain the license terms directly from RealNetworks. 
  12.  * You may not use this file except in compliance with the RCSL and 
  13.  * its Attachments. There are no redistribution rights for the source 
  14.  * code of this file. Please see the applicable RCSL for the rights, 
  15.  * obligations and limitations governing use of the contents of the file. 
  16.  * 
  17.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  18.  * developer of the Original Code and owns the copyrights in the portions 
  19.  * it created. 
  20.  * 
  21.  * This file, and the files included with this file, is distributed and made 
  22.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  23.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  24.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  25.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  26.  * 
  27.  * Technology Compatibility Kit Test Suite(s) Location: 
  28.  * https://rarvcode-tck.helixcommunity.org 
  29.  * 
  30.  * Contributor(s): 
  31.  * 
  32.  * ***** END LICENSE BLOCK ***** */ 
  33. #ifndef __MP4VDFMT_H__
  34. #define __MP4VDFMT_H__
  35. /****************************************************************************
  36.  *  Defines
  37.  */
  38. #define MP4V_PIXEL_SIZE 12
  39. #define MP4V_PIXEL_FORMAT  HX_I420
  40. /****************************************************************************
  41.  *  Includes
  42.  */
  43. #include "vidrendf.h"
  44. #include "hxformt.h"
  45. #include "mp4vpyld.h"
  46. #include "mp4vdec.h"
  47. /****************************************************************************
  48.  *  Globals
  49.  */
  50. class CMP4VideoRenderer;
  51. /****************************************************************************
  52.  *  CMP4VideoFormat
  53.  */
  54. class CMP4VideoFormat : public CVideoFormat
  55. {
  56. public:
  57.     /*
  58.      * Constructor/Destructor
  59.      */
  60.     CMP4VideoFormat(IHXCommonClassFactory* pCommonClassFactory,
  61.     CMP4VideoRenderer* pMP4VideoRenderer,
  62.     BOOL bSecure = FALSE);
  63.     virtual ~CMP4VideoFormat();
  64.     
  65.     /*
  66.      * Public and Customizable functionality - derived
  67.      */
  68.     virtual HX_RESULT Init(IHXValues* pHeader);
  69.     
  70.     virtual void Reset(void);
  71.     virtual HX_RESULT InitBitmapInfoHeader(HXBitmapInfoHeader &bitmapInfoHeader,
  72.    CMediaPacket* pVideoPacket);
  73.     virtual BOOL IsBitmapFormatChanged(HXBitmapInfoHeader &BitmapInfoHeader,
  74.        CMediaPacket* pVideoPacket);
  75.     virtual ULONG32 GetDefaultPreroll(IHXValues* pValues);
  76.     /*
  77.      * Public, Custom functionality
  78.      */
  79.     HX_RESULT DecodeDone(HXCODEC_DATA* pData);
  80.     ULONG32 GetBitstreamHeaderSize(void);
  81.     const UINT8* GetBitstreamHeader(void);
  82.     ULONG32 m_ulMaxDecodedFrames;
  83.     CMP4VideoRenderer* m_pMP4VideoRenderer;
  84.     
  85. protected:
  86.     /*
  87.      * Protected but Customizable functionality - derived
  88.      */
  89.     virtual CMediaPacket* CreateAssembledPacket(IHXPacket* pCodecData);
  90.     virtual CMediaPacket* CreateDecodedPacket(CMediaPacket* pFrameToDecode);
  91.     virtual CMP4VDecoder* CreateDecoder();
  92.     virtual void ProcessAssembledFrame(CMediaPacket* pAssembledFrame) {};
  93. private:
  94.     static void KillMP4VSampleDesc(void* pSampleDesc, void* pUserData);
  95.     static void KillInputBuffer(void* pBuffer, void* pUserData);
  96.     static void KillOutputBuffer(void* pBuffer, void* pUserData);
  97.     HX_RESULT CreateAllocators(void);
  98.     void _Reset(void);
  99.     inline void ReleaseDecodedPacket(HXCODEC_DATA* pDecodedData);
  100.     MP4VPayloadFormat* m_pRssm;
  101.     CHXBufferMemoryAllocator* m_pInputAllocator;
  102.     HXCODEC_DATA m_DecodedPacket;
  103.     HXxSize m_DecoderDims;
  104. protected:
  105.     CMP4VDecoder* m_pDecoder;
  106. };
  107. #endif // __MP4VDFMT_H__