Exemple #1
0
        public void Transcode(MediaSource source, string mcxuser)
        {
            // Modified to ensure a user will only transcode one file at a time.
            string key = source.Key;

            lock (sTranscoders)
            {
                if (sTranscoders.ContainsKey(key))
                {
                    // Transcoding service is/was allready transcoding the file
                    Utilities.DebugLine("Transcode [Already Processing]: {0}, status={1}", source, sTranscoders[key].Status);

                    if ((sTranscoders[key].Status == TranscodingStatus.BufferReady) ||
                        (sTranscoders[key].Status == TranscodingStatus.Done) ||
                        (sTranscoders[key].Status == TranscodingStatus.Initializing))
                    {
                        NotifyAll(key, sTranscoders[key].Status);
                        return;
                    }
                }
            }

            // This file if not allready being transcoded. Check user is not allready transcoding
            lock (sUserSession)
            {
                if (sUserSession.ContainsKey(mcxuser))
                {
                    // Allready transcoding, cancel the job
                    Utilities.DebugLine("Transcode [User allready transcoding]: {0}", mcxuser);
                    if (sTranscoders.ContainsKey(sUserSession[mcxuser]))
                    {
                        if ((sTranscoders[sUserSession[mcxuser]].Status == TranscodingStatus.BufferReady) ||
                            (sTranscoders[sUserSession[mcxuser]].Status == TranscodingStatus.Initializing))
                        {
                            Cancel(sUserSession[mcxuser]);
                        }
                    }
                    sUserSession.Remove(mcxuser);
                }
            }

            // Start transcoding session
            sTranscoders[key]     = new Transcoder(source);
            sUserSession[mcxuser] = key;
        }
Exemple #2
0
        public void Cancel(string key)
        {
            Transcoder t = null;

            lock (sTranscoders)
                if (sTranscoders.ContainsKey(key) == false)
                {
                    Utilities.DebugLine("Cancel [Not present]: {0}", key);
                }
                else
                {
                    t = sTranscoders[key];
                    sTranscoders.Remove(key);
                }
            if (t != null)
            {
                t.Cancel();
            }
        }
        public void Transcode(MediaSource source, string mcxuser)
        {
            // Modified to ensure a user will only transcode one file at a time.
            string key = source.Key;
            lock (sTranscoders)
            {
                if (sTranscoders.ContainsKey(key))
                {
                    // Transcoding service is/was allready transcoding the file
                    Utilities.DebugLine("Transcode [Already Processing]: {0}, status={1}", source, sTranscoders[key].Status);

                    if ((sTranscoders[key].Status == TranscodingStatus.BufferReady) ||
                        (sTranscoders[key].Status == TranscodingStatus.Done) ||
                        (sTranscoders[key].Status == TranscodingStatus.Initializing))
                    {
                        NotifyAll(key, sTranscoders[key].Status);
                        return;
                    }
                }
            }

            // This file if not allready being transcoded. Check user is not allready transcoding
            lock (sUserSession)
            {
                if (sUserSession.ContainsKey(mcxuser))
                {
                    // Allready transcoding, cancel the job
                    Utilities.DebugLine("Transcode [User allready transcoding]: {0}", mcxuser);
                    if (sTranscoders.ContainsKey(sUserSession[mcxuser]))
                    {
                        if ((sTranscoders[sUserSession[mcxuser]].Status == TranscodingStatus.BufferReady) ||
                            (sTranscoders[sUserSession[mcxuser]].Status == TranscodingStatus.Initializing))
                        {
                            Cancel(sUserSession[mcxuser]);
                        }
                    }
                    sUserSession.Remove(mcxuser);
                }
            }

            // Start transcoding session
            sTranscoders[key] = new Transcoder(source);
            sUserSession[mcxuser] = key;
        }