Merge branch 'bug_615_replace_rawfile' into experimental
authorghost <andreas.monzner@multimedia-labs.de>
Fri, 26 Nov 2010 18:12:32 +0000 (19:12 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Fri, 26 Nov 2010 18:12:32 +0000 (19:12 +0100)
1  2 
lib/dvb/tstools.cpp

diff --combined lib/dvb/tstools.cpp
@@@ -40,7 -40,7 +40,7 @@@ int eDVBTSTools::openFile(const char *f
        if (f->open(filename, 1) < 0)
                return -1;
  
-       setSource(src, filename);
+       setSource(src, nostreaminfo ? NULL : filename);
  
        return 0;
  }
@@@ -212,8 -212,6 +212,8 @@@ int eDVBTSTools::getPTS(off_t &offset, 
                                                        break;
                                                case 0x71: // AC3 / DTS
                                                        break;
 +                                              case 0x72: // DTS - HD
 +                                                      break;
                                                default:
                                                        eDebug("skip unknwn stream_id_extension %02x\n", payload[9+offs]);
                                                        continue;
@@@ -702,23 -700,9 +702,23 @@@ int eDVBTSTools::findFrame(off_t &_offs
                else if (direction == +1)
                        direction = 0;
        }
 -                      /* let's find the next frame after the given offset */
        off_t start = offset;
  
 +                      /* backtrack to find the previous sequence start, in case of MPEG2 */
 +      if ((data & 0xFF) == 0x00) {
 +              do {
 +                      --start;
 +                      if (m_streaminfo.getStructureEntry(start, data, 0))
 +                      {
 +                              eDebug("get previous failed");
 +                              return -1;
 +                      }
 +              } while (((data & 0xFF) != 9) && ((data & 0xFF) != 0x00) && ((data & 0xFF) != 0xB3)); /* sequence start or previous frame */
 +              if ((data & 0xFF) != 0xB3)
 +                      start = offset;  /* Failed to find corresponding sequence start, so never mind */
 +      }
 +
 +                      /* let's find the next frame after the given offset */
        do {
                if (m_streaminfo.getStructureEntry(offset, data, 1))
                {
        } while (((data & 0xFF) != 9) && ((data & 0xFF) != 0x00)); /* next frame */
  
                        /* align to TS pkt start */
 -//    start = start - (start % 188);
 -//    offset = offset - (offset % 188);
 +      start = start - (start % 188);
 +      offset = offset - (offset % 188);
  
        len = offset - start;
        _offset = start;