示例#1
0
        void OnFileCreated(string storage, long file)
        {
            string mimetype;
            string filename;
            long   rev;

            Storage.GetDownloadFileInfo(storage, file, out mimetype, out filename, out rev);

            if (mimetype.StartsWith("audio/"))
            {
                lock (instanceLock) {
                    if (!runningTasks.ContainsKey(storage + ":" + file + ":mp3") &&
                        !File.Exists(basePath + "/" + storage + "/mp3/" + file))
                    {
                        LongTask task = new LongTask(delegate {
                            BuildMp3(storage, file);
                        }, null, "Build MP3 " + storage + ":" + file);
                        longRunningTaskScheduler.Start(task);
                        runningTasks[storage + ":" + file + ":mp3"] = task;
                    }
                    if (!runningTasks.ContainsKey(storage + ":" + file + ":ogg") &&
                        !File.Exists(basePath + "/" + storage + "/ogg/" + file))
                    {
                        LongTask task = new LongTask(delegate {
                            BuildOgg(storage, file);
                        }, null, "Build OGG " + storage + ":" + file, LongTaskPriority.Low);

                        longRunningTaskScheduler.Start(task);
                        runningTasks[storage + ":" + file + ":ogg"] = task;
                    }
                }
            }
        }
        void OnFileCreated(string storage, long file)
        {
            string mimetype;
            string filename;
            long   rev;

            Storage.GetDownloadFileInfo(storage, file, out mimetype, out filename, out rev);

            if (mimetype.StartsWith("video/"))
            {
                lock (instanceLock) {
                    if (!runningTasks.ContainsKey(storage + ":" + file + ":mp4") &&
                        !File.Exists(basePath + "/" + storage + "/mp4/" + file))
                    {
                        LongTask task = new LongTask(delegate {
                            BuildMp4(storage, file);
                        }, null, "Build MP4 for " + storage + ":" + file);
                        longRunningTaskScheduler.Start(task);
                        runningTasks[storage + ":" + file + ":mp4"] = task;
                    }
                    if (!runningTasks.ContainsKey(storage + ":" + file + ":webm") &&
                        !File.Exists(basePath + "/" + storage + "/webm/" + file))
                    {
                        LongTask task = new LongTask(delegate {
                            BuildWebm(storage, file);
                        }, null, "Build WEBM for " + storage + ":" + file, LongTaskPriority.Low);
                        longRunningTaskScheduler.Start(task);
                        runningTasks[storage + ":" + file + ":webm"] = task;
                    }
                }
            }
        }
示例#3
0
        public VideoEncoder ScheduleEncode(Video video)
        {
            VideoEncoder encoder = null;

            lock (instanceLock)
            {
                lock (instanceLock)
                {
                    if (!runningEncoders.ContainsKey(video.node.id))
                    {
                        encoder = new VideoEncoder(this, video);
                        LongTask task = new LongTask(() => {
                            encoder.Run();
                            lock (instanceLock)
                            {
                                runningEncoders.Remove(encoder.Video.node.id);
                                runningEncodersById.Remove(encoder.Id);
                            }
                        }, video.node.owner, $"Build MP4 for '{video.node.name}' (id: {video.node.id})");
                        scheduler.Start(task);
                        runningEncoders[video.node.id]  = encoder;
                        runningEncodersById[encoder.Id] = encoder;
                    }
                    else
                    {
                        encoder = runningEncoders[video.node.id];
                    }
                }
            }
            return(encoder);
        }
示例#4
0
        public AudioEncoder ScheduleEncode(Audio audio)
        {
            AudioEncoder encoder = null;

            lock (instanceLock)
            {
                lock (instanceLock)
                {
                    if (!runningEncoders.ContainsKey(audio.node.id))
                    {
                        encoder = new AudioEncoder(this, audio);
                        LongTask task = new LongTask(() => {
                            encoder.Run();
                            lock (instanceLock)
                            {
                                runningEncoders.Remove(encoder.Audio.node.id);
                                runningEncodersById.Remove(encoder.Id);
                            }
                        }, audio.node.owner, $"Build MP3 for '{audio.node.name}' (id: {audio.node.id})");
                        scheduler.Start(task);
                        runningEncoders[audio.node.id]  = encoder;
                        runningEncodersById[encoder.Id] = encoder;
                    }
                    else
                    {
                        encoder = runningEncoders[audio.node.id];
                    }
                }
            }
            return(encoder);
        }
 public void QueuePdfGenerate(string storage, long file)
 {
     lock (instanceLock) {
         if (!runningTasks.ContainsKey(storage + ":" + file))
         {
             LongTask task = new LongTask(delegate {
                 try {
                     PdfGenerate(storage, file);
                 } finally {
                     // remove the task
                     lock (instanceLock) {
                         if (runningTasks.ContainsKey(storage + ":" + file))
                         {
                             runningTasks.Remove(storage + ":" + file);
                         }
                     }
                 }
             }, null, "Build PDF " + storage + ":" + file);
             longRunningTaskScheduler.Start(task);
             runningTasks[storage + ":" + file] = task;
         }
     }
 }