aboutsummaryrefslogtreecommitdiff
path: root/import/src/plugins/media_info.rs
diff options
context:
space:
mode:
Diffstat (limited to 'import/src/plugins/media_info.rs')
-rw-r--r--import/src/plugins/media_info.rs108
1 files changed, 52 insertions, 56 deletions
diff --git a/import/src/plugins/media_info.rs b/import/src/plugins/media_info.rs
index f21386e..5daa3ba 100644
--- a/import/src/plugins/media_info.rs
+++ b/import/src/plugins/media_info.rs
@@ -9,10 +9,7 @@ use crate::{
source_rank::ObjectImportSourceExt,
};
use anyhow::Result;
-use jellycommon::{
- jellyobject::{Object, ObjectBuffer},
- *,
-};
+use jellycommon::{jellyobject::OBB, *};
use jellydb::RowNum;
use jellyremuxer::matroska::{Segment, TrackType};
use std::path::Path;
@@ -32,84 +29,83 @@ impl ImportPlugin for MediaInfo {
ct.ic.db.transaction(&mut |txn| {
let mut node = txn.get(row)?.unwrap();
if let Some(tracks) = &seg.tracks {
- node = node.as_object().extend_object(
+ node = node.extend_object(
NO_TRACK,
TR_SOURCE.0,
- tracks.entries.iter().map(|t| {
- let mut track = ObjectBuffer::empty();
- track = track.as_object().insert(TR_CODEC, &t.codec_id);
- track = track.as_object().insert(TR_LANGUAGE, t.language.as_str());
- if let Some(name) = &t.name {
- track = track.as_object().insert(TR_NAME, name);
- }
- track = track.as_object().insert(
- TR_KIND,
- match t.track_type {
- TrackType::Audio => TRKIND_AUDIO,
- TrackType::Video => TRKIND_VIDEO,
- TrackType::Subtitle => TRKIND_TEXT,
- _ => TRKIND_UNKNOWN,
- },
- );
- if let Some(v) = &t.video {
- track = track
- .as_object()
- .insert(TR_PIXEL_WIDTH, v.pixel_width as u32);
- track = track
- .as_object()
- .insert(TR_PIXEL_HEIGHT, v.pixel_height as u32);
- if let Some(fr) = v.frame_rate {
- track = track.as_object().insert(TR_RATE, fr);
+ &tracks
+ .entries
+ .iter()
+ .map(|t| {
+ let mut track = OBB::new();
+ track.push(TR_CODEC, &t.codec_id);
+ track.push(TR_LANGUAGE, &t.language);
+ if let Some(name) = &t.name {
+ track.push(TR_NAME, name);
+ }
+ track.push(
+ TR_KIND,
+ match t.track_type {
+ TrackType::Audio => TRKIND_AUDIO,
+ TrackType::Video => TRKIND_VIDEO,
+ TrackType::Subtitle => TRKIND_TEXT,
+ _ => TRKIND_UNKNOWN,
+ },
+ );
+ if let Some(v) = &t.video {
+ track.push(TR_PIXEL_WIDTH, v.pixel_width as u32);
+ track.push(TR_PIXEL_HEIGHT, v.pixel_height as u32);
+ if let Some(fr) = v.frame_rate {
+ track.push(TR_RATE, fr);
+ }
}
- }
- if let Some(a) = &t.audio {
- track = track.as_object().insert(TR_CHANNELS, a.channels as u32);
- track = track.as_object().insert(TR_RATE, a.sampling_frequency);
- if let Some(d) = a.bit_depth {
- track = track.as_object().insert(TR_BIT_DEPTH, d as u32);
+ if let Some(a) = &t.audio {
+ track.push(TR_CHANNELS, a.channels as u32);
+ track.push(TR_RATE, a.sampling_frequency);
+ if let Some(d) = a.bit_depth {
+ track.push(TR_BIT_DEPTH, d as u32);
+ }
}
- }
- let source = Object::EMPTY
- .insert(TRSOURCE_LOCAL_PATH, &path.to_string_lossy())
- .as_object()
- .insert(TRSOURCE_LOCAL_TRACKNUM, t.track_number);
- track = track.as_object().insert(TR_SOURCE, source.as_object());
+ let source = OBB::new()
+ .with(TRSOURCE_LOCAL_PATH, &path.to_string_lossy())
+ .with(TRSOURCE_LOCAL_TRACKNUM, t.track_number)
+ .finish();
+ track.push(TR_SOURCE, &source);
- track
- }),
+ track.finish()
+ })
+ .collect::<Vec<_>>(),
);
}
if let Some(chapters) = &seg.chapters {
- node = node.as_object().extend_object(
+ node = node.extend_object(
NO_CHAPTER,
CH_NAME.0,
- chapters
+ &chapters
.edition_entries
.iter()
.flat_map(|e| &e.chapter_atoms)
.map(|cha| {
- let mut chapter = ObjectBuffer::empty();
- chapter = chapter
- .as_object()
- .insert(CH_START, cha.time_start as f64 * 1e-9);
+ let mut chapter = OBB::new();
+ chapter.push(CH_START, cha.time_start as f64 * 1e-9);
if let Some(end) = cha.time_end {
- chapter = chapter.as_object().insert(CH_END, end as f64 * 1e-9);
+ chapter.push(CH_END, end as f64 * 1e-9);
}
if let Some(display) = cha.displays.iter().next() {
- chapter = chapter.as_object().insert(CH_NAME, &display.string);
+ chapter.push(CH_NAME, &display.string);
}
- chapter
- }),
+ chapter.finish()
+ })
+ .collect::<Vec<_>>(),
);
}
let runtime = fix_invalid_runtime(
seg.info.duration.unwrap_or_default() * seg.info.timestamp_scale as f64 * 1e-9,
);
- node = node.as_object().insert_s(ct.is, NO_DURATION, runtime);
- node = node.as_object().insert_s(ct.is, NO_STORAGE_SIZE, size);
+ node = node.insert_s(ct.is, NO_DURATION, runtime);
+ node = node.insert_s(ct.is, NO_STORAGE_SIZE, size);
txn.update(row, node)?;