Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2020-11-14 20:09:42 +0300
committerSebastian Dröge <sebastian@centricular.com>2020-11-15 19:25:42 +0300
commitaf0337c26c25cc782142f914dfa19383e51e1743 (patch)
tree60263c9ee978753df8cc5be55ed04ce3c9c65488 /generic/sodium/src
parentf54f9f977ec2143028c6068ac43bff5da4bea2ee (diff)
generic: Update for subclassing API changes
Diffstat (limited to 'generic/sodium/src')
-rw-r--r--generic/sodium/src/decrypter/imp.rs (renamed from generic/sodium/src/decrypter.rs)50
-rw-r--r--generic/sodium/src/decrypter/mod.rs43
-rw-r--r--generic/sodium/src/encrypter/imp.rs (renamed from generic/sodium/src/encrypter.rs)44
-rw-r--r--generic/sodium/src/encrypter/mod.rs43
4 files changed, 129 insertions, 51 deletions
diff --git a/generic/sodium/src/decrypter.rs b/generic/sodium/src/decrypter/imp.rs
index 2de508b50..f82b874f2 100644
--- a/generic/sodium/src/decrypter.rs
+++ b/generic/sodium/src/decrypter/imp.rs
@@ -123,7 +123,7 @@ impl State {
// retrieval
fn decrypt_into_adapter(
&mut self,
- element: &gst::Element,
+ element: &super::Decrypter,
pad: &gst::Pad,
buffer: &gst::Buffer,
chunk_index: u64,
@@ -261,7 +261,7 @@ fn add_nonce(initial_nonce: box_::Nonce, chunk_index: u64) -> box_::Nonce {
box_::Nonce::from_slice(&nonce).expect("Failed to convert slice back to Nonce")
}
-struct Decrypter {
+pub struct Decrypter {
srcpad: gst::Pad,
sinkpad: gst::Pad,
props: Mutex<Props>,
@@ -272,7 +272,7 @@ impl Decrypter {
fn src_activatemode_function(
&self,
_pad: &gst::Pad,
- element: &gst::Element,
+ element: &super::Decrypter,
mode: gst::PadMode,
active: bool,
) -> Result<(), gst::LoggableError> {
@@ -295,7 +295,12 @@ impl Decrypter {
}
}
- fn src_query(&self, pad: &gst::Pad, element: &gst::Element, query: &mut gst::QueryRef) -> bool {
+ fn src_query(
+ &self,
+ pad: &gst::Pad,
+ element: &super::Decrypter,
+ query: &mut gst::QueryRef,
+ ) -> bool {
use gst::QueryView;
gst_log!(CAT, obj: pad, "Handling query {:?}", query);
@@ -349,7 +354,7 @@ impl Decrypter {
};
// subtract static offsets
- let size = size - super::HEADERS_SIZE as u64;
+ let size = size - crate::HEADERS_SIZE as u64;
// calculate the number of chunks that exist in the stream
let total_chunks =
@@ -366,7 +371,7 @@ impl Decrypter {
}
}
- fn check_headers(&self, element: &gst::Element) -> Result<(), gst::LoggableError> {
+ fn check_headers(&self, element: &super::Decrypter) -> Result<(), gst::LoggableError> {
let is_none = {
let mutex_state = self.state.lock().unwrap();
let state = mutex_state.as_ref().unwrap();
@@ -440,12 +445,12 @@ impl Decrypter {
fn pull_requested_buffer(
&self,
pad: &gst::Pad,
- element: &gst::Element,
+ element: &super::Decrypter,
requested_size: u32,
block_size: u32,
chunk_index: u64,
) -> Result<gst::Buffer, gst::FlowError> {
- let pull_offset = super::HEADERS_SIZE as u64
+ let pull_offset = crate::HEADERS_SIZE as u64
+ (chunk_index * block_size as u64)
+ (chunk_index * box_::MACBYTES as u64);
@@ -508,7 +513,7 @@ impl Decrypter {
fn get_range(
&self,
pad: &gst::Pad,
- element: &gst::Element,
+ element: &super::Decrypter,
offset: u64,
buffer: Option<&mut gst::BufferRef>,
requested_size: u32,
@@ -555,13 +560,14 @@ impl Decrypter {
impl ObjectSubclass for Decrypter {
const NAME: &'static str = "RsSodiumDecryptor";
+ type Type = super::Decrypter;
type ParentType = gst::Element;
type Instance = gst::subclass::ElementInstanceStruct<Self>;
type Class = subclass::simple::ClassStruct<Self>;
glib_object_subclass!();
- fn with_class(klass: &subclass::simple::ClassStruct<Self>) -> Self {
+ fn with_class(klass: &Self::Class) -> Self {
let templ = klass.get_pad_template("sink").unwrap();
let sinkpad = gst::Pad::from_template(&templ, Some("sink"));
@@ -608,7 +614,7 @@ impl ObjectSubclass for Decrypter {
}
}
- fn class_init(klass: &mut subclass::simple::ClassStruct<Self>) {
+ fn class_init(klass: &mut Self::Class) {
klass.set_metadata(
"Decrypter",
"Generic",
@@ -639,15 +645,14 @@ impl ObjectSubclass for Decrypter {
}
impl ObjectImpl for Decrypter {
- fn constructed(&self, obj: &glib::Object) {
+ fn constructed(&self, obj: &Self::Type) {
self.parent_constructed(obj);
- let element = obj.downcast_ref::<gst::Element>().unwrap();
- element.add_pad(&self.sinkpad).unwrap();
- element.add_pad(&self.srcpad).unwrap();
+ obj.add_pad(&self.sinkpad).unwrap();
+ obj.add_pad(&self.srcpad).unwrap();
}
- fn set_property(&self, _obj: &glib::Object, id: usize, value: &glib::Value) {
+ fn set_property(&self, _obj: &Self::Type, id: usize, value: &glib::Value) {
let prop = &PROPERTIES[id];
match *prop {
@@ -665,7 +670,7 @@ impl ObjectImpl for Decrypter {
}
}
- fn get_property(&self, _obj: &glib::Object, id: usize) -> Result<glib::Value, ()> {
+ fn get_property(&self, _obj: &Self::Type, id: usize) -> Result<glib::Value, ()> {
let prop = &PROPERTIES[id];
match *prop {
@@ -682,7 +687,7 @@ impl ObjectImpl for Decrypter {
impl ElementImpl for Decrypter {
fn change_state(
&self,
- element: &gst::Element,
+ element: &Self::Type,
transition: gst::StateChange,
) -> Result<gst::StateChangeSuccess, gst::StateChangeError> {
gst_debug!(CAT, obj: element, "Changing state {:?}", transition);
@@ -716,12 +721,3 @@ impl ElementImpl for Decrypter {
Ok(success)
}
}
-
-pub fn register(plugin: &gst::Plugin) -> Result<(), glib::BoolError> {
- gst::Element::register(
- Some(plugin),
- "sodiumdecrypter",
- gst::Rank::None,
- Decrypter::get_type(),
- )
-}
diff --git a/generic/sodium/src/decrypter/mod.rs b/generic/sodium/src/decrypter/mod.rs
new file mode 100644
index 000000000..4bee6635c
--- /dev/null
+++ b/generic/sodium/src/decrypter/mod.rs
@@ -0,0 +1,43 @@
+// decrypter.rs
+//
+// Copyright 2019 Jordan Petridis <jordan@centricular.com>
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//
+// SPDX-License-Identifier: MIT
+
+use glib::prelude::*;
+
+mod imp;
+
+glib_wrapper! {
+ pub struct Decrypter(ObjectSubclass<imp::Decrypter>) @extends gst::Element, gst::Object;
+}
+
+unsafe impl Send for Decrypter {}
+unsafe impl Sync for Decrypter {}
+
+pub fn register(plugin: &gst::Plugin) -> Result<(), glib::BoolError> {
+ gst::Element::register(
+ Some(plugin),
+ "sodiumdecrypter",
+ gst::Rank::None,
+ Decrypter::static_type(),
+ )
+}
diff --git a/generic/sodium/src/encrypter.rs b/generic/sodium/src/encrypter/imp.rs
index 0ba9b0e98..e17868ec7 100644
--- a/generic/sodium/src/encrypter.rs
+++ b/generic/sodium/src/encrypter/imp.rs
@@ -190,7 +190,7 @@ impl State {
}
}
-struct Encrypter {
+pub struct Encrypter {
srcpad: gst::Pad,
sinkpad: gst::Pad,
props: Mutex<Props>,
@@ -201,7 +201,7 @@ impl Encrypter {
fn sink_chain(
&self,
pad: &gst::Pad,
- element: &gst::Element,
+ element: &super::Encrypter,
buffer: gst::Buffer,
) -> Result<gst::FlowSuccess, gst::FlowError> {
gst_log!(CAT, obj: pad, "Handling buffer {:?}", buffer);
@@ -251,7 +251,7 @@ impl Encrypter {
Ok(gst::FlowSuccess::Ok)
}
- fn sink_event(&self, pad: &gst::Pad, element: &gst::Element, event: gst::Event) -> bool {
+ fn sink_event(&self, pad: &gst::Pad, element: &super::Encrypter, event: gst::Event) -> bool {
use gst::EventView;
gst_log!(CAT, obj: pad, "Handling event {:?}", event);
@@ -306,7 +306,7 @@ impl Encrypter {
}
}
- fn src_event(&self, pad: &gst::Pad, element: &gst::Element, event: gst::Event) -> bool {
+ fn src_event(&self, pad: &gst::Pad, element: &super::Encrypter, event: gst::Event) -> bool {
use gst::EventView;
gst_log!(CAT, obj: pad, "Handling event {:?}", event);
@@ -317,7 +317,12 @@ impl Encrypter {
}
}
- fn src_query(&self, pad: &gst::Pad, element: &gst::Element, query: &mut gst::QueryRef) -> bool {
+ fn src_query(
+ &self,
+ pad: &gst::Pad,
+ element: &super::Encrypter,
+ query: &mut gst::QueryRef,
+ ) -> bool {
use gst::QueryView;
gst_log!(CAT, obj: pad, "Handling query {:?}", query);
@@ -371,7 +376,7 @@ impl Encrypter {
let size = size + total_chunks * box_::MACBYTES as u64;
// add static offsets
- let size = size + super::HEADERS_SIZE as u64;
+ let size = size + crate::HEADERS_SIZE as u64;
gst_debug!(CAT, obj: pad, "Setting duration bytes: {}", size);
q.set(gst::format::Bytes::from(size));
@@ -385,13 +390,14 @@ impl Encrypter {
impl ObjectSubclass for Encrypter {
const NAME: &'static str = "RsSodiumEncrypter";
+ type Type = super::Encrypter;
type ParentType = gst::Element;
type Instance = gst::subclass::ElementInstanceStruct<Self>;
type Class = subclass::simple::ClassStruct<Self>;
glib_object_subclass!();
- fn with_class(klass: &subclass::simple::ClassStruct<Self>) -> Self {
+ fn with_class(klass: &Self::Class) -> Self {
let templ = klass.get_pad_template("sink").unwrap();
let sinkpad = gst::Pad::builder_with_template(&templ, Some("sink"))
.chain_function(|pad, parent, buffer| {
@@ -439,7 +445,7 @@ impl ObjectSubclass for Encrypter {
}
}
- fn class_init(klass: &mut subclass::simple::ClassStruct<Self>) {
+ fn class_init(klass: &mut Self::Class) {
klass.set_metadata(
"Encrypter",
"Generic",
@@ -470,15 +476,14 @@ impl ObjectSubclass for Encrypter {
}
impl ObjectImpl for Encrypter {
- fn constructed(&self, obj: &glib::Object) {
+ fn constructed(&self, obj: &Self::Type) {
self.parent_constructed(obj);
- let element = obj.downcast_ref::<gst::Element>().unwrap();
- element.add_pad(&self.sinkpad).unwrap();
- element.add_pad(&self.srcpad).unwrap();
+ obj.add_pad(&self.sinkpad).unwrap();
+ obj.add_pad(&self.srcpad).unwrap();
}
- fn set_property(&self, _obj: &glib::Object, id: usize, value: &glib::Value) {
+ fn set_property(&self, _obj: &Self::Type, id: usize, value: &glib::Value) {
let prop = &PROPERTIES[id];
match *prop {
@@ -501,7 +506,7 @@ impl ObjectImpl for Encrypter {
}
}
- fn get_property(&self, _obj: &glib::Object, id: usize) -> Result<glib::Value, ()> {
+ fn get_property(&self, _obj: &Self::Type, id: usize) -> Result<glib::Value, ()> {
let prop = &PROPERTIES[id];
match *prop {
@@ -523,7 +528,7 @@ impl ObjectImpl for Encrypter {
impl ElementImpl for Encrypter {
fn change_state(
&self,
- element: &gst::Element,
+ element: &Self::Type,
transition: gst::StateChange,
) -> Result<gst::StateChangeSuccess, gst::StateChangeError> {
gst_debug!(CAT, obj: element, "Changing state {:?}", transition);
@@ -557,12 +562,3 @@ impl ElementImpl for Encrypter {
Ok(success)
}
}
-
-pub fn register(plugin: &gst::Plugin) -> Result<(), glib::BoolError> {
- gst::Element::register(
- Some(plugin),
- "sodiumencrypter",
- gst::Rank::None,
- Encrypter::get_type(),
- )
-}
diff --git a/generic/sodium/src/encrypter/mod.rs b/generic/sodium/src/encrypter/mod.rs
new file mode 100644
index 000000000..b71dd3f91
--- /dev/null
+++ b/generic/sodium/src/encrypter/mod.rs
@@ -0,0 +1,43 @@
+// encrypter.rs
+//
+// Copyright 2019 Jordan Petridis <jordan@centricular.com>
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//
+// SPDX-License-Identifier: MIT
+
+use glib::prelude::*;
+
+mod imp;
+
+glib_wrapper! {
+ pub struct Encrypter(ObjectSubclass<imp::Encrypter>) @extends gst::Element, gst::Object;
+}
+
+unsafe impl Send for Encrypter {}
+unsafe impl Sync for Encrypter {}
+
+pub fn register(plugin: &gst::Plugin) -> Result<(), glib::BoolError> {
+ gst::Element::register(
+ Some(plugin),
+ "sodiumencrypter",
+ gst::Rank::None,
+ Encrypter::static_type(),
+ )
+}