h263vdec.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:8k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: h263vdec.h,v 1.1.1.1.42.1 2004/07/09 01:56:30 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. #ifndef __H263VDEC_H__
  50. #define __H263VDEC_H__
  51. #include "hxtypes.h"
  52. //#include "hxcodec.h"
  53. #if defined(_MSC_VER)
  54. ///////////////////////////////////
  55. //
  56. // Begin 1-byte structure alignment
  57. //
  58. ///////////////////////////////////
  59. // RealVideo front end files use 1-byte structure alignment under MSVC,
  60. // but the backend is compiled with 8-byte alignment.
  61. // This pragma keeps the structure alignment independent of compiler options,
  62. // for all structures declared in this file.
  63. #pragma pack(push, 1)
  64. #endif
  65. // Byte alignment settings for Mac
  66. #if defined( _MACINTOSH )
  67. #pragma options align=mac68k
  68. #endif
  69. #ifdef __cplusplus
  70. extern "C" { /* Assume C declarations for C++ */
  71. #endif /* __cplusplus */
  72. #define RV_DECODE_MORE_FRAMES        0x00000001
  73. #define RV_DECODE_DONT_DRAW          0x00000002
  74. #define RV_DECODE_KEY_FRAME 0x00000004
  75.     // Indicates that the decompressed image is a key frame.
  76.     // Note that enhancement layer EI frames are not key frames, in the
  77.     // traditional sense, because they have dependencies on lower layer
  78.     // frames.
  79. #define RV_DECODE_B_FRAME 0x00000008
  80.     // Indicates that the decompressed image is a B frame.
  81.     // At most one of PIA_DDN_KEY_FRAME and PIA_DDN_B_FRAME will be set.
  82. #ifndef TAG_HXCODEC_SEGMENTINFO
  83. #define TAG_HXCODEC_SEGMENTINFO
  84. typedef struct tag_HXCODEC_SEGMENTINFO
  85. {
  86. LONG32 bIsValid;
  87. ULONG32 ulSegmentOffset;
  88. } HXCODEC_SEGMENTINFO;
  89. #define HXCODEC_SEGMENTINFO_SIZE (8)
  90. #endif
  91. typedef struct tag_H263DecoderInParams
  92. {
  93. ULONG32 dataLength;
  94. LONG32 bInterpolateImage;
  95. ULONG32 numDataSegments;
  96. HXCODEC_SEGMENTINFO *pDataSegments;
  97. ULONG32 flags;
  98.         // 'flags' should be initialized by the front-end before each
  99.         // invocation to decompress a frame.  It is not updated by the decoder.
  100.         //
  101.         // If it contains RV_DECODE_MORE_FRAMES, it informs the decoder
  102.         // that it is being called to extract the second or subsequent
  103.         // frame that the decoder is emitting for a given input frame.
  104.         // The front-end should set this only in response to seeing
  105.         // an RV_DECODE_MORE_FRAMES indication in H263DecoderOutParams.
  106.         //
  107.         // If it contains RV_DECODE_DONT_DRAW, it informs the decoder
  108.         // that it should decode the image (in order to produce a valid
  109.         // reference frame for subsequent decoding), but that no image
  110.         // should be returned.  This provides a "hurry-up" mechanism.
  111. ULONG32 timestamp;
  112. } H263DecoderInParams;
  113. typedef struct tag_H263DecoderOutParams
  114. {
  115. ULONG32 numFrames;
  116. ULONG32 notes;
  117.         // 'notes' is assigned by the transform function during each call to
  118.         // decompress a frame.  If upon return the notes parameter contains
  119.         // the indication RV_DECODE_MORE_FRAMES, then the front-end
  120.         // should invoke the decoder again to decompress the same image.
  121.         // For this additional invocation, the front-end should first set
  122.         // the RV_DECODE_MORE_FRAMES bit in the 'H263DecoderInParams.flags'
  123.         // member, to indicate to the decoder that it is being invoked to
  124.         // extract the next frame.
  125.         // The front-end should continue invoking the decoder until the
  126.         // RV_DECODE_MORE_FRAMES bit is not set in the 'notes' member.
  127.         // For each invocation to decompress a frame in the same "MORE_FRAMES"
  128.         // loop, the front-end should send in the same input image.
  129.         //
  130.         // If the decoder has no frames to return for display, 'numFrames' will
  131.         // be set to zero.  To avoid redundancy, the decoder does *not* set
  132.         // the RV_DECODE_DONT_DRAW bit in 'notes' in this case.
  133. ULONG32 timestamp;
  134.         // The 'temporal_offset' parameter is used in conjunction with the
  135.         // RV_DECODE_MORE_FRAMES note, to assist the front-end in
  136.         // determining when to display each returned frame.
  137.         // If the decoder sets this to T upon return, the front-end should
  138.         // attempt to display the returned image T milliseconds relative to
  139.         // the front-end's idea of the presentation time corresponding to
  140.         // the input image.
  141.         // Be aware that this is a signed value, and will typically be
  142.         // negative.
  143. ULONG32 width;
  144. ULONG32 height;
  145. // Width and height of the returned frame.
  146. // This is the width and the height as signalled in the bitstream.
  147. } H263DecoderOutParams;
  148. typedef struct tagHXV10_INIT
  149. {
  150. UINT16 outtype;
  151. UINT16 pels;
  152. UINT16 lines;
  153. UINT16 nPadWidth; /* number of columns of padding on right to get 16 x 16 block*/
  154. UINT16 nPadHeight; /* number of rows of padding on bottom to get 16 x 16 block*/
  155. UINT16 pad_to_32;   // to keep struct member alignment independent of
  156.                     // compiler options
  157. ULONG32 ulInvariants;
  158.     // ulInvariants specifies the invariant picture header bits
  159. LONG32 packetization;
  160. ULONG32 ulStreamVersion;
  161. } HXV10_INIT;
  162. typedef HX_RESULT (HXEXPORT_PTR FPTRANSFORMINIT)(void * pH263Init,void **global);
  163. typedef HX_RESULT (HXEXPORT_PTR FPTRANSFORMFREE)(void *global);
  164. typedef HX_RESULT (HXEXPORT_PTR FPTRANSFORMHXV10TOYUV)(UCHAR *pH263Packets, 
  165. UCHAR *pDecodedFrameBuffer, void *pInputParams, 
  166. void *pOutputParams,void *global);
  167. HX_RESULT HXEXPORT HXVtoYUV420Transform(UCHAR *pRV10Packets, 
  168. UCHAR *pDecodedFrameBuffer, void *pInputParams, 
  169. void *pOutputParams,void *global);
  170. HX_RESULT HXEXPORT HXVtoYUV420Init(HXV10_INIT * pHxv10Init,void **global);
  171. HX_RESULT HXEXPORT HXVtoYUV420Free(void *global);
  172. #ifdef __cplusplus
  173. } /* Assume C declarations for C++ */
  174. #endif /* __cplusplus */
  175. #if defined(_MSC_VER)
  176. #pragma pack(pop)
  177. ///////////////////////////////////
  178. //
  179. // End 1-byte structure alignment
  180. //
  181. ///////////////////////////////////
  182. #endif
  183. // Byte alignment settings for Mac
  184. #if defined( _MACINTOSH )
  185. #pragma options align=reset
  186. #endif
  187. #endif // __H263VDEC_H__