2021-05-21 17:44:03 +00:00
// Copyright (C) 2021 Rafael Caricio <rafael@caricio.com>
//
// This Source Code Form is subject to the terms of the Mozilla Public License, v2.0.
// If a copy of the MPL was not distributed with this file, You can obtain one at
// <https://mozilla.org/MPL/2.0/>.
//
// SPDX-License-Identifier: MPL-2.0
2022-08-29 15:41:33 +00:00
#![ allow(clippy::non_send_fields_in_send_ty, unused_doc_comments) ]
2021-05-21 17:44:03 +00:00
2022-08-25 22:30:08 +00:00
/**
* plugin - hlssink3 :
*
* Since : plugins - rs - 0. 8.0
* /
2021-05-21 17:44:03 +00:00
use glib ::prelude ::* ;
2022-10-13 11:00:24 +00:00
#[ cfg(feature = " doc " ) ]
2022-08-25 22:30:08 +00:00
use gst ::prelude ::* ;
2021-05-21 17:44:03 +00:00
mod imp ;
mod playlist ;
2022-06-28 20:01:59 +00:00
#[ derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy, glib::Enum) ]
#[ repr(u32) ]
#[ enum_type(name = " GstHlsSink3PlaylistType " ) ]
#[ non_exhaustive ]
pub enum HlsSink3PlaylistType {
#[ enum_value(
name = " Unspecified: The tag `#EXT-X-PLAYLIST-TYPE` won't be present in the playlist during the pipeline processing. " ,
nick = " Unspecified "
) ]
Unspecified = 0 ,
#[ enum_value(
name = " Event: No segments will be removed from the playlist. At the end of the processing, the tag `#EXT-X-ENDLIST` is added to the playlist. The tag `#EXT-X-PLAYLIST-TYPE:EVENT` will be present in the playlist. " ,
nick = " event "
) ]
Event = 1 ,
#[ enum_value(
name = " Vod: The playlist behaves like the `event` option (a live event), but at the end of the processing, the playlist will be set to `#EXT-X-PLAYLIST-TYPE:VOD`. " ,
nick = " vod "
) ]
Vod = 2 ,
}
2021-05-21 17:44:03 +00:00
glib ::wrapper! {
pub struct HlsSink3 ( ObjectSubclass < imp ::HlsSink3 > ) @ extends gst ::Bin , gst ::Element , gst ::Object ;
}
pub fn plugin_init ( plugin : & gst ::Plugin ) -> Result < ( ) , glib ::BoolError > {
2022-08-25 22:30:08 +00:00
#[ cfg(feature = " doc " ) ]
HlsSink3PlaylistType ::static_type ( ) . mark_as_plugin_api ( gst ::PluginAPIFlags ::empty ( ) ) ;
2021-05-21 17:44:03 +00:00
gst ::Element ::register (
Some ( plugin ) ,
" hlssink3 " ,
gst ::Rank ::None ,
HlsSink3 ::static_type ( ) ,
) ? ;
Ok ( ( ) )
}
gst ::plugin_define! (
hlssink3 ,
env! ( " CARGO_PKG_DESCRIPTION " ) ,
plugin_init ,
concat! ( env! ( " CARGO_PKG_VERSION " ) , " - " , env! ( " COMMIT_ID " ) ) ,
2021-11-16 18:52:30 +00:00
// FIXME: MPL-2.0 is only allowed since 1.18.3 (as unknown) and 1.20 (as known)
" MPL " ,
2021-05-21 17:44:03 +00:00
env! ( " CARGO_PKG_NAME " ) ,
env! ( " CARGO_PKG_NAME " ) ,
env! ( " CARGO_PKG_REPOSITORY " ) ,
env! ( " BUILD_REL_DATE " )
) ;