private void callbackMetaReady(string filename, VideoMetadataUseful metaXml) { if (vclip == null) { return; } vclip.CustomAudioLengthSec = metaXml.AudioDurationSec; this.InvokeOrNot_IDontGiveAShit_JustDoIt(() => updateAudioInfo(vclip)); //shitboxAlignVideoAudioControl.Update_audionDuration(VClip.CustomAudioLengthSec); }
private void metaGenerator_MetaReady(string filename, VideoMetadataUseful meta) { lock (this) { // 2 cases: meta is ready for one of the draggies, or for one of the outstanding media var draggyMaybe = _draggies.FirstOrDefault(x => x.Filename == filename); if (draggyMaybe != null) { draggyMaybe.Meta = meta; if (MetaReadyForDraggy != null) { MetaReadyForDraggy(filename, meta); } return; } // at this point it could be one of outstanding media (video or audio) var outstandingMaybeVid = outstandingVideo.FirstOrDefault(x => x.FileName == filename); if (outstandingMaybeVid != null) { // TODO: handle variable fps, fps == proj.fps and counted frames for PENTAX avis outstandingMaybeVid.FileLengthSec = meta.GetVideoDurationSec(Proj.FrameRate); // remember, this clip could be different fps, we need proj's fps var projFramesThisOne = Proj.SecToFrame(outstandingMaybeVid.FileLengthSec ?? 0); outstandingMaybeVid.FileLengthFrames = projFramesThisOne; outstandingMaybeVid.FrameEnd = projFramesThisOne; if (outstandingMaybeVid is VidkaClipVideo) { var outstandingMaybeVidVVV = (VidkaClipVideo)outstandingMaybeVid; outstandingMaybeVidVVV.HasAudioXml = meta.HasAudio; } outstandingMaybeVid.IsNotYetAnalyzed = false; outstandingVideo.Remove(outstandingMaybeVid); if (MetaReadyForOutstandingVideo != null) { MetaReadyForOutstandingVideo(outstandingMaybeVid, meta); } return; } var outstandingMaybeAud = outstandingAudio.FirstOrDefault(x => x.FileName == filename); if (outstandingMaybeAud != null) { outstandingMaybeAud.FileLengthSec = meta.AudioDurationSec; var projFramesThisOne = Proj.SecToFrame(outstandingMaybeAud.FileLengthSec ?? 0); outstandingMaybeAud.FileLengthFrames = projFramesThisOne; outstandingMaybeAud.FrameEnd = projFramesThisOne; outstandingAudio.Remove(outstandingMaybeAud); if (MetaReadyForOutstandingAudio != null) { MetaReadyForOutstandingAudio(outstandingMaybeAud, meta); } return; } } }