mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-07-11 17:06:45 +00:00
hlsdemux: port to adaptive base class
Conflicts: ext/hls/gsthlsdemux.c ext/hls/gsthlsdemux.h
This commit is contained in:
parent
c65aeedb6f
commit
1e9ce11efd
|
@ -11,6 +11,7 @@ libgstfragmented_la_SOURCES = \
|
||||||
libgstfragmented_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS) $(LIBGCRYPT_CFLAGS) $(NETTLE_CFLAGS)
|
libgstfragmented_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS) $(LIBGCRYPT_CFLAGS) $(NETTLE_CFLAGS)
|
||||||
libgstfragmented_la_LIBADD = \
|
libgstfragmented_la_LIBADD = \
|
||||||
$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la \
|
$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la \
|
||||||
|
$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
|
||||||
$(GST_PLUGINS_BASE_LIBS) -lgstpbutils-$(GST_API_VERSION) -lgstvideo-$(GST_API_VERSION) \
|
$(GST_PLUGINS_BASE_LIBS) -lgstpbutils-$(GST_API_VERSION) -lgstvideo-$(GST_API_VERSION) \
|
||||||
$(GST_BASE_LIBS) $(GST_LIBS) $(GIO_LIBS) $(LIBM) $(LIBGCRYPT_LIBS) $(NETTLE_LIBS) $(OPENSSL_LIBS)
|
$(GST_BASE_LIBS) $(GST_LIBS) $(GIO_LIBS) $(LIBM) $(LIBGCRYPT_LIBS) $(NETTLE_LIBS) $(OPENSSL_LIBS)
|
||||||
libgstfragmented_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -no-undefined
|
libgstfragmented_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -no-undefined
|
||||||
|
|
1912
ext/hls/gsthlsdemux.c
Executable file → Normal file
1912
ext/hls/gsthlsdemux.c
Executable file → Normal file
File diff suppressed because it is too large
Load diff
50
ext/hls/gsthlsdemux.h
Executable file → Normal file
50
ext/hls/gsthlsdemux.h
Executable file → Normal file
|
@ -29,6 +29,7 @@
|
||||||
#include "m3u8.h"
|
#include "m3u8.h"
|
||||||
#include "gstfragmented.h"
|
#include "gstfragmented.h"
|
||||||
#include <gst/uridownloader/gsturidownloader.h>
|
#include <gst/uridownloader/gsturidownloader.h>
|
||||||
|
#include <gst/adaptivedemux/gstadaptivedemux.h>
|
||||||
#if defined(HAVE_OPENSSL)
|
#if defined(HAVE_OPENSSL)
|
||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
#elif defined(HAVE_NETTLE)
|
#elif defined(HAVE_NETTLE)
|
||||||
|
@ -63,16 +64,10 @@ typedef struct _GstHLSDemuxClass GstHLSDemuxClass;
|
||||||
*/
|
*/
|
||||||
struct _GstHLSDemux
|
struct _GstHLSDemux
|
||||||
{
|
{
|
||||||
GstBin parent;
|
GstAdaptiveDemux parent;
|
||||||
|
|
||||||
GstPad *sinkpad;
|
|
||||||
GstPad *srcpad;
|
|
||||||
gint srcpad_counter;
|
gint srcpad_counter;
|
||||||
|
|
||||||
gboolean have_group_id;
|
|
||||||
guint group_id;
|
|
||||||
|
|
||||||
GstBuffer *playlist;
|
|
||||||
GstCaps *input_caps;
|
GstCaps *input_caps;
|
||||||
GstUriDownloader *downloader;
|
GstUriDownloader *downloader;
|
||||||
gchar *uri; /* Original playlist URI */
|
gchar *uri; /* Original playlist URI */
|
||||||
|
@ -86,51 +81,12 @@ struct _GstHLSDemux
|
||||||
guint connection_speed; /* Network connection speed in kbps (0 = unknown) */
|
guint connection_speed; /* Network connection speed in kbps (0 = unknown) */
|
||||||
|
|
||||||
/* Streaming task */
|
/* Streaming task */
|
||||||
GstTask *stream_task;
|
|
||||||
GRecMutex stream_lock;
|
|
||||||
gboolean stop_stream_task;
|
|
||||||
GMutex download_lock; /* Used for protecting queue and the two conds */
|
|
||||||
GCond download_cond; /* Signalled when something is added to the queue */
|
|
||||||
gboolean end_of_playlist;
|
|
||||||
gint download_failed_count;
|
|
||||||
gint64 next_download;
|
gint64 next_download;
|
||||||
|
|
||||||
/* Updates task */
|
|
||||||
GstTask *updates_task;
|
|
||||||
GRecMutex updates_lock;
|
|
||||||
gint64 next_update; /* Time of the next update */
|
|
||||||
gboolean stop_updates_task;
|
|
||||||
GMutex updates_timed_lock;
|
|
||||||
GCond updates_timed_cond; /* Signalled when the playlist should be updated */
|
|
||||||
|
|
||||||
/* Position in the stream */
|
|
||||||
GstSegment segment;
|
|
||||||
gboolean need_segment;
|
|
||||||
gboolean discont;
|
|
||||||
|
|
||||||
/* Cache for the last key */
|
/* Cache for the last key */
|
||||||
gchar *key_url;
|
gchar *key_url;
|
||||||
GstFragment *key_fragment;
|
GstFragment *key_fragment;
|
||||||
|
|
||||||
/* Current download rate (bps) */
|
|
||||||
gint current_download_rate;
|
|
||||||
|
|
||||||
/* fragment download tooling */
|
|
||||||
GstElement *src;
|
|
||||||
GstPad *src_srcpad; /* handy link to src's src pad */
|
|
||||||
GMutex fragment_download_lock;
|
|
||||||
gboolean download_finished;
|
|
||||||
GCond fragment_download_cond;
|
|
||||||
GstClockTime current_timestamp;
|
|
||||||
GstClockTime current_duration;
|
|
||||||
gboolean starting_fragment;
|
|
||||||
gboolean reset_crypto;
|
|
||||||
gint64 download_start_time;
|
|
||||||
gint64 download_total_time;
|
|
||||||
gint64 download_total_bytes;
|
|
||||||
GstFlowReturn last_ret;
|
|
||||||
GError *last_error;
|
|
||||||
|
|
||||||
/* decryption tooling */
|
/* decryption tooling */
|
||||||
#if defined(HAVE_OPENSSL)
|
#if defined(HAVE_OPENSSL)
|
||||||
EVP_CIPHER_CTX aes_ctx;
|
EVP_CIPHER_CTX aes_ctx;
|
||||||
|
@ -150,7 +106,7 @@ struct _GstHLSDemux
|
||||||
|
|
||||||
struct _GstHLSDemuxClass
|
struct _GstHLSDemuxClass
|
||||||
{
|
{
|
||||||
GstBinClass parent_class;
|
GstAdaptiveDemuxClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
GType gst_hls_demux_get_type (void);
|
GType gst_hls_demux_get_type (void);
|
||||||
|
|
Loading…
Reference in a new issue