private UPnPError OnGetChannelGroups(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IChannelAndGroupInfo channelAndGroupInfo = ServiceRegistration.Get <ITvProvider>() as IChannelAndGroupInfo;

            if (channelAndGroupInfo == null)
            {
                return(new UPnPError(500, "IChannelAndGroupInfo service not available"));
            }

            IList <IChannelGroup> groups;
            bool result = channelAndGroupInfo.GetChannelGroups(out groups);

            outParams = new List <object> {
                result, groups
            };
            return(null);
        }
Esempio n. 2
0
        static UPnPError OnUpdateUserProfileImage(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                  CallContext context)
        {
            Guid   profileId    = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string profileImage = (string)inParams[1];

            byte[] image = null;
            if (!string.IsNullOrEmpty(profileImage))
            {
                image = Convert.FromBase64String(profileImage);
            }
            bool success = ServiceRegistration.Get <IUserProfileDataManagement>().SetProfileImageAsync(profileId, image).Result;

            outParams = new List <object> {
                success
            };
            return(null);
        }
Esempio n. 3
0
        private UPnPError OnIsCurrentlyRecording(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync;

            if (scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            string fileName = (string)inParams[0];
            AsyncResult <ISchedule> result = scheduleControl.IsCurrentlyRecordingAsync(fileName).Result;

            outParams = new List <object> {
                result.Success, result.Result
            };
            return(null);
        }
        private UPnPError OnDeInit(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            ITimeshiftControlEx timeshiftControl = ServiceRegistration.Get <ITvProvider>() as ITimeshiftControlEx;

            if (timeshiftControl == null)
            {
                return(new UPnPError(500, "ITimeshiftControl service not available"));
            }

            // We use the client's RemoteAdress as unique "user name", so we do not need to pass this argument from clients via UPnP.
            timeshiftControl.StopTimeshift(BuildUserName(context), 0);
            timeshiftControl.StopTimeshift(BuildUserName(context), 1);
            outParams = new List <object> {
                true
            };
            return(null);
        }
Esempio n. 5
0
        private UPnPError OnGetSchedules(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfoAsync     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync;
            IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            AsyncResult <IList <ISchedule> > result = scheduleControl.GetSchedulesAsync().Result;

            outParams = new List <object> {
                result.Success, result.Result
            };
            return(null);
        }
Esempio n. 6
0
        static UPnPError OnExpandResourcePathFromString(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                        CallContext context)
        {
            Guid              resourceProviderId = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            string            pathStr            = (string)inParams[1];
            IMediaAccessor    mediaAccessor      = ServiceRegistration.Get <IMediaAccessor>();
            ResourcePath      result             = null;
            IResourceProvider rp;

            if (mediaAccessor.LocalResourceProviders.TryGetValue(resourceProviderId, out rp) && rp is IBaseResourceProvider)
            {
                result = ((IBaseResourceProvider)rp).ExpandResourcePathFromString(pathStr);
            }
            outParams = new List <object> {
                result == null ? null : result.Serialize()
            };
            return(null);
        }
        private static UPnPError OnStop(DvAction action, IList <object> inParams,
                                        out IList <object> outParams, CallContext context)
        {
            TraceLogger.DebugLogParams(inParams);

            ChangeStateVariables(new List <string>
            {
                "TransportState"
            }, new List <object>
            {
                "STOPPED"
            }, action);

            OnEventStop(); // FireEfent

            outParams = action.OutArguments.Select(outArgument => outArgument.RelatedStateVar.Value).ToList();
            return(null);
        }
Esempio n. 8
0
        // User playlist data

        static UPnPError OnGetUserPlaylistData(DvAction action, IList <object> inParams, out IList <object> outParams,
                                               CallContext context)
        {
            Guid   profileId  = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            Guid   playlistId = MarshallingHelper.DeserializeGuid((string)inParams[1]);
            string key        = (string)inParams[2];
            string data;
            bool   success;

            if (!(success = ServiceRegistration.Get <IUserProfileDataManagement>().GetUserPlaylistData(profileId, playlistId, key, out data)))
            {
                data = null;
            }
            outParams = new List <object> {
                data, success
            };
            return(null);
        }
        private static UPnPError OnSetVolume(DvAction action, IList <object> inParams,
                                             out IList <object> outParams, CallContext context)
        {
            TraceLogger.DebugLogParams(inParams);
            ChangeStateVariable("Volume", inParams[2], action);
            // we don't want to fire an event yet
            //action.ParentService.StateVariables["Volume"].Value = inParams[2];

            OnEvenSetVolumeEventArgs eventArgs = new OnEvenSetVolumeEventArgs();

            eventArgs.Volume = inParams[2];

            OnEventVolume(eventArgs); // Fire Event

            outParams = action.OutArguments.Select(outArgument => outArgument.RelatedStateVar.Value).ToList();

            return(null);
        }
Esempio n. 10
0
        static UPnPError OnSetUserMediaItemData(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                CallContext context)
        {
            Guid   profileId   = MarshallingHelper.DeserializeGuid((string)inParams[0]);
            Guid   mediaItemId = MarshallingHelper.DeserializeGuid((string)inParams[1]);
            string key         = (string)inParams[2];
            string data        = (string)inParams[3];
            bool   success     = ServiceRegistration.Get <IUserProfileDataManagement>().SetUserMediaItemDataAsync(profileId, mediaItemId, key, data).Result;

            if (success)
            {
                ServiceRegistration.Get <IMediaLibrary>().UserDataUpdated(profileId, mediaItemId, key, data);
            }
            outParams = new List <object> {
                success
            };
            return(null);
        }
Esempio n. 11
0
        static UPnPError OnGetFilesData(DvAction action, IList <object> inParams, out IList <object> outParams,
                                        CallContext context)
        {
            outParams = null;
            ResourcePath path = ResourcePath.Deserialize((string)inParams[0]);

            if (path == null)
            {
                return(new UPnPError(600, "Invalid resource path"));
            }
            if (!IsAllowedToAccess(path))
            {
                return(new UPnPError(600, "Access is not allowed to this resource path"));
            }
            IResourceAccessor ra;

            if (!path.TryCreateLocalResourceAccessor(out ra))
            {
                return(new UPnPError(600, "The given path is not accessible"));
            }
            using (ra)
            {
                ICollection <IFileSystemResourceAccessor> res = FileSystemResourceNavigator.GetFiles(ra, false);
                IList <ResourcePathMetadata> result           = null;
                if (res != null)
                {
                    result = new List <ResourcePathMetadata>();
                    foreach (IFileSystemResourceAccessor fileAccessor in res)
                    {
                        using (fileAccessor)
                            result.Add(new ResourcePathMetadata
                            {
                                ResourceName      = fileAccessor.ResourceName,
                                HumanReadablePath = fileAccessor.ResourcePathName,
                                ResourcePath      = fileAccessor.CanonicalLocalResourcePath
                            });
                    }
                }
                outParams = new List <object> {
                    result
                };
            }
            return(null);
        }
        private static UPnPError OnSetAVTransportURI(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            TraceLogger.DebugLogParams(inParams);

            ChangeStateVariables(new List <string>
            {
                "AVTransportURI",
                "AVTransportURIMetaData",
                "PlaybackStorageMedium"
            }, new List <object>
            {
                inParams[1],
                inParams[2],
                "NETWORK" // we always play from a network resource
            }, action);

            // From the Documentation:
            // If the current transport state is “NO MEDIA PRESENT” the transport state changes to “STOPPED”.
            // In all other cases, this action does not change the transport state of the specified instance.
            if (action.ParentService.StateVariables["TransportState"].Value.ToString() == "NO_MEDIA_PRESENT")
            {
                TraceLogger.WriteLine("Change State to STOPPED");
                ChangeStateVariables(new List <string>
                {
                    "TransportState"
                }, new List <object>
                {
                    "STOPPED"
                }, action);
            }

            outParams = action.OutArguments.Select(outArgument => outArgument.RelatedStateVar.Value).ToList();

            OnEventSetAVTransportURIEventArgs eventArgs = new OnEventSetAVTransportURIEventArgs
            {
                CurrentURI         = inParams[1] as string,
                CurrentURIMetaData = inParams[2] as string
            };

            OnEventSetAVTransportURI(eventArgs);

            TraceLogger.WriteLine("OnSetAVTransportURI RETURN");
            return(null);
        }
        private UPnPError OnGetProgramsForSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            ISchedule        schedule = (ISchedule)inParams[0];
            IList <IProgram> programs;
            bool             result = scheduleControl.GetProgramsForSchedule(schedule, out programs);

            outParams = new List <object> {
                result, programs
            };
            return(null);
        }
        private UPnPError OnGetSchedules(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfo     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfo;
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            IList <ISchedule> schedules;
            bool result = scheduleControl.GetSchedules(out schedules);

            outParams = new List <object> {
                result, schedules
            };
            return(null);
        }
Esempio n. 15
0
        private UPnPError OnGetProgramsForSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync;

            if (scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            ISchedule schedule = (ISchedule)inParams[0];

            AsyncResult <IList <IProgram> > result = scheduleControl.GetProgramsForScheduleAsync(schedule).Result;

            outParams = new List <object> {
                result.Success, result.Result
            };
            return(null);
        }
Esempio n. 16
0
        private UPnPError OnRemoveSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfoAsync     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync;
            IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            ISchedule schedule = (ISchedule)inParams[0];
            bool      result   = scheduleControl.RemoveScheduleAsync(schedule).Result;

            outParams = new List <object> {
                result
            };
            return(null);
        }
        private UPnPError OnIsCurrentlyRecording(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            string    fileName = (string)inParams[0];
            ISchedule schedule;
            bool      result = scheduleControl.IsCurrentlyRecording(fileName, out schedule);

            outParams = new List <object> {
                result, schedule
            };
            return(null);
        }
        private static UPnPError OnGetBlueVideoBlackLevel(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                          CallContext context)
        {
            TraceLogger.DebugLogParams(inParams);
            foreach (var inArgument in action.InArguments)
            {
                TraceLogger.WriteLine("In Argument: " + inArgument.Name);
                switch (inArgument.Name)
                {
                case "InstanceID":
                    inArgument.RelatedStateVar.Value = inParams[0];
                    break;
                }
            }

            outParams = action.OutArguments.Select(outArgument => outArgument.RelatedStateVar.Value).ToList();

            return(null);
        }
Esempio n. 19
0
        private UPnPError OnRemoveSchedule(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfo     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfo;
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            int      programId = (int)inParams[0];
            IProgram program;
            bool     result = programInfo.GetProgram(programId, out program) && scheduleControl.RemoveSchedule(program);

            outParams = new List <object> {
                result
            };
            return(null);
        }
Esempio n. 20
0
        protected static string CreateResultDocument(DvAction action, IList <OutParameter> outParameters, bool forceSimpleValues)
        {
            StringBuilder result = new StringBuilder(2000);

            using (StringWriterWithEncoding stringWriter = new StringWriterWithEncoding(result, UPnPConsts.UTF8_NO_BOM))
                using (XmlWriter writer = XmlWriter.Create(stringWriter, UPnPConfiguration.DEFAULT_XML_WRITER_SETTINGS))
                {
                    SoapHelper.WriteSoapEnvelopeStart(writer, true);
                    writer.WriteStartElement("u", action.Name + "Response", action.ParentService.ServiceTypeVersion_URN);
                    foreach (OutParameter parameter in outParameters)
                    {
                        writer.WriteStartElement(parameter.Argument.Name);
                        parameter.Argument.SoapSerializeArgument(parameter.Value, forceSimpleValues, writer);
                        writer.WriteEndElement(); // parameter.Argument.Name
                    }
                    writer.WriteEndElement();     // u:[action.Name]Response
                    SoapHelper.WriteSoapEnvelopeEndAndClose(writer);
                }
            return(result.ToString());
        }
Esempio n. 21
0
        private UPnPError OnGetNowNextProgram(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfoAsync programInfo = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync;

            if (programInfo == null)
            {
                return(new UPnPError(500, "IProgramInfo service not available"));
            }

            int channelId = (int)inParams[0];
            AsyncResult <IProgram[]> result = programInfo.GetNowNextProgramAsync(new Channel {
                ChannelId = channelId
            }).Result;

            outParams = new List <object> {
                result.Success, result.Result[0], result.Result[1]
            };
            return(null);
        }
Esempio n. 22
0
        private UPnPError OnStopTimeshift(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            ITimeshiftControlEx timeshiftControl = ServiceRegistration.Get <ITvProvider>() as ITimeshiftControlEx;

            if (timeshiftControl == null)
            {
                return(new UPnPError(500, "ITimeshiftControl service not available"));
            }

            int slotIndex = (int)inParams[0];

            // We use the client's RemoteAdress as unique "user name", so we do not need to pass this argument from clients via UPnP.
            bool result = timeshiftControl.StopTimeshiftAsync(BuildUserName(context), slotIndex).Result;

            outParams = new List <object> {
                result
            };
            return(null);
        }
Esempio n. 23
0
        private UPnPError OnGetChannels(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IChannelAndGroupInfoAsync channelAndGroupInfo = ServiceRegistration.Get <ITvProvider>() as IChannelAndGroupInfoAsync;

            if (channelAndGroupInfo == null)
            {
                return(new UPnPError(500, "IChannelAndGroupInfo service not available"));
            }

            int channelGroupId = (int)inParams[0];

            AsyncResult <IList <IChannel> > result = channelAndGroupInfo.GetChannelsAsync(new ChannelGroup {
                ChannelGroupId = channelGroupId
            }).Result;

            outParams = new List <object> {
                result.Success, result.Result
            };
            return(null);
        }
Esempio n. 24
0
        private UPnPError OnGetRecordingStatus(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfo     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfo;
            IScheduleControl scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControl;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            int             programId = (int)inParams[0];
            IProgram        program;
            RecordingStatus recordingStatus = RecordingStatus.None;
            bool            result          = programInfo.GetProgram(programId, out program) && scheduleControl.GetRecordingStatus(program, out recordingStatus);

            outParams = new List <object> {
                result, recordingStatus.ToString()
            };
            return(null);
        }
Esempio n. 25
0
        static UPnPError OnGetUserSelectedAdditionalDataList(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                             CallContext context)
        {
            Guid profileId = MarshallingHelper.DeserializeGuid((string)inParams[0]);

            string[]      keys      = MarshallingHelper.ParseCsvStringCollection((string)inParams[1]).ToArray();
            bool          sortByKey = (bool)inParams[2];
            SortDirection sortOrder = (SortDirection)(int)inParams[3];
            uint?         offset    = (uint?)inParams[4];
            uint?         limit     = (uint?)inParams[5];

            var result = ServiceRegistration.Get <IUserProfileDataManagement>().GetUserSelectedAdditionalDataListAsync(profileId, keys, sortByKey, sortOrder, offset, limit).Result;
            var data   = result.Success ?
                         MarshallingHelper.SerializeTuple3EnumerationToCsv(result.Result.Select(t => new Tuple <string, string, string>(t.Item1, t.Item2.ToString(), t.Item3)))
         : null;

            outParams = new List <object> {
                data, result.Success
            };
            return(null);
        }
Esempio n. 26
0
        private UPnPError OnGetProgramsByTitle(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfoAsync programInfo = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync;

            if (programInfo == null)
            {
                return(new UPnPError(500, "IProgramInfo service not available"));
            }

            string   title    = (string)inParams[0];
            DateTime timeFrom = (DateTime)inParams[1];
            DateTime timeTo   = (DateTime)inParams[2];

            AsyncResult <IList <IProgram> > result = programInfo.GetProgramsAsync(title, timeFrom, timeTo).Result;

            outParams = new List <object> {
                result.Success, result.Result
            };
            return(null);
        }
Esempio n. 27
0
        private UPnPError OnRemoveScheduleForProgram(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfoAsync     programInfo     = ServiceRegistration.Get <ITvProvider>() as IProgramInfoAsync;
            IScheduleControlAsync scheduleControl = ServiceRegistration.Get <ITvProvider>() as IScheduleControlAsync;

            if (programInfo == null || scheduleControl == null)
            {
                return(new UPnPError(500, "IProgramInfo or IScheduleControl service not available"));
            }

            int programId = (int)inParams[0];
            ScheduleRecordingType recordingType = (ScheduleRecordingType)inParams[1];
            IProgram program;
            var      result = programInfo.GetProgram(programId, out program) && scheduleControl.RemoveScheduleForProgramAsync(program, recordingType).Result;

            outParams = new List <object> {
                result
            };
            return(null);
        }
Esempio n. 28
0
        static UPnPError OnDoesResourceExist(DvAction action, IList <object> inParams, out IList <object> outParams,
                                             CallContext context)
        {
            outParams = null;
            ResourcePath path = ResourcePath.Deserialize((string)inParams[0]);

            if (!IsAllowedToAccess(path))
            {
                return(new UPnPError(600, "Access is not allowed to this resource path"));
            }
            IResourceAccessor ra;
            bool result = path.TryCreateLocalResourceAccessor(out ra);

            if (result)
            {
                ra.Dispose();
            }
            outParams = new List <object> {
                result
            };
            return(null);
        }
Esempio n. 29
0
        private static UPnPError OnGetProtocolInfo(DvAction action, IList <object> inParams, out IList <object> outParams,
                                                   CallContext context)
        {
            string source = "";
            //string sink = "http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_MP3,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_192,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_BASE,http-get:*:audio/3gpp:DLNA.ORG_PN=AAC_ISO,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPLL_BASE,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_192,http-get:*:audio/3gpp:DLNA.ORG_PN=AAC_ISO_192,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320,http-get:*:audio/3gpp:DLNA.ORG_PN=AAC_ISO_320,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_MULT5_ADTS,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_MULT5_ISO,http-get:*:audio/3gpp:DLNA.ORG_PN=AAC_MULT5_ISO,http-get:*:video/3gpp:DLNA.ORG_PN=AVC_3GPP_BL_QCIF15_AAC,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO,http-get:*:video/3gpp:DLNA.ORG_PN=AVC_3GPP_BL_QCIF15_HEAAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF15_AAC,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF15_AAC_350,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF15_AAC_520,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF15_HEAAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF15_HEAAC_350,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF30_AAC_940,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF30_AAC_MULT5,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF30_HEAAC_L2,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF30_MPEG1_L3,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L12_CIF15_HEAAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L12_CIF15_HEAACv2,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L12_CIF15_HEAACv2_350,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L1B_QCIF15_HEAAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L1B_QCIF15_HEAACv2,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L2_CIF30_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L31_HD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L32_HD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L3L_SD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L3L_SD_HEAAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L3_SD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_LC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_HEAAC_L2,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_HEAAC_L4,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF15_AAC,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF15_AAC_540,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_BL_CIF15_AAC_540_ISO,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHM_BASE,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF15_AAC_540_T,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_BL_CIF15_AAC_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF15_AAC_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF30_AAC_940,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_BL_CIF30_AAC_940_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF30_AAC_940_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF30_AAC_MULT5,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_BL_CIF30_AAC_MULT5_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF30_AAC_MULT5_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF30_AC3,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_BL_CIF30_AC3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF30_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF30_MPEG1_L3,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_BL_CIF30_MPEG1_L3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_BL_CIF30_MPEG1_L3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_JP_AAC_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AC3,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AC3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AC3,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AC3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T,http-get:*:audio/mp4:DLNA.ORG_PN=HEAACv2_L2,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAACv2_L2,http-get:*:audio/mp4:DLNA.ORG_PN=HEAACv2_L2_128,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAACv2_L2_128,http-get:*:audio/mp4:DLNA.ORG_PN=HEAACv2_L2_320,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAACv2_L2_320,http-get:*:audio/mp4:DLNA.ORG_PN=HEAACv2_L3,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAACv2_L3,http-get:*:audio/mp4:DLNA.ORG_PN=HEAACv2_L4,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAACv2_L4,http-get:*:audio/mp4:DLNA.ORG_PN=HEAACv2_MULT5,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAACv2_MULT5,http-get:*:audio/mp4:DLNA.ORG_PN=HEAAC_L2_ISO,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAAC_L2_ISO,http-get:*:audio/mp4:DLNA.ORG_PN=HEAAC_L2_ISO_128,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAAC_L2_ISO_128,http-get:*:audio/mp4:DLNA.ORG_PN=HEAAC_L2_ISO_320,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAAC_L2_ISO_320,http-get:*:audio/mp4:DLNA.ORG_PN=HEAAC_L3_ISO,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAAC_L3_ISO,http-get:*:audio/mp4:DLNA.ORG_PN=HEAAC_MULT5_ISO,http-get:*:audio/3gpp:DLNA.ORG_PN=HEAAC_MULT5_ISO,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG_ICO,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM_ICO,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN,http-get:*:audio/L16:DLNA.ORG_PN=LPCM,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL,http-get:*:audio/L16:DLNA.ORG_PN=LPCM_low,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVSPML_MP3,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3X,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_HEAAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_HEAAC_MULT5,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_HEAAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L2_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_VGA_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_VGA_HEAAC,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG4_P2_TS_SP_AC3,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG4_P2_TS_SP_AC3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG4_P2_TS_SP_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG4_P2_TS_SP_MPEG1_L3,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG4_P2_TS_SP_MPEG1_L3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG4_P2_TS_SP_MPEG1_L3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG4_P2_TS_SP_MPEG2_L2,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG4_P2_TS_SP_MPEG2_L2_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG4_P2_TS_SP_MPEG2_L2_T,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC_XAC3,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL_XAC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_KO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_KO_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_KO_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_KO_XAC3,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_KO_XAC3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_KO_XAC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_NA_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA_XAC3,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_NA_XAC3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA_XAC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_JP_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_MP_LL_AAC,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_MP_LL_AAC_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_MP_LL_AAC_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_XAC3,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_XAC3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_XAC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_XAC3,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_XAC3_ISO,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_XAC3_T,http-get:*:image/png:DLNA.ORG_PN=PNG_LRG,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVSPML_BASE,http-get:*:image/png:DLNA.ORG_PN=PNG_LRG_ICO,http-get:*:image/png:DLNA.ORG_PN=PNG_TN,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVSPLL_BASE,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVMED_PRO,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMALSL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMALSL_MULT5,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAPRO,http-get:*:video/x-ms-asf:DLNA.ORG_PN=WMDRM_VC1_ASF_AP_L1_WMA,http-get:*:video/x-ms-asf:DLNA.ORG_PN=WMDRM_VC1_ASF_AP_L2_WMA,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMDRM_WMABASE,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMDRM_WMAFULL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMDRM_WMALSL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMDRM_WMALSL_MULT5,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMDRM_WMAPRO,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVHIGH_FULL,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVMED_FULL,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVHIGH_PRO,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVHM_BASE,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMDRM_WMVMED_BASE,http-get:*:video/x-ms-wmv:*,http-get:*:audio/x-ms-wma:*,http-get:*:video/x-ms-asf:*,http-get:*:image/png:*,http-get:*:audio/mpeg:*,http-get:*:audio/L16:*,http-get:*:image/jpeg:*,http-get:*:video/mpeg:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/mp4:*,http-get:*:video/3gpp:*,http-get:*:audio/3gpp:*,http-get:*:audio/mp4:*,http-get:*:audio/vnd.dlna.adts:*,http-get:*:application/vnd.ms-search:*,http-get:*:application/vnd.ms-wpl:*,http-get:*:application/x-ms-wmd:*,http-get:*:application/x-ms-wmz:*,http-get:*:application/x-shockwave-flash:*,http-get:*:audio/3gpp2:*,http-get:*:audio/aiff:*,http-get:*:audio/basic:*,http-get:*:audio/l8:*,http-get:*:audio/mid:*,http-get:*:audio/wav:*,http-get:*:audio/x-mpegurl:*,http-get:*:audio/x-ms-wax:*,http-get:*:image/bmp:*,http-get:*:image/gif:*,http-get:*:image/vnd.ms-photo:*,http-get:*:video/3gpp2:*,http-get:*:video/avi:*,http-get:*:video/quicktime:*,http-get:*:video/x-ms-wm:*,http-get:*:video/x-ms-wmx:*,http-get:*:video/x-ms-wvx:*,http-get:*:video/x-msvideo:*,http-get:*:video/x-flv:*,http-get:*:video/x-ogm:*,http-get:*:audio/x-wavpack:*,rtsp-rtp-udp:*:audio/L16:*,rtsp-rtp-udp:*:audio/L8:*,rtsp-rtp-udp:*:audio/mpeg:*,rtsp-rtp-udp:*:audio/x-ms-wma:*,rtsp-rtp-udp:*:video/x-ms-wmv:*,rtsp-rtp-udp:*:audio/x-asf-pf:*";
            string sink = "http-get:*:audio/mpegurl:*," +
                          "http-get:*:audio/mp3:*," +
                          "http-get:*:audio/mpeg:*," +
                          "http-get:*:audio/x-ms-wma:*," +
                          "http-get:*:audio/wma:*," +
                          "http-get:*:audio/mpeg3:*," +
                          "http-get:*:video/x-ms-wmv:*," +
                          "http-get:*:video/x-ms-asf:*," +
                          "http-get:*:video/x-ms-avi:*," +
                          "http-get:*:video/mpeg:*," +
                          "http-get:*:image/*:*";

            outParams = new List <object> {
                source, sink
            };
            return(null);
        }
Esempio n. 30
0
        private UPnPError OnGetNowNextProgram(DvAction action, IList <object> inParams, out IList <object> outParams, CallContext context)
        {
            outParams = new List <object>();
            IProgramInfo programInfo = ServiceRegistration.Get <ITvProvider>() as IProgramInfo;

            if (programInfo == null)
            {
                return(new UPnPError(500, "IProgramInfo service not available"));
            }

            int      channelId = (int)inParams[0];
            IProgram programNow;
            IProgram programNext;
            bool     result = programInfo.GetNowNextProgram(new Channel {
                ChannelId = channelId
            }, out programNow, out programNext);

            outParams = new List <object> {
                result, programNow, programNext
            };
            return(null);
        }