Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/VLC/modules/access/   (VLC Media Plyer ©)  Datei vom 23.9.2026 mit Größe 5 kB image not shown  

Quelle  dvdread.h   Sprache: C

 

/*****************************************************************************
 * dvdread.h : DvdRead input module for vlc - shared types and declarations
 *****************************************************************************
 * Copyright (C) 2001-2025 VLC authors and VideoLAN
 *
 * Authors: Stéphane Borel <stef@via.ecp.fr>
 *          Gildas Bazin <gbazin@videolan.org>
 *          Saifelden Mohamed Ismail <saifeldenmi@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 *****************************************************************************/


#ifndef VLC_ACCESS_DVDREAD_H
#define VLC_ACCESS_DVDREAD_H

#include <vlc_common.h>
#include <vlc_es.h>
#include <vlc_tick.h>

#include "../demux/mpeg/pes.h"
#include "../demux/mpeg/ps.h"

#include <sys/types.h>
#include <unistd.h>

#include <dvdread/dvd_reader.h>
#include <dvdread/ifo_types.h>
#include <dvdread/ifo_read.h>
#include <dvdread/nav_read.h>
#include <dvdread/nav_print.h>

#include <assert.h>
#include <stdckdint.h>

/*****************************************************************************
 * DVDRead Version Compatibility
 *****************************************************************************/

#if DVDREAD_VERSION > DVDREAD_VERSION_CODE(7, 0, 1)
#define DVDREAD_HAS_DVDVIDEORECORDING 1
#endif

#if DVDREAD_VERSION >= DVDREAD_VERSION_CODE(7, 0, 0)
#define DVDREAD_HAS_DVDAUDIO 1
#endif

typedef enum
{
    DVD_V = 0,
    DVD_A = 1,
    DVD_VR = 2,
} dvd_type_t;

typedef struct input_title_t input_title_t;

typedef struct demux_sys_t demux_sys_t;

typedef struct
{
    /* format-specific hooks used by shared Control()/Demux() paths */
    int        (*set_area)( demux_t *, int, int, int );
    int        (*seek)( demux_t *, uint32_t );
    void       (*find_cell)( demux_t * );
    vlc_tick_t (*title_length)( const demux_sys_t * );
    void       (*demux_titles)( demux_t *, int * );
    bool       (*timeline_base)( const demux_sys_t *, vlc_tick_t * );
    uint32_t   (*time_to_seek_offset)( const demux_sys_t *, vlc_tick_t, uint32_t );
    int        (*ps_source)( void );
    void       (*adjust_anchor)( demux_sys_t *, block_t * );
    bool       requires_vts;
} dvdread_ops_t;

struct demux_sys_t
{
    /* DVDRead state */
    dvd_reader_t *p_dvdread;
    dvd_file_t   *p_title;

    ifo_handle_t *p_vmg_file;
    ifo_handle_t *p_vts_file;

    unsigned updates;
    int i_title;
    int cur_title;
    int i_chapter, i_chapters;
    int cur_chapter;
    int i_angle, i_angles;

    dvd_type_t type;
    union
    {
        /* Video tables */
        struct
        {
            tt_srpt_t    *p_tt_srpt;
            pgc_t        *p_cur_pgc;
        };

#ifdef DVDREAD_HAS_DVDAUDIO
        /* Audio tables */
        struct
        {
            atsi_title_record_t *p_title_table;
        };
#endif

#ifdef DVDREAD_HAS_DVDVIDEORECORDING
        /* VideoRecording tables */
        struct
        {
          /* address map of recordings */
          pgc_gi_t    *pgc_gi;
          /* titles, labels for recordings */
          ud_pgcit_t  *ud_pgcit;
          /* keep track of vobu index */
          /* pointer to current program */
          pgi_t *p_cur_pgi;
        };
#endif

    };

    dsi_t        dsi_pack;
    int          i_ttn;

    int i_pack_len;
    int i_cur_block;
    int i_next_vobu;

    int i_mux_rate;

    /* Current title start/end blocks */
    int i_title_start_block;
    int i_title_end_block;
    uint32_t i_title_blocks;
    int i_title_offset;

    int i_title_start_cell;
    int i_title_end_cell;
    int i_cur_cell;
    int i_next_cell;

    /* ps/dvd anchor pair for rebasing ps scr/pts onto the disc timeline
     * dvd is accumulated cell playback time from title start
     * ps is the matching scr from the first ps pack of that cell
     * both are VLC_TICK_INVALID until the first pack of a cell is seen */

    struct
    {
        vlc_tick_t dvd;
        vlc_tick_t ps;
    } cell_ts;

    /* Track */
    ps_track_t    tk[PS_TK_COUNT];

    int           i_titles;
    input_title_t **titles;

    /* Video */
    int i_sar_num;
    int i_sar_den;

    /* SPU */
    uint32_t clut[VIDEO_PALETTE_CLUT_COUNT];
    const dvdread_ops_t *ops;
};

static inline void DvdReadResetCellTs( demux_sys_t *p_sys )
{
    p_sys->cell_ts.dvd = VLC_TICK_INVALID;
    p_sys->cell_ts.ps = VLC_TICK_INVALID;
}

int OpenCommonDvdread( vlc_object_t *, dvd_type_t, const dvdread_ops_t * );
int OpenVideoRecording( vlc_object_t * );
int OpenAudio( vlc_object_t * );

#ifdef DVDREAD_HAS_DVDVIDEORECORDING
uint32_t   DvdVRGetProgramSectorSpan( const demux_sys_t *, const vobu_map_t * );
#endif

void DvdReadESNew( demux_t *p_demux, int i_id, int i_lang, int i_code_ext );
void DvdReadHandleDSI( demux_t *p_demux, uint8_t *p_data );

extern const dvdread_ops_t DvdReadVideoOps;
#ifdef DVDREAD_HAS_DVDAUDIO
extern const dvdread_ops_t DvdAudioReadOps;
#endif
#ifdef DVDREAD_HAS_DVDVIDEORECORDING
extern const dvdread_ops_t DvdVRReadOps;
#endif

#endif /* VLC_ACCESS_DVDREAD_H */

Messung
CHZG
849710093

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.