📄 mvplaylistdb.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 + -