Blame src/libbluray/bdnav/clpi_data.h

Packit 5e46da
/*
Packit 5e46da
 * This file is part of libbluray
Packit 5e46da
 * Copyright (C) 2009-2010  John Stebbins
Packit 5e46da
 * Copyright (C) 2012-2013  Petri Hintukainen <phintuka@users.sourceforge.net>
Packit 5e46da
 *
Packit 5e46da
 * This library is free software; you can redistribute it and/or
Packit 5e46da
 * modify it under the terms of the GNU Lesser General Public
Packit 5e46da
 * License as published by the Free Software Foundation; either
Packit 5e46da
 * version 2.1 of the License, or (at your option) any later version.
Packit 5e46da
 *
Packit 5e46da
 * This library is distributed in the hope that it will be useful,
Packit 5e46da
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 5e46da
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 5e46da
 * Lesser General Public License for more details.
Packit 5e46da
 *
Packit 5e46da
 * You should have received a copy of the GNU Lesser General Public
Packit 5e46da
 * License along with this library. If not, see
Packit 5e46da
 * <http://www.gnu.org/licenses/>.
Packit 5e46da
 */
Packit 5e46da
Packit 5e46da
#if !defined(_CLPI_DATA_H_)
Packit 5e46da
#define _CLPI_DATA_H_
Packit 5e46da
Packit 5e46da
#include <stdint.h>
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint16_t          pcr_pid;
Packit 5e46da
    uint32_t          spn_stc_start;
Packit 5e46da
    uint32_t          presentation_start_time;
Packit 5e46da
    uint32_t          presentation_end_time;
Packit 5e46da
} CLPI_STC_SEQ;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint32_t          spn_atc_start;
Packit 5e46da
    uint8_t           num_stc_seq;
Packit 5e46da
    uint8_t           offset_stc_id;
Packit 5e46da
    CLPI_STC_SEQ     *stc_seq;
Packit 5e46da
} CLPI_ATC_SEQ;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint8_t           num_atc_seq;
Packit 5e46da
    CLPI_ATC_SEQ     *atc_seq;
Packit 5e46da
} CLPI_SEQ_INFO;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint8_t           validity;
Packit 5e46da
    char              format_id[5];
Packit 5e46da
} CLPI_TS_TYPE;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint32_t          delta;
Packit 5e46da
    char              file_id[6];
Packit 5e46da
    char              file_code[5];
Packit 5e46da
} CLPI_ATC_DELTA;
Packit 5e46da
Packit 5e46da
typedef struct {
Packit 5e46da
    char              file_id[6];
Packit 5e46da
} CLPI_FONT;
Packit 5e46da
Packit 5e46da
typedef struct {
Packit 5e46da
    uint8_t           font_count;
Packit 5e46da
    CLPI_FONT        *font;
Packit 5e46da
} CLPI_FONT_INFO;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint8_t           clip_stream_type;
Packit 5e46da
    uint8_t           application_type;
Packit 5e46da
    uint8_t           is_atc_delta;
Packit 5e46da
    uint32_t          ts_recording_rate;
Packit 5e46da
    uint32_t          num_source_packets;
Packit 5e46da
    CLPI_TS_TYPE      ts_type_info;
Packit 5e46da
    uint8_t           atc_delta_count;
Packit 5e46da
    CLPI_ATC_DELTA   *atc_delta;
Packit 5e46da
    CLPI_FONT_INFO    font_info;      /* Text subtitle stream font files */
Packit 5e46da
} CLPI_CLIP_INFO;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint16_t          pid;
Packit 5e46da
    uint8_t           coding_type;
Packit 5e46da
    uint8_t           format;
Packit 5e46da
    uint8_t           rate;
Packit 5e46da
    uint8_t           aspect;
Packit 5e46da
    uint8_t           oc_flag;
Packit 5e46da
    uint8_t           char_code;
Packit 5e46da
    char              lang[4];
Packit 5e46da
} CLPI_PROG_STREAM;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint32_t          spn_program_sequence_start;
Packit 5e46da
    uint16_t          program_map_pid;
Packit 5e46da
    uint8_t           num_streams;
Packit 5e46da
    uint8_t           num_groups;
Packit 5e46da
    CLPI_PROG_STREAM *streams;
Packit 5e46da
} CLPI_PROG;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint8_t           num_prog;
Packit 5e46da
    CLPI_PROG        *progs;
Packit 5e46da
} CLPI_PROG_INFO;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    int               ref_ep_fine_id;
Packit 5e46da
    int               pts_ep;
Packit 5e46da
    uint32_t          spn_ep;
Packit 5e46da
} CLPI_EP_COARSE;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint8_t           is_angle_change_point;
Packit 5e46da
    uint8_t           i_end_position_offset;
Packit 5e46da
    int               pts_ep;
Packit 5e46da
    int               spn_ep;
Packit 5e46da
} CLPI_EP_FINE;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint16_t          pid;
Packit 5e46da
    uint8_t           ep_stream_type;
Packit 5e46da
    int               num_ep_coarse;
Packit 5e46da
    int               num_ep_fine;
Packit 5e46da
    uint32_t          ep_map_stream_start_addr;
Packit 5e46da
    CLPI_EP_COARSE   *coarse;
Packit 5e46da
    CLPI_EP_FINE     *fine;
Packit 5e46da
} CLPI_EP_MAP_ENTRY;
Packit 5e46da
Packit 5e46da
typedef struct
Packit 5e46da
{
Packit 5e46da
    uint8_t           type;
Packit 5e46da
    // ep_map
Packit 5e46da
    uint8_t           num_stream_pid;
Packit 5e46da
    CLPI_EP_MAP_ENTRY *entry;
Packit 5e46da
} CLPI_CPI;
Packit 5e46da
Packit 5e46da
/* Extent start points (profile 5 / version 2.4) */
Packit 5e46da
typedef struct {
Packit 5e46da
    uint32_t          num_point;
Packit 5e46da
    uint32_t         *point;
Packit 5e46da
} CLPI_EXTENT_START;
Packit 5e46da
Packit 5e46da
typedef struct clpi_cl {
Packit 5e46da
    uint32_t          type_indicator;
Packit 5e46da
    uint32_t          type_indicator2;
Packit 5e46da
    uint32_t          sequence_info_start_addr;
Packit 5e46da
    uint32_t          program_info_start_addr;
Packit 5e46da
    uint32_t          cpi_start_addr;
Packit 5e46da
    uint32_t          clip_mark_start_addr;
Packit 5e46da
    uint32_t          ext_data_start_addr;
Packit 5e46da
    CLPI_CLIP_INFO    clip;
Packit 5e46da
    CLPI_SEQ_INFO     sequence;
Packit 5e46da
    CLPI_PROG_INFO    program;
Packit 5e46da
    CLPI_CPI          cpi;
Packit 5e46da
    // skip clip mark & extension data
Packit 5e46da
Packit 5e46da
    // extensions for 3D
Packit 5e46da
Packit 5e46da
    CLPI_EXTENT_START extent_start; /* extent start points (.ssif interleaving) */
Packit 5e46da
    CLPI_PROG_INFO    program_ss;
Packit 5e46da
    CLPI_CPI          cpi_ss;
Packit 5e46da
} CLPI_CL;
Packit 5e46da
Packit 5e46da
#endif // _CLPI_DATA_H_