void CMP3Info::getFormattedLength(char* input) { // s = complete number of seconds int s = getLengthInSeconds(); // ss = seconds to display int ss = s%60; // m = complete number of minutes int m = (s-ss)/60; // mm = minutes to display int mm = m%60; // h = complete number of hours int h = (m-mm)/60; char szTime[16]; // temporary string // make a "hh:mm:ss" if there is any hours, otherwise // make it "mm:ss" if (h>0) sprintf(szTime,"%02d:%02d:%02d", h,mm,ss); else sprintf(szTime, "%02d:%02d", mm,ss); // copy to the inputstring strcpy(input, szTime); }
TranscodeProcess *DlnaYouTubeVideo::getTranscodeProcess() { FfmpegTranscoding* transcodeProcess = new FfmpegTranscoding(log()); transcodeProcess->setUrl(m_streamUrl); transcodeProcess->setLengthInSeconds(getLengthInSeconds()); transcodeProcess->setFormat(transcodeFormat); transcodeProcess->setBitrate(bitrate()); transcodeProcess->setAudioLanguages(audioLanguages()); transcodeProcess->setSubtitleLanguages(subtitleLanguages()); transcodeProcess->setFrameRate(framerate()); transcodeProcess->setAudioChannelCount(channelCount()); transcodeProcess->setAudioSampleRate(samplerate()); return transcodeProcess; }
/* * Returns XML (DIDL) representation of the DLNA node. It gives a * complete representation of the item, with as many tags as available. * * Reference: http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v1-Service.pdf */ QDomElement DlnaVideoItem::getXmlContentDirectory(QDomDocument *xml, QStringList properties) const { if (!xml) return QDomElement(); QDomElement xml_obj = xml->createElement("item"); updateXmlContentDirectory(xml, &xml_obj, properties); // properties optional of videoItem if (properties.contains("*") or properties.contains("upnp:genre")) { QDomElement upnpGenre = xml->createElement("upnp:genre"); upnpGenre.appendChild(xml->createTextNode(metaDataGenre())); xml_obj.appendChild(upnpGenre); } if (properties.contains("*") or properties.contains("upnp:longDescription")) { } if (properties.contains("*") or properties.contains("upnp:producer")) { } if (properties.contains("*") or properties.contains("upnp:rating")) { } if (properties.contains("*") or properties.contains("upnp:actor")) { } if (properties.contains("*") or properties.contains("upnp:director")) { } if (properties.contains("*") or properties.contains("dc:description")) { } if (properties.contains("*") or properties.contains("dc:publisher")) { } if (properties.contains("*") or properties.contains("dc:language")) { } if (properties.contains("*") or properties.contains("dc:relation")) { } // add <res> element QTime duration(0, 0, 0); QDomElement res = xml->createElement("res"); res.setAttribute("xmlns:dlna", "urn:schemas-dlna-org:metadata-1-0/"); // mandatory properties: protocolInfo res.setAttribute("protocolInfo", getProtocolInfo()); // optional properties if ((properties.contains("*") or properties.contains("res@bitrate")) and bitrate() != -1) { // bitrate in bytes/sec res.setAttribute("bitrate", QString("%1").arg(qRound(double(bitrate())/8.0))); } if (properties.contains("*") or properties.contains("res@resolution")) { res.setAttribute("resolution", resolution()); } if (properties.contains("*") or properties.contains("res@duration")) { res.setAttribute("duration", QString("%1").arg(duration.addSecs(getLengthInSeconds()).toString("hh:mm:ss"))); } if (properties.contains("*") or properties.contains("res@sampleFrequency")) { res.setAttribute("sampleFrequency", QString("%1").arg(samplerate())); } if (properties.contains("*") or properties.contains("res@nrAudioChannels")) { res.setAttribute("nrAudioChannels", QString("%1").arg(channelCount())); } if ((properties.contains("*") or properties.contains("res@size")) and size() != -1) { // size in bytes res.setAttribute("size", QString("%1").arg(size())); } res.appendChild(xml->createTextNode(QString("http://%2:%3/get/%1/%4").arg(getResourceId()).arg(host).arg(port).arg(getName().toUtf8().toPercentEncoding().constData()))); xml_obj.appendChild(res); return xml_obj; }