mirror of
https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git
synced 2023-10-10 17:16:51 +00:00
now there's a common baseclass for all remuxers, make use of it
Modified Files: HISTORY remux/ts2pes.c remux/ts2pes.h remux/tsremux.h server/livestreamer.c server/livestreamer.h
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
* The cRepacker family's code was originally written by Reinhard Nissl <rnissl@gmx.de>,
|
||||
* and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de.
|
||||
*
|
||||
* $Id: ts2pes.c,v 1.1 2009/06/19 06:32:40 schmirl Exp $
|
||||
* $Id: ts2pes.c,v 1.2 2009/06/30 06:04:33 schmirl Exp $
|
||||
*/
|
||||
|
||||
#include "remux/ts2pes.h"
|
||||
@@ -1931,7 +1931,7 @@ int cTS2PESRemux::Put(const uchar *Data, int Count)
|
||||
return used;
|
||||
}
|
||||
|
||||
uchar *cTS2PESRemux::Get(int &Count, uchar *PictureType)
|
||||
uchar *cTS2PESRemux::Get(int &Count)
|
||||
{
|
||||
// Remove any previously skipped data from the result buffer:
|
||||
|
||||
@@ -1940,18 +1940,8 @@ uchar *cTS2PESRemux::Get(int &Count, uchar *PictureType)
|
||||
resultSkipped = 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
// Test recording without determining the real frame borders:
|
||||
if (PictureType)
|
||||
*PictureType = I_FRAME;
|
||||
return resultBuffer->Get(Count);
|
||||
#endif
|
||||
|
||||
// Check for frame borders:
|
||||
|
||||
if (PictureType)
|
||||
*PictureType = NO_PICTURE;
|
||||
|
||||
Count = 0;
|
||||
uchar *resultData = NULL;
|
||||
int resultCount = 0;
|
||||
@@ -1972,8 +1962,6 @@ uchar *cTS2PESRemux::Get(int &Count, uchar *PictureType)
|
||||
}
|
||||
else if (!synced) {
|
||||
if (pt == I_FRAME) {
|
||||
if (PictureType)
|
||||
*PictureType = pt;
|
||||
resultSkipped = i; // will drop everything before this position
|
||||
cTSRemux::SetBrokenLink(data + i, l);
|
||||
synced = true;
|
||||
@@ -1981,8 +1969,6 @@ uchar *cTS2PESRemux::Get(int &Count, uchar *PictureType)
|
||||
}
|
||||
else if (Count)
|
||||
return resultData;
|
||||
else if (PictureType)
|
||||
*PictureType = pt;
|
||||
}
|
||||
}
|
||||
else { //if (AUDIO_STREAM_S <= StreamType && StreamType <= AUDIO_STREAM_E || StreamType == PRIVATE_STREAM1) {
|
||||
@@ -1991,15 +1977,11 @@ uchar *cTS2PESRemux::Get(int &Count, uchar *PictureType)
|
||||
return resultData;
|
||||
if (noVideo) {
|
||||
if (!synced) {
|
||||
if (PictureType)
|
||||
*PictureType = I_FRAME;
|
||||
resultSkipped = i; // will drop everything before this position
|
||||
synced = true;
|
||||
}
|
||||
else if (Count)
|
||||
return resultData;
|
||||
else if (PictureType)
|
||||
*PictureType = I_FRAME;
|
||||
}
|
||||
}
|
||||
if (synced) {
|
||||
|
@@ -4,7 +4,7 @@
|
||||
* This file is based on a copy of remux.h from Klaus Schmidinger's
|
||||
* VDR, version 1.6.0.
|
||||
*
|
||||
* $Id: ts2pes.h,v 1.2 2009/06/29 06:23:33 schmirl Exp $
|
||||
* $Id: ts2pes.h,v 1.3 2009/06/30 06:04:33 schmirl Exp $
|
||||
*/
|
||||
|
||||
#ifndef VDR_STREAMDEV_TS2PES_H
|
||||
@@ -38,11 +38,9 @@ public:
|
||||
int Put(const uchar *Data, int Count);
|
||||
///< Puts at most Count bytes of Data into the remuxer.
|
||||
///< \return Returns the number of bytes actually consumed from Data.
|
||||
uchar *Get(int &Count, uchar *PictureType = NULL);
|
||||
uchar *Get(int &Count);
|
||||
///< Gets all currently available data from the remuxer.
|
||||
///< \return Count contains the number of bytes the result points to, and
|
||||
///< PictureType (if not NULL) will contain one of NO_PICTURE, I_FRAME, P_FRAME
|
||||
///< or B_FRAME.
|
||||
void Del(int Count);
|
||||
///< Deletes Count bytes from the remuxer. Count must be the number returned
|
||||
///< from a previous call to Get(). Several calls to Del() with fractions of
|
||||
|
@@ -14,6 +14,10 @@ namespace Streamdev {
|
||||
|
||||
class cTSRemux {
|
||||
public:
|
||||
virtual int Put(const uchar *Data, int Count) = 0;
|
||||
virtual uchar *Get(int &Count) = 0;
|
||||
virtual void Del(int Count) = 0;
|
||||
|
||||
static void SetBrokenLink(uchar *Data, int Length);
|
||||
static int GetPid(const uchar *Data);
|
||||
static int GetPacketLength(const uchar *Data, int Count, int Offset);
|
||||
|
Reference in New Issue
Block a user