254
255
if (!file->isdir) {
255
256
if (!strncmp (file->name + strlen (file->name) - 6, ".VOB", 4)) {
256
257
BraseroScrambledSectorRange *range;
258
gsize current_extent;
261
BRASERO_JOB_LOG (self, "Retrieving keys for %s", file->name);
259
263
/* take the first address for each extent of the file */
260
if (!file->specific.file.extents)
264
if (!file->specific.file.extents) {
265
BRASERO_JOB_LOG (self, "Problem: file has no extents");
263
269
range = g_new0 (BraseroScrambledSectorRange, 1);
265
270
for (extents = file->specific.file.extents; extents; extents = extents->next) {
266
271
BraseroVolFileExtent *extent;
268
273
extent = extents->data;
269
275
range->start = extent->block;
270
276
range->end = extent->block + BRASERO_BYTES_TO_SECTORS (extent->size, DVDCSS_BLOCK_SIZE);
278
BRASERO_JOB_LOG (self, "From 0x%llx to 0x%llx", range->start, range->end);
272
279
g_queue_push_head (map, range);
274
if (dvdcss_seek (handle, range->start, DVDCSS_SEEK_KEY) != range->start) {
281
if (extent->size == 0) {
282
BRASERO_JOB_LOG (self, "0 size extent");
286
current_extent = dvdcss_seek (handle, range->start, DVDCSS_SEEK_KEY);
287
if (current_extent != range->start) {
288
BRASERO_JOB_LOG (self, "Problem: could not retrieve key");
275
289
g_set_error (error,
276
290
BRASERO_BURN_ERROR,
277
291
BRASERO_BURN_ERROR_GENERAL,
285
else if (!brasero_dvdcss_create_scrambled_sectors_map (map, handle, file, error))
299
else if (!brasero_dvdcss_create_scrambled_sectors_map (self, map, handle, file, error))
362
376
/* look through the files to get the ranges of encrypted sectors
363
377
* and cache the CSS keys while at it. */
364
378
map = g_queue_new ();
365
if (!brasero_dvdcss_create_scrambled_sectors_map (map, handle, files, &priv->error))
379
if (!brasero_dvdcss_create_scrambled_sectors_map (self, map, handle, files, &priv->error))
382
BRASERO_JOB_LOG (self, "DVD map created (keys retrieved)");
368
384
g_queue_sort (map, brasero_dvdcss_sort_ranges, NULL);
370
386
brasero_volume_file_free (files);