⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 .#input.h.1.20

📁 vlc stand 0.1.99 ist sehr einfach
💻 20
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************** * input.h: input thread interface ***************************************************************************** * Copyright (C) 1999, 2000 VideoLAN * * Authors: * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. *  * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA. *****************************************************************************//***************************************************************************** * Constants related to input *****************************************************************************/#define TS_PACKET_SIZE      188                       /* size of a TS packet */#define PES_HEADER_SIZE     14     /* size of the first part of a PES header */#define PSI_SECTION_SIZE    4096            /* Maximum size of a PSI section *//***************************************************************************** * ts_packet_t ***************************************************************************** * Describe a TS packet. *****************************************************************************/typedef struct ts_packet_s{    /* Nothing before this line, the code relies on that */    byte_t                  buffer[TS_PACKET_SIZE];    /* raw TS data packet */    /* Decoders information */    unsigned int            i_payload_start;                                  /* start of the PES payload in this packet */    unsigned int            i_payload_end;                    /* guess ? :-) */    /* Used to chain the TS packets that carry data for a same PES or PSI */    struct ts_packet_s      *  p_prev_ts;    struct ts_packet_s      *  p_next_ts;} ts_packet_t;/***************************************************************************** * pes_packet_t ***************************************************************************** * Describes an PES packet, with its properties, and pointers to the TS packets * containing it. *****************************************************************************/typedef struct pes_packet_s{    /* PES properties */    boolean_t               b_data_loss;  /* The previous (at least) PES packet           * has been lost. The decoders will have to find a way to recover. */    boolean_t               b_data_alignment;  /* used to find the beginning of                                                * a video or audio unit      */    boolean_t               b_has_pts;       /* is the following field set ? */    mtime_t                 i_pts; /* the PTS for this packet (if set above) */    boolean_t               b_random_access;            /* if TRUE, in the payload of this packet, there is the first byte             * of a video sequence header, or the first byte of an audio frame.             */    u8                      i_stream_id;              /* payload type and id */    int                     i_pes_size;    /* size of the current PES packet */    int                     i_pes_real_size;      /* real size of the current                                                   * PES packet, ie. the one                                                   * announced in the header */    int                     i_ts_packets;/* number of TS packets in this PES */    /* Demultiplexer environment */    boolean_t               b_discard_payload;  /* is the packet messed up ? */    byte_t *                p_pes_header;       /* pointer to the PES header */    byte_t *                p_pes_header_save;           /* temporary buffer */    /* Pointers to TS packets (TS packets are then linked by the p_prev_ts and       p_next_ts fields of the ts_packet_t struct) */    ts_packet_t *           p_first_ts;   /* The first TS packet containing this                                           * PES (used by decoders). */    ts_packet_t *           p_last_ts; /* The last TS packet gathered at present                                        * (used by the demultiplexer). */} pes_packet_t;/***************************************************************************** * psi_section_t ***************************************************************************** * Describes a PSI section. Beware, it doesn't contain pointers to the TS * packets that contain it as for a PES, but the data themselves *****************************************************************************/typedef struct psi_section_s{    byte_t        buffer[PSI_SECTION_SIZE];    boolean_t     b_running_section;   /* Is there a section being decoded ? */    u16 i_length;    u16 i_current_position;} psi_section_t;/***************************************************************************** * es_descriptor_t: elementary stream descriptor ***************************************************************************** * Describes an elementary stream, and includes fields required to handle and * demultiplex this elementary stream. *****************************************************************************/typedef struct es_descriptor_t{    u16                     i_id;           /* stream ID, PID for TS streams */    u8                      i_type;                           /* stream type */    boolean_t               b_pcr;        /* does the stream include a PCR ? */    /* XXX?? b_pcr will be replaced by something else: since a PCR can't be shared     * between several ES, we will probably store the PCR fields directly here,     * and one of those fields will probably (again) be used as a test of the     * PCR presence */    boolean_t               b_psi;  /* does the stream have to be handled by the                                                                PSI decoder ? */    /* Markers */    int                     i_continuity_counter;    boolean_t               b_discontinuity;    boolean_t               b_random;    /* PES packets */    pes_packet_t *          p_pes_packet;                                      /* current PES packet we are gathering */    /* PSI packets */    psi_section_t *         p_psi_section;          /* idem for a PSI stream */    /* Decoder informations */    void *                  p_dec;     /* p_dec is void *, since we don't know a                                        * priori whether it is adec_thread_t or                                        * vdec_thread_t. We will use explicit                                        * casts. */    /* XXX?? video stream descriptor ? */    /* XXX?? audio stream descriptor ? */    /* XXX?? hierarchy descriptor ? */    /* XXX?? target background grid descriptor ? */    /* XXX?? video window descriptor ? */    /* XXX?? ISO 639 language descriptor ? */#ifdef STATS    /* Stats */    count_t                 c_bytes;                     /* total bytes read */    count_t                 c_payload_bytes;/* total of payload useful bytes */    count_t                 c_packets;                 /* total packets read */    count_t                 c_invalid_packets;       /* invalid packets read */    /* XXX?? ... other stats */#endif} es_descriptor_t;/* Special PID values - note that the PID is only on 13 bits, and that values * greater than 0x1fff have no meaning in a stream */#define PROGRAM_ASSOCIATION_TABLE_PID   0x0000#define CONDITIONNAL_ACCESS_TABLE_PID   0x0001                   /* not used */#define EMPTY_PID                       0xffff    /* empty record in a table *//* ES streams types - see ISO/IEC 13818-1 table 2-29 numbers */#define MPEG1_VIDEO_ES          0x01#define MPEG2_VIDEO_ES          0x02#define MPEG1_AUDIO_ES          0x03#define MPEG2_AUDIO_ES          0x04#define AC3_AUDIO_ES            0x81#define DVD_SPU_ES             0x82           /* 0x82 might violate the norm *//***************************************************************************** * program_descriptor_t ***************************************************************************** * Describes a program and list associated elementary streams. It is build by * the PSI decoder upon the informations carried in program map sections *****************************************************************************/typedef struct{    /* Program characteristics */    u16                     i_number;                      /* program number */    u8                      i_version;                     /* version number */    boolean_t               b_is_ok;       /* Is the description up to date ?*/    u16                     i_pcr_pid;                             /* PCR ES */    int i_es_number;    es_descriptor_t **      ap_es;                /* array of pointers to ES */#ifdef DVB_EXTENSIONS    /* Service Descriptor (program name) */    u8                      i_srv_type;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -