/usr/include/liveMedia/H264VideoStreamFramer.hh is in liblivemedia-dev 2011.12.23-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | /**********
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2.1 of the License, or (at your
option) any later version. (See <http://www.gnu.org/copyleft/lesser.html>.)
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
more details.
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
**********/
// "liveMedia"
// Copyright (c) 1996-2012 Live Networks, Inc. All rights reserved.
// A filter that breaks up a H.264 Video Elementary Stream into NAL units.
// C++ header
#ifndef _H264_VIDEO_STREAM_FRAMER_HH
#define _H264_VIDEO_STREAM_FRAMER_HH
#ifndef _MPEG_VIDEO_STREAM_FRAMER_HH
#include "MPEGVideoStreamFramer.hh"
#endif
class H264VideoStreamFramer: public MPEGVideoStreamFramer {
public:
static H264VideoStreamFramer* createNew(UsageEnvironment& env, FramedSource* inputSource,
Boolean includeStartCodeInOutput = False);
void getSPSandPPS(u_int8_t*& sps, unsigned& spsSize, u_int8_t*& pps, unsigned& ppsSize) const{
// Returns pointers to copies of the most recently seen SPS (sequence parameter set) and PPS (picture parameter set) NAL unit.
// (NULL pointers are returned if the NAL units have not yet been seen.)
sps = fLastSeenSPS; spsSize = fLastSeenSPSSize;
pps = fLastSeenPPS; ppsSize = fLastSeenPPSSize;
}
void setSPSandPPS(u_int8_t* sps, unsigned spsSize, u_int8_t* pps, unsigned ppsSize) {
// Assigns copies of the SPS and PPS NAL units. If this function is not called, then these NAL units are assigned
// only if/when they appear in the input stream.
saveCopyOfSPS(sps, spsSize);
saveCopyOfPPS(pps, ppsSize);
}
protected:
H264VideoStreamFramer(UsageEnvironment& env, FramedSource* inputSource, Boolean createParser, Boolean includeStartCodeInOutput);
virtual ~H264VideoStreamFramer();
void saveCopyOfSPS(u_int8_t* from, unsigned size);
void saveCopyOfPPS(u_int8_t* from, unsigned size);
// redefined virtual functions:
virtual Boolean isH264VideoStreamFramer() const;
private:
void setPresentationTime() { fPresentationTime = fNextPresentationTime; }
private:
Boolean fIncludeStartCodeInOutput;
u_int8_t* fLastSeenSPS;
unsigned fLastSeenSPSSize;
u_int8_t* fLastSeenPPS;
unsigned fLastSeenPPSSize;
struct timeval fNextPresentationTime; // the presentation time to be used for the next NAL unit to be parsed/delivered after this
friend class H264VideoStreamParser; // hack
};
#endif
|