Ticket #3355: restore_dvd_speed_seeking.diff
| File restore_dvd_speed_seeking.diff, 3.3 KB (added by , 19 years ago) |
|---|
-
DVDRingBuffer.h
100 100 uint8_t GetNumAudioChannels(int id); 101 101 void JumpToTitle(bool change) { jumptotitle = change; } 102 102 void SeekCellStart(void); 103 void SetDVDSpeed(const char *device, int speed); 103 void SetDVDSpeed(void); 104 void SetDVDSpeed(int speed); 104 105 105 106 void SetParent(NuppelVideoPlayer *p) { parent = p; } 106 107 -
DVDRingBuffer.cpp
72 72 { 73 73 if (dvdnav) 74 74 { 75 SetDVDSpeed( dvdFilename,-1);75 SetDVDSpeed(-1); 76 76 dvdnav_close(dvdnav); 77 77 dvdnav = NULL; 78 78 } … … 135 135 bool DVDRingBufferPriv::OpenFile(const QString &filename) 136 136 { 137 137 dvdFilename = filename.ascii(); 138 int dvdDriveSpeed = gContext->GetNumSetting("DVDDriveSpeed", 2);139 138 dvdnav_status_t dvdRet = dvdnav_open(&dvdnav, filename.local8Bit()); 140 139 if (dvdRet == DVDNAV_STATUS_ERR) 141 140 { … … 189 188 dvdnav_get_serial_number(dvdnav, &serialnum); 190 189 dvdname = QString(name); 191 190 serialnumber = QString(serialnum); 192 193 SetDVDSpeed(dvdFilename, dvdDriveSpeed); 194 191 SetDVDSpeed(); 195 192 return true; 196 193 } 197 194 } 198 195 199 /** \fn DVDRingBufferPriv::GetReadPosition() 200 * \brief returns current position in the PGC. 196 /** \brief returns current position in the PGC. 201 197 */ 202 198 long long DVDRingBufferPriv::GetReadPosition(void) 203 199 { … … 1150 1191 Seek(cellStart); 1151 1192 } 1152 1193 1153 /* 1154 * \brief obtained from the mplayer project1194 /** \brief set dvd speed. uses the DVDDriveSpeed Setting from the settings 1195 * table 1155 1196 */ 1156 void DVDRingBufferPriv::SetDVDSpeed( const char *device, int speed)1197 void DVDRingBufferPriv::SetDVDSpeed(void) 1157 1198 { 1199 int dvdDriveSpeed = gContext->GetNumSetting("DVDDriveSpeed", 12); 1200 SetDVDSpeed(dvdDriveSpeed); 1201 } 1202 1203 /** \brief set dvd speed. 1204 * \param dvd drive speed. example if speed is 1, then function sets dvd speed to 2048kb/s 1205 */ 1206 void DVDRingBufferPriv::SetDVDSpeed(int speed) 1207 { 1158 1208 #if defined(__linux__) && defined(SG_IO) && defined(GPCMD_SET_STREAMING) 1159 1209 int fd; 1160 1210 unsigned char buffer[28]; … … 1163 1213 struct sg_io_hdr sghdr; 1164 1214 struct stat st; 1165 1215 1216 const char *device = dvdFilename; 1166 1217 memset(&sghdr, 0, sizeof(sghdr)); 1167 1218 memset(buffer, 0, sizeof(buffer)); 1168 1219 memset(sense, 0, sizeof(sense)); 1169 1220 memset(cmd, 0, sizeof(cmd)); 1170 1221 memset(&st, 0, sizeof(st)); 1171 1222 1223 QMutexLocker lock(&seekLock); 1224 1172 1225 if (stat(device, &st) == -1 ) 1173 1226 { 1174 1227 VERBOSE(VB_PLAYBACK, LOC_ERR + -
NuppelVideoPlayer.cpp
3794 3794 { 3795 3795 bool skip_changed; 3796 3796 3797 if (ringBuffer->isDVD()) 3798 { 3799 if (GetDecoder()) 3800 GetDecoder()->UpdateDVDFramesPlayed(); 3801 if (play_speed != normal_speed) 3802 ringBuffer->DVD()->SetDVDSpeed(-1); 3803 else 3804 ringBuffer->DVD()->SetDVDSpeed(); 3805 } 3806 3797 3807 if (play_speed > 0.0f && play_speed <= 3.0f) 3798 3808 { 3799 3809 skip_changed = (ffrew_skip != 1);
