vlc_epg.h 3.81 KB
Newer Older
1 2 3
/*****************************************************************************
 * vlc_epg.h: Electronic Program Guide
 *****************************************************************************
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
4
 * Copyright (C) 2007 VLC authors and VideoLAN
5
 * $Id$
6 7 8
 *
 * Authors: Laurent Aimar <fenrir@via.ecp.fr>
 *
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
9 10 11
 * 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
12 13 14 15
 * (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
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
16 17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
18
 *
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
19 20 21
 * 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.
22 23
 *****************************************************************************/

24 25
#ifndef VLC_EPG_H
#define VLC_EPG_H 1
26

27 28 29 30 31
/**
 * \file
 * This file defines functions and structures for storing dvb epg information
 */

32 33
typedef struct
{
François Cartegnie's avatar
François Cartegnie committed
34 35 36
    int64_t  i_start;    /* Interpreted as a value return by time() */
    uint32_t i_duration; /* Duration of the event in second */
    uint16_t i_id;       /* Unique event id withing the event set */
37

38 39 40
    char    *psz_name;
    char    *psz_short_description;
    char    *psz_description;
41 42 43 44 45 46
    struct               /* Description items in tranmission order */
    {
        char *psz_key;
        char *psz_value;
    } * description_items;
    int i_description_items;
47

48
    uint8_t i_rating;   /* Parental control, set to 0 when undefined */
49 50 51 52 53
} vlc_epg_event_t;

typedef struct
{
    char            *psz_name;
François Cartegnie's avatar
François Cartegnie committed
54 55 56
    uint32_t         i_id;       /* Unique identifier for this table / events (partial sets) */
    uint16_t         i_source_id;/* Channel / Program reference id this epg relates to */
    size_t            i_event;
57
    vlc_epg_event_t **pp_event;
58
    bool             b_present;  /* Contains present/following or similar, and sets below */
59
    const vlc_epg_event_t *p_current; /* NULL, or equal to one of the entries in pp_event */
60 61
} vlc_epg_t;

62
/**
François Cartegnie's avatar
François Cartegnie committed
63
 * Creates a new vlc_epg_event_t*
64
 *
François Cartegnie's avatar
François Cartegnie committed
65 66 67 68 69
 * You must call vlc_epg_event_Delete to release the associated resources.
 *
 * \p i_id is the event unique id
 * \p i_start start in epoch time
 * \p i_duration event duration in seconds
70
 */
François Cartegnie's avatar
François Cartegnie committed
71 72
VLC_API vlc_epg_event_t * vlc_epg_event_New(uint16_t i_id,
                                            int64_t i_start, uint32_t i_duration);
73

74
/**
François Cartegnie's avatar
François Cartegnie committed
75
 * Releases a vlc_epg_event_t*.
76
 */
François Cartegnie's avatar
François Cartegnie committed
77
VLC_API void vlc_epg_event_Delete(vlc_epg_event_t *p_event);
78

79
/**
François Cartegnie's avatar
François Cartegnie committed
80
 * Returns a vlc_epg_event_t * duplicated from \p p_src.
81 82
 *
 */
François Cartegnie's avatar
François Cartegnie committed
83
VLC_API vlc_epg_event_t * vlc_epg_event_Duplicate(const vlc_epg_event_t *p_src);
84

85 86 87 88
/**
 * It creates a new vlc_epg_t*
 *
 * You must call vlc_epg_Delete to release the associated resource.
François Cartegnie's avatar
François Cartegnie committed
89 90 91
 *
 * \p i_id is computed unique id depending on standard (table id, eit number)
 * \p i_source_id is the associated program number
92
 */
François Cartegnie's avatar
François Cartegnie committed
93
VLC_API vlc_epg_t * vlc_epg_New(uint32_t i_id, uint16_t i_source_id);
94 95 96 97

/**
 * It releases a vlc_epg_t*.
 */
98
VLC_API void vlc_epg_Delete(vlc_epg_t *p_epg);
99

François Cartegnie's avatar
François Cartegnie committed
100 101 102 103 104 105 106 107
/**
 * It appends a new vlc_epg_event_t to a vlc_epg_t.
 * Takes ownership of \p p_evt or returns false
 *
 * \p p_evt a vlc_epg_event_t * created with vlc_epg_event_New.
 */
VLC_API bool vlc_epg_AddEvent(vlc_epg_t *p_epg, vlc_epg_event_t *p_evt);

108 109 110
/**
 * It set the current event of a vlc_epg_t given a start time
 */
111
VLC_API void vlc_epg_SetCurrent(vlc_epg_t *p_epg, int64_t i_start);
112

François Cartegnie's avatar
François Cartegnie committed
113 114 115 116 117 118
/**
 * Returns a duplicated \p p_src and its associated events.
 *
 */
VLC_API vlc_epg_t * vlc_epg_Duplicate(const vlc_epg_t *p_src);

119 120
#endif