MPEGDEF.H
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. //==========================================================================;
  2. //
  3. //  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  4. //  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  5. //  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  6. //  PURPOSE.
  7. //
  8. //  Copyright (c) 1996 - 1997  Microsoft Corporation.  All Rights Reserved.
  9. //
  10. //--------------------------------------------------------------------------;
  11. //
  12. /*
  13.     mpegdef.h
  14.     This file defines the externals for interfacing with MPEG
  15.     components
  16. */
  17. /*
  18.     MPEG constants
  19. */
  20. #define MPEG_TIME_DIVISOR (90000)
  21. #define MPEG_MAX_TIME ((LONGLONG)0x200000000)
  22. #define PICTURE_START_CODE       0x00000100
  23. #define USER_DATA_START_CODE     0x000001B2
  24. #define SEQUENCE_HEADER_CODE     0x000001B3
  25. #define SEQUENCE_ERROR_CODE      0x000001B4
  26. #define EXTENSION_START_CODE     0x000001B5
  27. #define SEQUENCE_END_CODE        0x000001B7
  28. #define GROUP_START_CODE         0x000001B8
  29. #define ISO_11172_END_CODE       0x000001B9
  30. #define PACK_START_CODE          0x000001BA
  31. #define SYSTEM_HEADER_START_CODE 0x000001BB
  32. #define PADDING_START_CODE       0x000001BE
  33. #define PACKET_START_CODE_MIN    0x000001BC
  34. #define PACKET_START_CODE_MAX    0x000001FF
  35. #define AUDIO_GLOBAL             0xB8
  36. #define VIDEO_GLOBAL             0xB9
  37. #define RESERVED_STREAM          0xBC
  38. #define PRIVATE_STREAM_1         0xBD
  39. #define PADDING_STREAM           0xBE
  40. #define PRIVATE_STREAM_2         0xBF
  41. #define AUDIO_STREAM             0xC0
  42. #define AUDIO_STREAM_MASK        0xE0
  43. #define VIDEO_STREAM             0xE0
  44. #define VIDEO_STREAM_MASK        0xF0
  45. #define DATA_STREAM              0xF0
  46. #define DATA_STREAM_MASK         0xF0
  47. /*  MPEG-2 stuff */
  48. #define PROGRAM_STREAM_DIRECTORY 0xFF
  49. #define PROGRAM_STREAM_MAP       0xBC
  50. #define ANCILLIARY_STREAM        0xF9
  51. #define ECM_STREAM               0xF0
  52. #define EMM_STREAM               0xF1
  53. #define VALID_PACKET(data)      (((data) >= PACKET_START_CODE_MIN)  
  54.                               && ((data) <= PACKET_START_CODE_MAX))
  55. #define VALID_SYSTEM_START_CODE(data)     
  56.        (VALID_PACKET(data)                
  57.     ||  (data) == SYSTEM_HEADER_START_CODE
  58.     ||  (data) == PACK_START_CODE         
  59.     ||  (data) == ISO_11172_END_CODE)
  60. /*  Types of stream */
  61. inline BOOL IsVideoStreamId(BYTE StreamId)
  62. {
  63.     return (StreamId & 0xF0) == 0xE0;
  64. } ;
  65. inline BOOL IsAudioStreamId(BYTE StreamId)
  66. {
  67.     return (StreamId & 0xE0) == 0xC0;
  68. } ;
  69. #define MAX_MPEG_PACKET_SIZE (65535+6)
  70. /*  Lengths of the various structures */
  71. #define PACK_HEADER_LENGTH 12
  72. #define SYSTEM_HEADER_BASIC_LENGTH 12
  73. inline DWORD DWORD_SWAP(DWORD x)
  74. {
  75.     return
  76.      ((DWORD)( ((x) << 24) | ((x) >> 24) |
  77.                (((x) & 0xFF00) << 8) | (((x) & 0xFF0000) >> 8)));
  78. }
  79. /*  Video definitions */
  80. /*  Frame types as defined in a picture header */
  81. #define I_Frame 1
  82. #define D_Frame 4
  83. #define P_Frame 2
  84. #define B_Frame 3