~ubuntu-branches/ubuntu/lucid/mkvtoolnix/lucid

« back to all changes in this revision

Viewing changes to src/common/dts_common.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Clément Stenac
  • Date: 2007-05-17 11:18:27 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20070517111827-asq9dnnx1r9gjym2
Tags: 2.0.2-1
* New upstream bugfix version
* Use liblzo2, thanks to Peter Eisentraut (Closes:#423361)

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
   see the file COPYING for details
7
7
   or visit http://www.gnu.org/copyleft/gpl.html
8
8
 
9
 
   $Id: dts_common.cpp 3064 2005-09-03 12:32:53Z mosu $
 
9
   $Id: dts_common.cpp 3490 2007-02-06 15:52:01Z mosu $
10
10
 
11
11
   helper function for DTS data
12
12
 
423
423
}
424
424
 
425
425
bool
 
426
detect_dts(const void *src_buf,
 
427
           int len,
 
428
           bool &dts14_to_16,
 
429
           bool &swap_bytes) {
 
430
  int dts_swap_bytes, dts_14_16, cur_buf;
 
431
  unsigned short *buf[2];
 
432
  dts_header_t dtsheader;
 
433
  bool is_dts = false;
 
434
 
 
435
  len &= ~0xf;
 
436
 
 
437
  cur_buf = 0;
 
438
 
 
439
  buf[0] = (unsigned short *)safemalloc(len);
 
440
  buf[1] = (unsigned short *)safemalloc(len);
 
441
 
 
442
  for (dts_swap_bytes = 0; dts_swap_bytes < 2; dts_swap_bytes++) {
 
443
    memcpy(buf[cur_buf], src_buf, len);
 
444
 
 
445
    if (dts_swap_bytes) {
 
446
      swab((char *)buf[cur_buf], (char *)buf[cur_buf^1], len);
 
447
      cur_buf ^= 1;
 
448
    }
 
449
 
 
450
    for (dts_14_16 = 0; dts_14_16 < 2; dts_14_16++) {
 
451
      if (dts_14_16) {
 
452
        dts_14_to_dts_16(buf[cur_buf], len / 2, buf[cur_buf^1]);
 
453
        cur_buf ^= 1;
 
454
      }
 
455
 
 
456
      if (find_dts_header((const unsigned char *)buf[cur_buf], len,
 
457
                          &dtsheader) >= 0) {
 
458
        is_dts = true;
 
459
        break;
 
460
      }
 
461
    }
 
462
 
 
463
    if (is_dts)
 
464
      break;
 
465
  }
 
466
 
 
467
  safefree(buf[0]);
 
468
  safefree(buf[1]);
 
469
 
 
470
  dts14_to_16 = dts_14_16 != 0;
 
471
  swap_bytes = dts_swap_bytes != 0;
 
472
 
 
473
  return is_dts;
 
474
}
 
475
 
 
476
bool
426
477
operator!=(const dts_header_t &l,
427
478
           const dts_header_t &r) {
428
479
  //if (l.frametype != r.frametype) return true;