mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 18:21:04 +00:00
toc: add more entry types
Make entry types less abstract. https://bugzilla.gnome.org/show_bug.cgi?id=678742
This commit is contained in:
parent
f79d398c61
commit
e11f38b98b
4 changed files with 96 additions and 12 deletions
|
@ -2726,6 +2726,11 @@ gst_toc_find_entry
|
||||||
gst_toc_entry_get_start_stop
|
gst_toc_entry_get_start_stop
|
||||||
gst_toc_entry_set_start_stop
|
gst_toc_entry_set_start_stop
|
||||||
gst_toc_entry_type_get_nick
|
gst_toc_entry_type_get_nick
|
||||||
|
gst_toc_entry_get_entry_type
|
||||||
|
gst_toc_entry_is_alternative
|
||||||
|
gst_toc_entry_is_sequence
|
||||||
|
GST_TOC_ENTRY_TYPE_IS_ALTERNATIVE
|
||||||
|
GST_TOC_ENTRY_TYPE_IS_SEQUENCE
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GST_TYPE_TOC
|
GST_TYPE_TOC
|
||||||
GST_TYPE_TOC_ENTRY
|
GST_TYPE_TOC_ENTRY
|
||||||
|
|
70
gst/gsttoc.c
70
gst/gsttoc.c
|
@ -880,19 +880,75 @@ gst_toc_entry_get_start_stop (const GstTocEntry * entry, gint64 * start,
|
||||||
*
|
*
|
||||||
* Converts @type to a string representation.
|
* Converts @type to a string representation.
|
||||||
*
|
*
|
||||||
* Returns: Returns the human-readable @type. Can be NULL if an error occurred.
|
* Returns: Returns a human-readable string for @type. This string is
|
||||||
* Since: 0.11.92
|
* only for debugging purpose and should not be displayed in a user
|
||||||
|
* interface.
|
||||||
*/
|
*/
|
||||||
const gchar *
|
const gchar *
|
||||||
gst_toc_entry_type_get_nick (GstTocEntryType type)
|
gst_toc_entry_type_get_nick (GstTocEntryType type)
|
||||||
{
|
{
|
||||||
const gchar *entry_types[] = { "chapter", "edition" };
|
switch (type) {
|
||||||
|
case GST_TOC_ENTRY_TYPE_ANGLE:
|
||||||
g_return_val_if_fail ((gint) type >= 0
|
return "angle";
|
||||||
&& (gint) type < G_N_ELEMENTS (entry_types), NULL);
|
case GST_TOC_ENTRY_TYPE_VERSION:
|
||||||
return entry_types[type];
|
return "version";
|
||||||
|
case GST_TOC_ENTRY_TYPE_EDITION:
|
||||||
|
return "edition";
|
||||||
|
case GST_TOC_ENTRY_TYPE_TITLE:
|
||||||
|
return "title";
|
||||||
|
case GST_TOC_ENTRY_TYPE_TRACK:
|
||||||
|
return "track";
|
||||||
|
case GST_TOC_ENTRY_TYPE_CHAPTER:
|
||||||
|
return "chapter";
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return "invalid";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_toc_entry_get_entry_type:
|
||||||
|
* @entry: a #GstTocEntry
|
||||||
|
*
|
||||||
|
* Returns: @entry's entry type
|
||||||
|
*/
|
||||||
|
GstTocEntryType
|
||||||
|
gst_toc_entry_get_entry_type (GstTocEntry * entry)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (entry != NULL, GST_TOC_ENTRY_TYPE_INVALID);
|
||||||
|
|
||||||
|
return entry->type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_toc_entry_is_alternative:
|
||||||
|
* @entry: a #GstTocEntry
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if @entry's type is an alternative type, otherwise %FALSE
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
gst_toc_entry_is_alternative (GstTocEntry * entry)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (entry != NULL, FALSE);
|
||||||
|
|
||||||
|
return GST_TOC_ENTRY_TYPE_IS_ALTERNATIVE (entry->type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_toc_entry_is_sequence:
|
||||||
|
* @entry: a #GstTocEntry
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if @entry's type is a sequence type, otherwise %FALSE
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
gst_toc_entry_is_sequence (GstTocEntry * entry)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (entry != NULL, FALSE);
|
||||||
|
|
||||||
|
return GST_TOC_ENTRY_TYPE_IS_SEQUENCE (entry->type);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
__gst_toc_structure_get_updated (const GstStructure * toc)
|
__gst_toc_structure_get_updated (const GstStructure * toc)
|
||||||
{
|
{
|
||||||
|
|
30
gst/gsttoc.h
30
gst/gsttoc.h
|
@ -38,16 +38,31 @@ typedef struct _GstToc GstToc;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GstTocEntryType:
|
* GstTocEntryType:
|
||||||
* @GST_TOC_ENTRY_TYPE_CHAPTER: a chapter type entry.
|
* @GST_TOC_ENTRY_TYPE_ANGLE: entry is an angle (i.e. an alternative)
|
||||||
* @GST_TOC_ENTRY_TYPE_EDITION: an edition entry (angle or alternative in other terms).
|
* @GST_TOC_ENTRY_TYPE_VERSION: entry is a version (i.e. alternative)
|
||||||
|
* @GST_TOC_ENTRY_TYPE_EDITION: entry is an edition (i.e. alternative)
|
||||||
|
* @GST_TOC_ENTRY_TYPE_INVALID: invalid entry type value
|
||||||
|
* @GST_TOC_ENTRY_TYPE_TITLE: entry is a title (i.e. a part of a sequence)
|
||||||
|
* @GST_TOC_ENTRY_TYPE_TRACK: entry is a track (i.e. a part of a sequence)
|
||||||
|
* @GST_TOC_ENTRY_TYPE_CHAPTER: entry is a chapter (i.e. a part of a sequence)
|
||||||
*
|
*
|
||||||
* The different types of TOC entry.
|
* The different types of TOC entries (see #GstTocEntry).
|
||||||
|
*
|
||||||
|
* There are two types of TOC entries: alternatives or parts in a sequence.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_TOC_ENTRY_TYPE_CHAPTER = 0,
|
GST_TOC_ENTRY_TYPE_ANGLE = -3,
|
||||||
GST_TOC_ENTRY_TYPE_EDITION = 1
|
GST_TOC_ENTRY_TYPE_VERSION = -2,
|
||||||
|
GST_TOC_ENTRY_TYPE_EDITION = -1,
|
||||||
|
GST_TOC_ENTRY_TYPE_INVALID = 0,
|
||||||
|
GST_TOC_ENTRY_TYPE_TITLE = 1,
|
||||||
|
GST_TOC_ENTRY_TYPE_TRACK = 2,
|
||||||
|
GST_TOC_ENTRY_TYPE_CHAPTER = 3,
|
||||||
} GstTocEntryType;
|
} GstTocEntryType;
|
||||||
|
|
||||||
|
#define GST_TOC_ENTRY_TYPE_IS_ALTERNATIVE(entry_type) (entry_type < 0)
|
||||||
|
#define GST_TOC_ENTRY_TYPE_IS_SEQUENCE(entry_type) (entry_type > 0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GstTocEntry:
|
* GstTocEntry:
|
||||||
* @uid: unique (for a whole TOC) id of the entry. This value should be persistent and
|
* @uid: unique (for a whole TOC) id of the entry. This value should be persistent and
|
||||||
|
@ -124,6 +139,11 @@ GstTocEntry * gst_toc_entry_new_with_pad (GstTocEntryType type, const gch
|
||||||
|
|
||||||
GstTocEntry * gst_toc_find_entry (const GstToc *toc, const gchar *uid);
|
GstTocEntry * gst_toc_find_entry (const GstToc *toc, const gchar *uid);
|
||||||
|
|
||||||
|
GstTocEntryType gst_toc_entry_get_entry_type (GstTocEntry * entry);
|
||||||
|
|
||||||
|
gboolean gst_toc_entry_is_alternative (GstTocEntry * entry);
|
||||||
|
gboolean gst_toc_entry_is_sequence (GstTocEntry * entry);
|
||||||
|
|
||||||
void gst_toc_entry_set_start_stop (GstTocEntry *entry, gint64 start, gint64 stop);
|
void gst_toc_entry_set_start_stop (GstTocEntry *entry, gint64 start, gint64 stop);
|
||||||
gboolean gst_toc_entry_get_start_stop (const GstTocEntry *entry, gint64 *start, gint64 *stop);
|
gboolean gst_toc_entry_get_start_stop (const GstTocEntry *entry, gint64 *start, gint64 *stop);
|
||||||
const gchar * gst_toc_entry_type_get_nick (GstTocEntryType type);
|
const gchar * gst_toc_entry_type_get_nick (GstTocEntryType type);
|
||||||
|
|
|
@ -1128,8 +1128,11 @@ EXPORTS
|
||||||
gst_task_start
|
gst_task_start
|
||||||
gst_task_state_get_type
|
gst_task_state_get_type
|
||||||
gst_task_stop
|
gst_task_stop
|
||||||
|
gst_toc_entry_get_entry_type
|
||||||
gst_toc_entry_get_start_stop
|
gst_toc_entry_get_start_stop
|
||||||
gst_toc_entry_get_type
|
gst_toc_entry_get_type
|
||||||
|
gst_toc_entry_is_alternative
|
||||||
|
gst_toc_entry_is_sequence
|
||||||
gst_toc_entry_new
|
gst_toc_entry_new
|
||||||
gst_toc_entry_new_with_pad
|
gst_toc_entry_new_with_pad
|
||||||
gst_toc_entry_set_start_stop
|
gst_toc_entry_set_start_stop
|
||||||
|
|
Loading…
Reference in a new issue