コード例 #1
0
bool RTSPServerIFace::_is_valid_stream_id(int stream_id)
{
    bool valid =
    (stream_id >= 0 && stream_id < Stream::COUNT &&
                       cgi_server()->param_state().stream[stream_id].enable);
    if (!valid)
    {
        SBL_INFO("ERROR: Invalid stream_id = %d enable = %d", stream_id,
            (int)cgi_server()->param_state().stream[stream_id].enable);
    }

    return valid;
}
コード例 #2
0
/*
 * Returns the video encoder bit-rate for the given encoder stream ID.
 *
 * Returns '-1' if the given stream ID does not exist
 *
 */
int RTSPServerIFace::get_bitrate(int stream_id)
{
    SBL_INFO("RTSP::get_bitrate() stream_id = %d", stream_id);
    if (!_is_valid_stream_id(stream_id))
        return -1;


    return cgi_server()->param_state().stream[stream_id].bitrate;;
}
コード例 #3
0
int main(int argc, char **argv)
{ const char *tmp = getenv("TMPDIR");
  if (tmp)
    TMPDIR = tmp;
  if (argc < 2)
    return cgi_server();
  if (argc < 3)
    return run_server(atoi(argv[1]));
  return run_client(argc, argv);
}
コード例 #4
0
/* Describe a stream - The method is called by the RTSP server every time
 * a RTSP DESCRIBE request is received. We should validate the stream ID, and
 * return the requested information in the "stream_desc" parameter.
 *
 * Parameters:
 *
 *   stream_id  - stream_id of a valid stream
 *
 *   stream_desc - output stream descriptor
 *
 * Return:
 *
 *   0 for success, -1 for errors (if stream_id is incorrect for example)
 */
int RTSPServerIFace::describe(int stream_id, StreamDesc& stream_desc)
{
    int error = -1; // By default we assume error
    SBL_INFO("RTSP::DESCRIBE request. stream_id = %d", stream_id);
    if (!_is_valid_stream_id(stream_id))
    {
        return error;
    }

    sdvr_venc_e   encoder_type = str_encoder_to_sdk_id(cgi_server()->param_state().stream[stream_id].encoder);

    error = 0; // Success return;
    switch (encoder_type)
    {
        case SDVR_VIDEO_ENC_H264:
            stream_desc.encoder_type = RTSP::H264;
            stream_desc.width   = cgi_server()->param_state().stream[stream_id].width;
            stream_desc.height  = cgi_server()->param_state().stream[stream_id].height;
            stream_desc.bitrate = cgi_server()->param_state().stream[stream_id].bitrate;
            break;
        case SDVR_VIDEO_ENC_JPEG:
            stream_desc.encoder_type = RTSP::MJPEG;
            stream_desc.quality = cgi_server()->param_state().stream[stream_id].quality;
            stream_desc.width   = cgi_server()->param_state().stream[stream_id].width;
            stream_desc.height  = cgi_server()->param_state().stream[stream_id].height;
            stream_desc.bitrate = 4500; // kbps, estimate ??
            break;
        case SDVR_VIDEO_ENC_MPEG4:
            stream_desc.encoder_type = RTSP::MPEG4;
            stream_desc.width   = cgi_server()->param_state().stream[stream_id].width;
            stream_desc.height  = cgi_server()->param_state().stream[stream_id].height;
            stream_desc.bitrate = cgi_server()->param_state().stream[stream_id].bitrate;
            break;
        default:
            error = -1;
            stream_desc.encoder_type = RTSP::UNKNOWN_ENCODER;
            break;
    } // switch (pStreamingChan->streamingChan.video.nVideoCodecType)

    return error;
}