QFileInfo Content::GetRecordingArtwork ( const QString &sType, const QString &sInetref, int nSeason, int nWidth, int nHeight) { ArtworkMap map = GetArtwork(sInetref, nSeason); VideoArtworkType type = kArtworkCoverart; QString sgroup; if (sType.toLower() == "coverart") { sgroup = "Coverart"; type = kArtworkCoverart; } else if (sType.toLower() == "fanart") { sgroup = "Fanart"; type = kArtworkFanart; } else if (sType.toLower() == "banner") { sgroup = "Banners"; type = kArtworkBanner; } QUrl url(map.value(type).url); QString sFileName = url.path(); return GetImageFile( sgroup, sFileName, nWidth, nHeight); }
// NOTE: If you rename this, you must also update upnpcdsvideo.cpp QFileInfo Content::GetVideoArtwork( const QString &sType, int nId, int nWidth, int nHeight ) { LOG(VB_UPNP, LOG_INFO, QString("GetVideoArtwork ID = %1").arg(nId)); QString sgroup = "Coverart"; QString column = "coverfile"; if (sType.toLower() == "coverart") { sgroup = "Coverart"; column = "coverfile"; } else if (sType.toLower() == "fanart") { sgroup = "Fanart"; column = "fanart"; } else if (sType.toLower() == "banner") { sgroup = "Banners"; column = "banner"; } else if (sType.toLower() == "screenshot") { sgroup = "Screenshots"; column = "screenshot"; } // ---------------------------------------------------------------------- // Read Video artwork file path from database // ---------------------------------------------------------------------- MSqlQuery query(MSqlQuery::InitCon()); QString querystr = QString("SELECT %1 FROM videometadata WHERE " "intid = :ITEMID").arg(column); query.prepare(querystr); query.bindValue(":ITEMID", nId); if (!query.exec()) MythDB::DBError("GetVideoArtwork ", query); if (!query.next()) return QFileInfo(); QString sFileName = query.value(0).toString(); if (sFileName.isEmpty()) return QFileInfo(); return GetImageFile( sgroup, sFileName, nWidth, nHeight ); }
unsigned int next_cluster(unsigned int current_cluster){ unsigned char temp1[4]; FILE* ImageFile= GetImageFile(); //the start of the fat table is 4000 //CHANGE THE HARD CODED NUMBER unsigned int temp = FAT_Start() + current_cluster*4; //printf("Temp:%d \n",temp); fseek(ImageFile,temp,SEEK_SET); fread(temp1,sizeof(unsigned char),4,ImageFile); return little_to_big(temp1,4); }
void FileGrabber::operator ()() { while (initialised_) { if (frame_grabber_->IsFrameBufferFull()==false) { if (files_vec_.size() > (unsigned int)frame_id_) { Frame frame; string file_full_path = files_vec_.at(frame_id_); frame.frame_id = frame_id_; frame.data = GetImageFile(file_full_path); ++frame_id_; frame_grabber_->SetFrame(frame); } } else { boost::this_thread::sleep(boost::posix_time::milliseconds(1)); } } }
struct DirectoryEntry* GetDirectoryContents(unsigned int clusterNum) { FILE* inFile = GetImageFile(); // maximum entries is 2048 static struct DirectoryEntry returnArray[2048]; unsigned int index = 0; // raw data read char rawData[32]; // next cluster unsigned int nextClusterIndex = clusterNum; do { unsigned int byteIndex = FindFirstSectorOfCluster(nextClusterIndex); //printf("Byte index: %x\n", byteIndex); unsigned int byteIndexOffset = 0; do { fseek(inFile, byteIndex + byteIndexOffset, SEEK_SET); fread(rawData, sizeof(char), 32, inFile); // if first byte 0x00 or 0xE5 (slide 10 of Slides_Week12.ppt) // then end of directory if (rawData[0] == 0x00 || (unsigned char)rawData[0] == 0xE5) { byteIndexOffset += 32; continue; } else { // long name do nothing if (rawData[11] & 0x0F) { } else { int i; //printf("DIR_Name: "); // assign DIR_Name for (i = 0; i < 11; i++) { returnArray[index].DIR_Name[i] = rawData[i]; //printf("%c", returnArray[index].DIR_Name[i]); } // null terminate DIR_Name returnArray[index].DIR_Name[11] = '\0'; // assign DIR_Attr returnArray[index].DIR_Attr = rawData[11]; // assign DIR_FstClus unsigned char tempArray[4]; tempArray[0] = rawData[26]; tempArray[1] = rawData[27]; tempArray[2] = rawData[20]; tempArray[3] = rawData[21]; returnArray[index].DIR_FstClus = little_to_big(tempArray, 4); // assign DIR_FileSize returnArray[index].DIR_FileSize = little_to_big(rawData+28, 4); /*printf("\nDIR_Attr: %x\n", returnArray[index].DIR_Attr); printf("DIR_FstClus: %x\n", returnArray[index].DIR_FstClus); printf("DIR_ByteOffset: %x\n", FindFirstSectorOfCluster(returnArray[index].DIR_FstClus)); printf("DIR_FileSize: %x\n", returnArray[index].DIR_FileSize); printf("\n");*/ returnArray[index].DIR_EntryByteAddress = byteIndex+byteIndexOffset; returnArray[index++].END_OF_ARRAY = 0; } } byteIndexOffset += 32; } while (rawData[0] != 0x00 /*&& rawData[0] != 0xE5*/ && byteIndexOffset < GetBytesPerSec()*GetSecPerClus()); nextClusterIndex = next_cluster(nextClusterIndex); } while (nextClusterIndex < 0x0FFFFFF8); returnArray[index].END_OF_ARRAY = 1; return returnArray; }