[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdemultimedia/mpeglib/lib/mpegplay
From: CVS by mvogt <kde-cvs () kde ! org>
Date: 2001-06-26 9:56:39
[Download RAW message or body]
kdemultimedia/mpeglib/lib/mpegplay mpegSystemStream.cpp,1.7,1.8 mpegSystemStream.h,1.2,1.3
Author: mvogt
Tue Jun 26 09:55:05 UTC 2001
Modified Files:
mpegSystemStream.cpp mpegSystemStream.h
Log Message:
- fix demuxer bug. Didn't played mpeg2 grabbed from sat receiver card
PATCH:
diff -u -r1.7 mpegSystemStream.cpp
--- mpegSystemStream.cpp 2001/04/22 17:57:58 1.7
+++ mpegSystemStream.cpp 2001/06/26 09:51:53
@@ -13,12 +13,17 @@
#include "mpegSystemStream.h"
+#define _RESYNC_STATE_INIT 0
+#define _RESYNC_STATE_NEED_PACKET 1
+#define _RESYNC_STATE_NEED_START 2
+
MpegSystemStream::MpegSystemStream(InputStream* input) {
this->input=input;
syncCode=0xff; // invalid
+ lState=_RESYNC_STATE_INIT;
}
+void MpegSystemStream::reset() {
+ lState=_RESYNC_STATE_NEED_PACKET;
+}
int MpegSystemStream::nextPacket(MpegSystemHeader* mpegHeader) {
int layer=mpegHeader->getLayer();
if (layer == _PACKET_NO_SYSLAYER) {
@@ -88,8 +99,15 @@
if (readSyncCode() == false) {
return false;
}
- if (syncCode == _PACK_START_CODE) {
+ if ((syncCode & 0xFFFFFF00) == 0x00000100) {
+ if (lState == _RESYNC_STATE_NEED_PACKET) {
+ if (syncCode != _PACK_START_CODE) {
+ return false;
+ }
+ lState=_RESYNC_STATE_NEED_START;
+ }
if (processStartCode(syncCode,mpegHeader) == false) {
+ reset();
return false;
- if (startCode != _PACK_START_CODE) {
- return false;
- }
- lok=processPackHeader(mpegHeader);
- if (lok == false) {
- printf("Error in reading pack header\n");
- return false;
- }
- if (readHeader(&startCode) == false) {
- printf("readHeader 1: is %8x\n",startCode);
- return false;
- }
- if (startCode == _SYSTEM_HEADER_START_CODE) {
- lok = processSystemHeader(mpegHeader);
- if (lok == false) {
- fprintf(stderr, "Error in reading system header\n");
- return false;
- }
- if (readHeader(&startCode) == false) {
- printf("readHeader 2: is %8x\n",startCode);
- return false;
- }
- }
if (startCode == _PACK_START_CODE) {
lok=processPackHeader(mpegHeader);
if (lok == false) {
printf("Error in reading pack header\n");
return false;
}
- if (readHeader(&startCode) == false) {
- printf("readHeader 3: is %8x\n",startCode);
+ return true;
+ }
+ if (startCode == _SYSTEM_HEADER_START_CODE) {
+ lok = processSystemHeader(mpegHeader);
+ if (lok == false) {
+ fprintf(stderr, "Error in reading system header\n");
return false;
}
+ return true;
+ }
+ // handle default
+ lok=processPacket(startCode,mpegHeader);
+ if (lok == false) {
+ return false;
}
- return processPacket(startCode,mpegHeader);
+ return true;
}
@@ -322,8 +327,10 @@
}
mpegHeader->resetAvailableLayers();
int i = 6;
- while ((inputBuffer[i] & 0x80) && (i<headerSize) ) {
- mpegHeader->addAvailableLayer(inputBuffer[i]);
+ while (i<headerSize) {
+ if (inputBuffer[i] & 0x80) {
+ mpegHeader->addAvailableLayer(inputBuffer[i]);
+ }
i += 3;
}
free(inputBuffer);
Index: mpegSystemStream.h
===================================================================
RCS file: /home/kde/kdemultimedia/mpeglib/lib/mpegplay/mpegSystemStream.h,v
retrieving revision 1.2
diff -u -r1.2 mpegSystemStream.h
--- mpegSystemStream.h 2000/11/23 18:43:20 1.2
+++ mpegSystemStream.h 2001/06/26 09:51:53
@@ -90,6 +90,7 @@
InputStream* input;
int lHasLength;
unsigned int syncCode;
+ int lState;
public:
MpegSystemStream(InputStream* input);
@@ -99,6 +100,7 @@
int firstInitialize(MpegSystemHeader* mpegHeader);
int nextPacket(MpegSystemHeader* mpegHeader);
inline int eof() { return input->eof(); }
+ void reset();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic