mirror of
https://projects.vdr-developer.org/git/vdr-plugin-softhddevice.git
synced 2023-10-10 19:16:51 +02:00
Fix bug: possible endless loop in pes audio parser.
This commit is contained in:
parent
f640ebdeb5
commit
92b4203644
@ -1,6 +1,7 @@
|
||||
User johns
|
||||
Date:
|
||||
|
||||
Fix bug: with some streams endless loop in pes audio parser.
|
||||
Report correct video size in cSoftHdDevice::GetVideoSize.
|
||||
Add picture adjustment support for vdpau.
|
||||
Revert "mpeg_vdpau" back to "mpegvideo_vdpau".
|
||||
|
10
softhddev.c
10
softhddev.c
@ -718,13 +718,16 @@ static void PesParse(PesDemux * pesdx, const uint8_t * data, int size,
|
||||
|
||||
// have header upto size bits
|
||||
if (pesdx->HeaderIndex == PES_HEADER_SIZE) {
|
||||
if ((pesdx->Header[6] & 0xC0) == 0x80) {
|
||||
pesdx->HeaderSize += pesdx->Header[8];
|
||||
} else {
|
||||
if ((pesdx->Header[6] & 0xC0) != 0x80) {
|
||||
Error(_("pesdemux: mpeg1 pes packet unsupported\n"));
|
||||
pesdx->State = PES_SKIP;
|
||||
return;
|
||||
}
|
||||
// have pes extension
|
||||
if (!pesdx->Header[8]) {
|
||||
goto empty_header;
|
||||
}
|
||||
pesdx->HeaderSize += pesdx->Header[8];
|
||||
// have complete header
|
||||
} else if (pesdx->HeaderIndex == pesdx->HeaderSize) {
|
||||
int64_t pts;
|
||||
@ -753,6 +756,7 @@ static void PesParse(PesDemux * pesdx, const uint8_t * data, int size,
|
||||
pts, dts);
|
||||
}
|
||||
|
||||
empty_header:
|
||||
pesdx->State = PES_INIT;
|
||||
if (pesdx->StartCode == PES_PRIVATE_STREAM1) {
|
||||
// only private stream 1, has sub streams
|
||||
|
Loading…
Reference in New Issue
Block a user