#include <MJPEGVideoSource.hh>
Collaboration diagram for MJPEGVideoSource:
Definition at line 62 of file MJPEGVideoSource.hh.
Public Member Functions | |
virtual | ~MJPEGVideoSource () |
Static Public Member Functions | |
static MJPEGVideoSource * | createNew (UsageEnvironment &env, BaseInputVideo *input_video, int stream_id=0, int frame_rate=25, int encoder_internal_buf_size=1000000) |
Static method. | |
Protected Member Functions | |
MJPEGVideoSource (UsageEnvironment &env, BaseInputVideo *input_video, int stream_id, int frame_rate, int encoder_internal_buf_size) | |
Constructor. | |
Private Member Functions | |
void | doGetNextFrame () |
Inherited function. Used to process next frame to send. | |
void | deliverFrame () |
Provides RTP encapsulation. | |
void | startCapture () |
Captures a IplImage and encode it to a JPEG memory buffer. | |
u_int8_t | type () |
u_int8_t | qFactor () |
Quality factor of JPEG image. | |
u_int8_t | width () |
Width of image. | |
u_int8_t | height () |
Height of image. | |
u_int8_t const * | quantizationTables (u_int8_t &precision, u_int16_t &length) |
If "qFactor()" returns a value >= 128, then this function is called to tell us the quantization tables that are being used. | |
int | setParamsFromHeader (const unsigned char *fJPEGHeader) |
Try to find width and height markers and grab their values. | |
Boolean | isJPEGVideoSource () const |
redefined virtual functions | |
Private Attributes | |
bool | _initialized |
Specify whether the class is initialized or not. | |
unsigned | fTimePerFrame |
unsigned int | fPreferredFrameSize |
Preferred size of current frame to send. | |
const unsigned char * | _encoded_frame |
It will just hold the pointer of the internal_buffer of OStreamVideoEncoder. | |
timeval | fLastCaptureTime |
Contains the last capture time. | |
int | _fps |
Frames per second. | |
int | _frame_rate_millis |
Equals at 1000/frame_rate. | |
u_int8_t | fLastQFactor |
Quality factor, width and height of the jpeg image. | |
u_int8_t | fLastWidth |
u_int8_t | fLastHeight |
u_int8_t * | qTable |
Quantization tables. | |
int | _encoder_internal_buf_size |
Size of the internal buffer used for encoding. | |
int | _stream_id |
Stream id. | |
BaseInputVideo * | _input_video |
BaseInputVideo class instance pointer. | |
OStreamVideoEncoder * | _video_encoder |
OStreamVideoEncoder class instance pointer. | |
int | Idunno |
MJPEGVideoSource::~MJPEGVideoSource | ( | ) | [virtual] |
Definition at line 123 of file MJPEGVideoSource.cpp.
References _encoded_frame, _initialized, _video_encoder, NULL, and qTable.
MJPEGVideoSource::MJPEGVideoSource | ( | UsageEnvironment & | env, | |
BaseInputVideo * | input_video, | |||
int | stream_id, | |||
int | frame_rate, | |||
int | encoder_internal_buf_size | |||
) | [protected] |
Definition at line 36 of file MJPEGVideoSource.cpp.
References _frame_rate_millis, _initialized, _input_video, _video_encoder, BaseInputVideo::init_device(), NULL, OUTPUT_PACKET_BUFFER_MAXSIZE, and qTable.
Referenced by createNew().
Here is the call graph for this function:
Here is the caller graph for this function:
MJPEGVideoSource * MJPEGVideoSource::createNew | ( | UsageEnvironment & | env, | |
BaseInputVideo * | input_video, | |||
int | stream_id = 0 , |
|||
int | frame_rate = 25 , |
|||
int | encoder_internal_buf_size = 1000000 | |||
) | [static] |
env | UsageEnvironment, see LiveMedia doc. here http://www.live555.com/liveMedia/public/doxygen/html | |
input_video | A BaseInputVideo class, can be a MultiVideoSource or a SingleVideoSource kind of class. | |
stream_id | Stream id that will identify this MJPEGVideoSource incapsulator class. It defaults to 0. | |
frame_rate | Frames Per Second value. Number of frames per time unit. | |
encoder_internal_buf_size | Encoder internal buffer size. Memory to alloc for encoding purposes. Defaults to 1000000. |
Definition at line 61 of file MJPEGVideoSource.cpp.
References MJPEGVideoSource().
Referenced by OStreamOnDemandSMS::createNewStreamSource().
Here is the call graph for this function:
Here is the caller graph for this function:
void MJPEGVideoSource::deliverFrame | ( | ) | [private] |
Definition at line 174 of file MJPEGVideoSource.cpp.
References _encoded_frame, DEBUG_PRINT, fLastCaptureTime, fPreferredFrameSize, setParamsFromHeader(), and startCapture().
Referenced by doGetNextFrame().
Here is the call graph for this function:
Here is the caller graph for this function:
void MJPEGVideoSource::doGetNextFrame | ( | ) | [private] |
Definition at line 164 of file MJPEGVideoSource.cpp.
References _frame_rate_millis, CV_WAIT_KEY, and deliverFrame().
Here is the call graph for this function:
u_int8_t MJPEGVideoSource::height | ( | ) | [private] |
Definition at line 248 of file MJPEGVideoSource.cpp.
References fLastHeight.
Boolean MJPEGVideoSource::isJPEGVideoSource | ( | ) | const [private] |
Definition at line 154 of file MJPEGVideoSource.cpp.
u_int8_t MJPEGVideoSource::qFactor | ( | ) | [private] |
u_int8_t const * MJPEGVideoSource::quantizationTables | ( | u_int8_t & | precision, | |
u_int16_t & | length | |||
) | [private] |
(The default implementation of this function just returns NULL.) "precision" and "length" are as defined in RFC 2435, section 3.1.8.
Definition at line 139 of file MJPEGVideoSource.cpp.
int MJPEGVideoSource::setParamsFromHeader | ( | const unsigned char * | fJPEGHeader | ) | [private] |
fJPEGHeader | JPEG memory buffer. Obviously the image header must be inside that buffer. |
Definition at line 265 of file MJPEGVideoSource.cpp.
References DEBUG_PRINT, fLastHeight, fLastWidth, JPEG_HEADER_MAX_SIZE, NULL, and qTable.
Referenced by deliverFrame().
Here is the caller graph for this function:
void MJPEGVideoSource::startCapture | ( | ) | [private] |
Definition at line 70 of file MJPEGVideoSource.cpp.
References _encoded_frame, _encoder_internal_buf_size, _fps, _input_video, _stream_id, _video_encoder, DEBUG_PRINT, OStreamVideoEncoder::encode_video_frame(), fLastCaptureTime, fPreferredFrameSize, BaseInputVideo::get_next_frame(), BaseInputVideo::get_next_frame_by_stream_id(), Idunno, BaseInputVideo::is_multi_stream(), NULL, and OSTREAM_ENCODING_MJPEG.
Referenced by deliverFrame().
Here is the call graph for this function:
Here is the caller graph for this function:
u_int8_t MJPEGVideoSource::type | ( | ) | [private] |
Definition at line 234 of file MJPEGVideoSource.cpp.
u_int8_t MJPEGVideoSource::width | ( | ) | [private] |
const unsigned char* MJPEGVideoSource::_encoded_frame [private] |
In this particular MJPEG case it will contain jpeg header+data before it's sending
Definition at line 164 of file MJPEGVideoSource.hh.
Referenced by deliverFrame(), startCapture(), and ~MJPEGVideoSource().
int MJPEGVideoSource::_encoder_internal_buf_size [private] |
int MJPEGVideoSource::_fps [private] |
int MJPEGVideoSource::_frame_rate_millis [private] |
Definition at line 173 of file MJPEGVideoSource.hh.
Referenced by doGetNextFrame(), and MJPEGVideoSource().
bool MJPEGVideoSource::_initialized [private] |
Definition at line 152 of file MJPEGVideoSource.hh.
Referenced by MJPEGVideoSource(), and ~MJPEGVideoSource().
BaseInputVideo* MJPEGVideoSource::_input_video [private] |
Definition at line 188 of file MJPEGVideoSource.hh.
Referenced by MJPEGVideoSource(), and startCapture().
int MJPEGVideoSource::_stream_id [private] |
Definition at line 191 of file MJPEGVideoSource.hh.
Referenced by MJPEGVideoSource(), startCapture(), and ~MJPEGVideoSource().
struct timeval MJPEGVideoSource::fLastCaptureTime [private] |
Useful for internal packet ordering.
Definition at line 167 of file MJPEGVideoSource.hh.
Referenced by deliverFrame(), and startCapture().
u_int8_t MJPEGVideoSource::fLastHeight [private] |
Definition at line 176 of file MJPEGVideoSource.hh.
Referenced by height(), and setParamsFromHeader().
u_int8_t MJPEGVideoSource::fLastQFactor [private] |
Definition at line 176 of file MJPEGVideoSource.hh.
u_int8_t MJPEGVideoSource::fLastWidth [private] |
Definition at line 176 of file MJPEGVideoSource.hh.
Referenced by setParamsFromHeader(), and width().
unsigned int MJPEGVideoSource::fPreferredFrameSize [private] |
Definition at line 158 of file MJPEGVideoSource.hh.
Referenced by deliverFrame(), and startCapture().
unsigned MJPEGVideoSource::fTimePerFrame [private] |
Definition at line 155 of file MJPEGVideoSource.hh.
int MJPEGVideoSource::Idunno [private] |
u_int8_t* MJPEGVideoSource::qTable [private] |
Definition at line 179 of file MJPEGVideoSource.hh.
Referenced by MJPEGVideoSource(), quantizationTables(), setParamsFromHeader(), and ~MJPEGVideoSource().