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

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 __MP4VDEC_H__
  34. #define __MP4VDEC_H__
  35. /****************************************************************************
  36.  *  Defines
  37.  */
  38. #define MAX_DECODE_QUALITY  100
  39. /****************************************************************************
  40.  *  Includes
  41.  */
  42. #include "mdpkt.h"
  43. #include "codeclib.h"
  44. /****************************************************************************
  45.  *  Globals
  46.  */
  47. class CMP4VideoFormat;
  48. /****************************************************************************
  49.  *  CMP4VDecoder
  50.  */
  51. class CMP4VDecoder
  52. {
  53. public:
  54.     CMP4VDecoder();
  55.     ~CMP4VDecoder();
  56.     HX_RESULT Init(IUnknown* pContext,
  57.    CMP4VideoFormat* pVideoFormat,
  58.    HXxSize* pSize,
  59.    IHX20MemoryAllocator* pInputAllocator,
  60.    IHX20MemoryAllocator* pOutputAllocator);
  61.     HX_RESULT Decode(CMediaPacket* pFrameToDeocde,
  62.      ULONG32 ulQuality);
  63.     HX_RESULT DecodeDone(HXCODEC_DATA* pData);
  64.     HX_RESULT GetImageInfo(HX_FORMAT_IMAGE &imageInfo);
  65.     
  66.     HX_RESULT Close(void);
  67.     static HX_RESULT STDMETHODCALLTYPE OnNewImage(HXSTREAM streamRef, 
  68.   HXSTREAM fromStreamRef,
  69.   HXCODEC_DATA *pData);
  70. protected:
  71.     HX_RESULT OpenCodec(HX_MOFTAG pmofTag);
  72.     HX_RESULT OpenStream(void);
  73.     virtual CRADynamicCodecLibrary* CreateCodecLibrary();
  74.     void SetCodecQuality(void);
  75.     HX_RESULT GetQualityPreference(UINT16 &usQuality);
  76.     IUnknown* m_pContext;
  77.     CMP4VideoFormat* m_pVideoFormat;
  78.     IHX20MemoryAllocator* m_pInputAllocator;
  79.     IHX20MemoryAllocator* m_pOutputAllocator;
  80.     CRADynamicCodecLibrary* m_pCodecLib;
  81.     HXCODEC m_pCodec;
  82.     HXSTREAM m_pStream;
  83.     char* m_pCodecId;
  84.     HX_MOFTAG m_moftagOut;
  85.     ULONG32 m_ulLastTimeStamp;
  86. };
  87. #endif // __MP4VDEC_H__