Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * MPEG2 transport stream defines
  3.  * Copyright (c) 2003 Fabrice Bellard
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21.  
  22. #ifndef AVFORMAT_MPEGTS_H
  23. #define AVFORMAT_MPEGTS_H
  24.  
  25. #include "avformat.h"
  26.  
  27. #define TS_FEC_PACKET_SIZE 204
  28. #define TS_DVHS_PACKET_SIZE 192
  29. #define TS_PACKET_SIZE 188
  30. #define TS_MAX_PACKET_SIZE 204
  31.  
  32. #define NB_PID_MAX 8192
  33. #define MAX_SECTION_SIZE 4096
  34.  
  35. /* pids */
  36. #define PAT_PID                 0x0000
  37. #define SDT_PID                 0x0011
  38.  
  39. /* table ids */
  40. #define PAT_TID   0x00
  41. #define PMT_TID   0x02
  42. #define M4OD_TID  0x05
  43. #define SDT_TID   0x42
  44.  
  45. #define STREAM_TYPE_VIDEO_MPEG1     0x01
  46. #define STREAM_TYPE_VIDEO_MPEG2     0x02
  47. #define STREAM_TYPE_AUDIO_MPEG1     0x03
  48. #define STREAM_TYPE_AUDIO_MPEG2     0x04
  49. #define STREAM_TYPE_PRIVATE_SECTION 0x05
  50. #define STREAM_TYPE_PRIVATE_DATA    0x06
  51. #define STREAM_TYPE_AUDIO_AAC       0x0f
  52. #define STREAM_TYPE_AUDIO_AAC_LATM  0x11
  53. #define STREAM_TYPE_VIDEO_MPEG4     0x10
  54. #define STREAM_TYPE_VIDEO_H264      0x1b
  55. #define STREAM_TYPE_VIDEO_CAVS      0x42
  56. #define STREAM_TYPE_VIDEO_VC1       0xea
  57. #define STREAM_TYPE_VIDEO_DIRAC     0xd1
  58.  
  59. #define STREAM_TYPE_AUDIO_AC3       0x81
  60. #define STREAM_TYPE_AUDIO_DTS       0x8a
  61.  
  62. typedef struct MpegTSContext MpegTSContext;
  63.  
  64. MpegTSContext *ff_mpegts_parse_open(AVFormatContext *s);
  65. int ff_mpegts_parse_packet(MpegTSContext *ts, AVPacket *pkt,
  66.                            const uint8_t *buf, int len);
  67. void ff_mpegts_parse_close(MpegTSContext *ts);
  68.  
  69. typedef struct SLConfigDescr {
  70.     int use_au_start;
  71.     int use_au_end;
  72.     int use_rand_acc_pt;
  73.     int use_padding;
  74.     int use_timestamps;
  75.     int use_idle;
  76.     int timestamp_res;
  77.     int timestamp_len;
  78.     int ocr_len;
  79.     int au_len;
  80.     int inst_bitrate_len;
  81.     int degr_prior_len;
  82.     int au_seq_num_len;
  83.     int packet_seq_num_len;
  84. } SLConfigDescr;
  85.  
  86. typedef struct Mp4Descr {
  87.     int es_id;
  88.     int dec_config_descr_len;
  89.     uint8_t *dec_config_descr;
  90.     SLConfigDescr sl;
  91. } Mp4Descr;
  92.  
  93. /**
  94.  * Parse an MPEG-2 descriptor
  95.  * @param[in] fc                    Format context (used for logging only)
  96.  * @param st                        Stream
  97.  * @param stream_type               STREAM_TYPE_xxx
  98.  * @param pp                        Descriptor buffer pointer
  99.  * @param desc_list_end             End of buffer
  100.  * @return <0 to stop processing
  101.  */
  102. int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type,
  103.                               const uint8_t **pp, const uint8_t *desc_list_end,
  104.                               Mp4Descr *mp4_descr, int mp4_descr_count, int pid,
  105.                               MpegTSContext *ts);
  106.  
  107. #endif /* AVFORMAT_MPEGTS_H */
  108.