Encode as hex
This commit is contained in:
parent
f13606d851
commit
6b54b5456a
4 changed files with 27 additions and 7 deletions
|
@ -12,6 +12,7 @@ bitstream-io = "1.3"
|
||||||
crc = "3.0"
|
crc = "3.0"
|
||||||
thiserror = "1"
|
thiserror = "1"
|
||||||
serde = { version = "1", features = ["derive"], optional = true }
|
serde = { version = "1", features = ["derive"], optional = true }
|
||||||
|
hex = { version = "0.4", default-features = false, features = ["alloc"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
|
|
|
@ -15,9 +15,9 @@ other purposes. More information can be found at
|
||||||
|
|
||||||
Implemented parts of the standard are:
|
Implemented parts of the standard are:
|
||||||
|
|
||||||
- [ ] Splice Info section
|
- [x] Splice Info section
|
||||||
- Splice Command section:
|
- Splice Commands:
|
||||||
- [ ] Splice Null
|
- [x] Splice Null
|
||||||
- [ ] Splice Insert
|
- [ ] Splice Insert
|
||||||
- [ ] Splice Schedule
|
- [ ] Splice Schedule
|
||||||
- [ ] Time Signal
|
- [ ] Time Signal
|
||||||
|
|
24
src/info.rs
24
src/info.rs
|
@ -5,9 +5,6 @@ use bitstream_io::{BigEndian, BitWrite, BitWriter};
|
||||||
use crc::{Crc, CRC_32_MPEG_2};
|
use crc::{Crc, CRC_32_MPEG_2};
|
||||||
use std::fmt::{Display, Formatter};
|
use std::fmt::{Display, Formatter};
|
||||||
|
|
||||||
#[cfg(feature = "serde")]
|
|
||||||
use serde::Serialize;
|
|
||||||
|
|
||||||
pub const MPEG_2: Crc<u32> = Crc::<u32>::new(&CRC_32_MPEG_2);
|
pub const MPEG_2: Crc<u32> = Crc::<u32>::new(&CRC_32_MPEG_2);
|
||||||
|
|
||||||
pub struct SpliceInfoSection<C, S>
|
pub struct SpliceInfoSection<C, S>
|
||||||
|
@ -125,7 +122,7 @@ impl<C> SpliceInfoSection<C, NotEncoded>
|
||||||
where
|
where
|
||||||
C: SpliceCommand,
|
C: SpliceCommand,
|
||||||
{
|
{
|
||||||
fn into_encoded(self) -> Result<SpliceInfoSection<C, EncodedData>, CueError> {
|
pub fn into_encoded(self) -> Result<SpliceInfoSection<C, EncodedData>, CueError> {
|
||||||
// Write splice command to a temporary buffer
|
// Write splice command to a temporary buffer
|
||||||
let mut splice_data = Vec::new();
|
let mut splice_data = Vec::new();
|
||||||
self.state.splice_command.write_to(&mut splice_data)?;
|
self.state.splice_command.write_to(&mut splice_data)?;
|
||||||
|
@ -205,6 +202,13 @@ where
|
||||||
pub fn as_base64(&self) -> Result<String, CueError> {
|
pub fn as_base64(&self) -> Result<String, CueError> {
|
||||||
Ok(base64::encode(self.encoded.final_data.as_slice()))
|
Ok(base64::encode(self.encoded.final_data.as_slice()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn as_hex(&self) -> Result<String, CueError> {
|
||||||
|
Ok(format!(
|
||||||
|
"0x{}",
|
||||||
|
hex::encode(self.encoded.final_data.as_slice())
|
||||||
|
))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||||
|
@ -339,6 +343,18 @@ mod tests {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn write_splice_null_as_hex() -> Result<()> {
|
||||||
|
let splice = SpliceInfoSection::new(SpliceNull::new());
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
splice.into_encoded()?.as_hex()?,
|
||||||
|
"0xfc301100000000000000fff0000000007a4fbfff".to_string()
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "serde")]
|
#[cfg(feature = "serde")]
|
||||||
#[test]
|
#[test]
|
||||||
fn serialize_as_json() -> Result<()> {
|
fn serialize_as_json() -> Result<()> {
|
||||||
|
|
|
@ -5,6 +5,9 @@ mod commands;
|
||||||
mod descriptors;
|
mod descriptors;
|
||||||
mod info;
|
mod info;
|
||||||
|
|
||||||
|
pub use commands::SpliceNull;
|
||||||
|
pub use info::{EncryptionAlgorithm, SAPType, SpliceInfoSection};
|
||||||
|
|
||||||
pub trait TransportPacketWrite {
|
pub trait TransportPacketWrite {
|
||||||
fn write_to<W>(&self, buffer: &mut W) -> Result<(), CueError>
|
fn write_to<W>(&self, buffer: &mut W) -> Result<(), CueError>
|
||||||
where
|
where
|
||||||
|
|
Loading…
Reference in a new issue