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

📄 mvplaylistdb.h

📁 这是DVD中伺服部分的核心代码
💻 H
字号:
/*****************************************************************************
******************************************************************************
**                                                                          **
**  Copyright (c) 2005-2006 Videon Central, Inc.                            **
**  All rights reserved.                                                    **
**                                                                          **
**  The computer program contained herein contains proprietary information  **
**  which is the property of Videon Central, Inc.  The program may be used  **
**  and/or copied only with the written permission of Videon Central, Inc.  **
**  or in accordance with the terms and conditions stipulated in the        **
**  agreement/contract under which the programs have been supplied.         **
**                                                                          **
******************************************************************************
*****************************************************************************/
/**
 * @file mvplaylistdb.h
 *
 * @description
 *      API to the Movie Playlist Database.
 *      The Movie Playlist Database handles the storage of and
 *      access to Movie Playlist data.
 *
 * $Id: mvplaylistdb.h,v 1.24 2006/10/25 23:35:40 rbehe Exp $
 */

#ifndef MVPLAYLISTDB_H
#define MVPLAYLISTDB_H

#ifdef __cplusplus
extern "C" {
#endif

/**
 * Clip Info Database Status types
 */
typedef ERR_CODE  MPLS_STATUS;

#define MPLS_SUCCESS            (MPLS_STATUS( 0))
#define MPLS_FAILURE            (MPLS_STATUS(-1))
#define MPLS_NULL_PTR           (MPLS_STATUS(-2))
#define MPLS_FILE_ERROR         (MPLS_STATUS(-3))
#define MPLS_INVALID_FORMAT     (MPLS_STATUS(-4))
#define MPLS_NO_MEMORY          (MPLS_STATUS(-5))

#define MPLS_SEQUENTIAL_PLAYLIST        1
#define MPLS_RANDOM_PLAYLIST            2
#define MPLS_SHUFFLE_PLAYLIST           3

#define MAX_NUMBER_PLAYITEMS            999
#define MAX_NUMBER_SUBPATHS             255
#define MAX_NUMBER_SUBPLAYITEMS         255
#define MAX_NUMBER_SUBCLIPS             255
#define MAX_NUMBER_ANGLES               9
#define MAX_NUMBER_PLAYLIST_MARKS       999

/* video types */
#define MPLS_STREAM_CODING_TYPE_MPEG2               0x02
#define MPLS_STREAM_CODING_TYPE_AVC                 0x1B
#define MPLS_STREAM_CODING_TYPE_VC1                 0xEA

/* audio types */
#define MPLS_STREAM_CODING_TYPE_LPCM                0x80
#define MPLS_STREAM_CODING_TYPE_AC3                 0x81
#define MPLS_STREAM_CODING_TYPE_DTS                 0x82
#define MPLS_STREAM_CODING_TYPE_DOLBY_LOSSLESS      0x83
#define MPLS_STREAM_CODING_TYPE_AC3_PLUS            0x84
#define MPLS_STREAM_CODING_TYPE_DTS_HD              0x85
#define MPLS_STREAM_CODING_TYPE_DTS_HD_XLL          0x86
#define MPLS_STREAM_CODING_TYPE_AC3_PLUS_SECONDARY  0xA1
#define MPLS_STREAM_CODING_TYPE_DTS_HD_SECONDARY    0xA2

/* graphics types */
#define MPLS_STREAM_CODING_TYPE_PG                  0x90
#define MPLS_STREAM_CODING_TYPE_IG                  0x91
#define MPLS_STREAM_CODING_TYPE_TEXT_SUBTITLE       0x92


#define INVALID_PLAYITEM                0xffff

/* SubPath_type values */
#define MPLS_SUBPATH_BROWSABLE_SLIDESHOW_AUDIO      2
#define MPLS_SUBPATH_IG_MENU                        3
#define MPLS_SUBPATH_TEXT_SUBTITLE                  4
#define MPLS_SUBPATH_OUTOFMUX_SYNC                  5
#define MPLS_SUBPATH_OUTOFMUX_ASYNC                 6
#define MPLS_SUBPATH_INMUX_SYNC                     7

/* Character code values */
#define MPLS_CHAR_CODE_UTF8             0x01
#define MPLS_CHAR_CODE_UTF16            0x02
#define MPLS_CHAR_CODE_SHIFT_JIS        0x03
#define MPLS_CHAR_CODE_EUC_KR           0x04
#define MPLS_CHAR_CODE_GB18030_2000     0x05
#define MPLS_CHAR_CODE_CN_GB            0x06
#define MPLS_CHAR_CODE_BIG5             0x07

typedef struct tagAPPINFOPLAYLIST_TABLE
{
    uint8  PlayList_playback_type;
    uint16 playback_count;
    uint64 UO_mask_table;
    uint8  PlayList_random_access_flag;
    uint8  audio_mix_app_flag;
    uint8  lossless_may_bypass_mixer_flag;
} APPINFOPLAYLIST_TABLE;

typedef struct tagMULTI_CLIP_ENTRY
{
    uint8  Clip_Information_file_name[5];
//    uint8  Clip_codec_identifier[4];
    uint8  ref_to_STC_id;
} MULTI_CLIP_ENTRY;

typedef struct tagSTREAM_ENTRY
{
    uint8 type;

    /* because of duplicate names in this table, we do it this way */
    uint8  ref_to_SubPath_id;
    uint8  ref_to_subClip_entry_id;
    union
    {
        uint16 ref_to_stream_PID_of_subClip;
        uint16 ref_to_stream_PID_of_mainClip;
    };
} STREAM_ENTRY;

typedef struct tagSTREAM_ATTRIBUTES
{
    uint8 stream_coding_type;
    union
    {
        struct
        {
            uint8 video_format;
            uint8 frame_rate;
            uint8 aspect_ratio;
        };
        struct
        {
            uint8 audio_presentation_type;
            uint8 sampling_frequency;
            uint8 audio_language_code[3];
        };
        uint8 PG_language_code[3];
        uint8 IG_language_code[3];
        struct
        {
            uint8 character_code;
            uint8 textST_language_code[3];
        };
    };
} STREAM_ATTRIBUTES;

typedef struct tagSTREAM_TABLE
{
    STREAM_ENTRY      stream_entry;
    STREAM_ATTRIBUTES stream_attributes;
} STREAM_TABLE;

typedef struct tagSECONDARY_AUDIO_STREAM_TABLE
{
    STREAM_ENTRY      stream_entry;
    STREAM_ATTRIBUTES stream_attributes;
    uint8             number_of_primary_audio_ref_entries;
    uint8             primary_audio_stream_id_ref[32];
} SECONDARY_AUDIO_STREAM_TABLE;

typedef struct tagSECONDARY_VIDEO_STREAM_TABLE
{
    STREAM_ENTRY      stream_entry;
    STREAM_ATTRIBUTES stream_attributes;
    uint8             number_of_secondary_audio_ref_entries;
    uint8             secondary_audio_stream_id_ref[32];
    uint8             number_of_PiP_PG_textST_ref_entries;
    uint8             PiP_PG_textST_stream_id_ref[32];
} SECONDARY_VIDEO_STREAM_TABLE;

typedef struct tagSTN_TABLE
{
    uint8  number_of_primary_video_stream_entries;
    uint8  number_of_primary_audio_stream_entries;
    uint8  number_of_PG_textST_stream_entries;
    uint8  number_of_IG_stream_entries;
    uint8  number_of_secondary_audio_stream_entries;
    uint8  number_of_secondary_video_stream_entries;
    uint8  number_of_PiP_PG_textST_stream_entries_plus;
    STREAM_TABLE *primary_video_stream;
    STREAM_TABLE *primary_audio_stream;
    STREAM_TABLE *PG_textST_stream;
    STREAM_TABLE *IG_stream;
    SECONDARY_AUDIO_STREAM_TABLE *secondary_audio_stream;
    SECONDARY_VIDEO_STREAM_TABLE *secondary_video_stream;
} STN_TABLE;

typedef struct tagPLAYITEM
{
    uint8  Clip_Information_file_name[5];
//    uint8  Clip_codec_identifier[4];
    uint8  is_multi_angle;
    uint8  connection_condition;
    uint8  ref_to_STC_id;
    uint32 IN_time;
    uint32 OUT_time;
    uint64 UO_mask_table;
    uint8  PlayItem_random_access_flag;
    uint8  still_mode;
    uint16 still_time;
    uint8  number_of_angles;
    uint8  is_different_audios;
    uint8  is_seamless_angle_change;
    MULTI_CLIP_ENTRY multi_clip_entry[MAX_NUMBER_ANGLES - 1];
    STN_TABLE STN_table;
} PLAYITEM;

typedef struct tagSUBPLAYITEM
{
    uint8  Clip_Information_file_name[5];
//    uint8  Clip_codec_identifier[4];
    uint8  sp_connection_condition;
    uint8  is_multi_Clip_entries;
    uint8  ref_to_STC_id;
    uint8  SubPlayItem_IN_time;
    uint32 SubPlayItem_OUT_time;
    uint16 sync_PlayItem_id;
    uint32 sync_start_PTS_of_PlayItem;
    uint8  number_of_Clip_entries;
    MULTI_CLIP_ENTRY *multi_clip_entry;
} SUBPLAYITEM;

typedef struct tagSUBPATH
{
    uint8 SubPath_type;
    uint8 is_repeat_SubPath;
    uint8 number_of_SubPlayItems;
    SUBPLAYITEM *SubPlayItem;
} SUBPATH;

typedef struct tagPLAYLIST_TABLE
{
    uint16   number_of_PlayItems;
    uint16   number_of_SubPaths;
    PLAYITEM *PlayItem;
    SUBPATH  *SubPath;
} PLAYLIST_TABLE;

#define ENTRY_MARK 0x01
#define LINK_POINT 0x02

typedef struct tagPLAYLISTMARK
{
    uint8  mark_type;
    uint16 ref_to_PlayItem_id;
    uint32 mark_time_stamp;
    uint16 entry_ES_PID;
    uint32 duration;
} PLAYLISTMARK;

typedef struct tagPLAYLISTMARK_TABLE
{
    uint16 number_of_PlayList_marks;
    PLAYLISTMARK PL_mark[MAX_NUMBER_PLAYLIST_MARKS];
} PLAYLISTMARK_TABLE;

/**
 * Movie Playlist
 */
typedef struct tagMOVPLAYLIST
{
    uint8                 type_indicator[4];
    uint8                 version_number[4];
    APPINFOPLAYLIST_TABLE AppInfoPlayList;
    PLAYLIST_TABLE        PlayList;
    PLAYLISTMARK_TABLE    PlayListMark;
} MOVPLAYLIST;

/**
 * Movie Playlist Interface functions
 */
MPLS_STATUS MPLSCreate(LOADER_HANDLE tLoader);
MPLS_STATUS MPLSDelete(void);
MPLS_STATUS MPLSLoad(uint32 mpls_number);
MPLS_STATUS MPLSGetAppInfo(APPINFOPLAYLIST_TABLE **ppAppInfoPlayList);
MPLS_STATUS MPLSGetNumberOfPlayItems(uint16 *pNumPlayItem);
MPLS_STATUS MPLSGetNumberOfPlayItemsInPL(uint32 mpls_number, uint16 *pNumPlayItem);
MPLS_STATUS MPLSGetPlayItem(uint16 uiPlayItemNum, PLAYITEM **ppPlayItem);
MPLS_STATUS MPLSGetNumberOfSubPaths(uint16 *pNumSubPath);
MPLS_STATUS MPLSGetSubPath(uint8 uiSubPathNum, SUBPATH **ppSubPath);
MPLS_STATUS MPLSGetPlayMark(PLAYLISTMARK_TABLE **ppPlayListMark);
MPLS_STATUS MPLSGetVersion(uint32 *pVersion);

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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