Skip to content

Commit

Permalink
Reformat headers
Browse files Browse the repository at this point in the history
  • Loading branch information
bjsowa committed Sep 19, 2024
1 parent f2e4b15 commit 515b2c9
Show file tree
Hide file tree
Showing 11 changed files with 333 additions and 303 deletions.
39 changes: 21 additions & 18 deletions include/web_video_server/h264_streamer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,31 @@
namespace web_video_server
{

class H264Streamer: public LibavStreamer
{
class H264Streamer : public LibavStreamer
{
public:
H264Streamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
~H264Streamer();
H264Streamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
~H264Streamer();

protected:
virtual void initializeEncoder();
std::string preset_;
};
virtual void initializeEncoder();
std::string preset_;
};

class H264StreamerType: public LibavStreamerType
{
class H264StreamerType : public LibavStreamerType
{
public:
H264StreamerType();
virtual boost::shared_ptr < ImageStreamer >
create_streamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr
connection,
rclcpp::Node::SharedPtr nh);
};
H264StreamerType();
virtual boost::shared_ptr<ImageStreamer>
create_streamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr
connection,
rclcpp::Node::SharedPtr nh);
};

}

Expand Down
116 changes: 60 additions & 56 deletions include/web_video_server/image_streamer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,84 +12,88 @@
namespace web_video_server
{

class ImageStreamer
{
class ImageStreamer
{
public:
ImageStreamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
ImageStreamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);

virtual void start() = 0;
virtual ~ImageStreamer();
virtual void start() = 0;
virtual ~ImageStreamer();

bool isInactive()
{
return inactive_;
}
bool isInactive()
{
return inactive_;
}

/**
* Restreams the last received image frame if older than max_age.
*/
virtual void restreamFrame(double max_age) = 0;
virtual void restreamFrame(double max_age) = 0;

std::string getTopic()
{
return topic_;
}

std::string getTopic()
{
return topic_;
}
protected:
async_web_server_cpp::HttpConnectionPtr connection_;
async_web_server_cpp::HttpRequest request_;
rclcpp::Node::SharedPtr nh_;
bool inactive_;
image_transport::Subscriber image_sub_;
std::string topic_;
};
async_web_server_cpp::HttpConnectionPtr connection_;
async_web_server_cpp::HttpRequest request_;
rclcpp::Node::SharedPtr nh_;
bool inactive_;
image_transport::Subscriber image_sub_;
std::string topic_;
};


class ImageTransportImageStreamer: public ImageStreamer
{
class ImageTransportImageStreamer : public ImageStreamer
{
public:
ImageTransportImageStreamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
virtual ~ImageTransportImageStreamer();
ImageTransportImageStreamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
virtual ~ImageTransportImageStreamer();

virtual void start();
virtual void start();

protected:
virtual void sendImage(const cv::Mat &, const rclcpp::Time & time) = 0;
virtual void restreamFrame(double max_age);
virtual void initialize(const cv::Mat &);
virtual void sendImage(const cv::Mat &, const rclcpp::Time & time) = 0;
virtual void restreamFrame(double max_age);
virtual void initialize(const cv::Mat &);

image_transport::Subscriber image_sub_;
int output_width_;
int output_height_;
bool invert_;
std::string default_transport_;
std::string qos_profile_name_;
image_transport::Subscriber image_sub_;
int output_width_;
int output_height_;
bool invert_;
std::string default_transport_;
std::string qos_profile_name_;

rclcpp::Time last_frame;
cv::Mat output_size_image;
boost::mutex send_mutex_;
rclcpp::Time last_frame;
cv::Mat output_size_image;
boost::mutex send_mutex_;

private:
image_transport::ImageTransport it_;
bool initialized_;
image_transport::ImageTransport it_;
bool initialized_;

void imageCallback(const sensor_msgs::msg::Image::ConstSharedPtr & msg);
};
void imageCallback(const sensor_msgs::msg::Image::ConstSharedPtr & msg);
};

class ImageStreamerType
{
class ImageStreamerType
{
public:
virtual boost::shared_ptr < ImageStreamer >
create_streamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr
connection,
rclcpp::Node::SharedPtr nh) = 0;

virtual std::string create_viewer(const async_web_server_cpp::HttpRequest & request) = 0;
};
virtual boost::shared_ptr<ImageStreamer>
create_streamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr
connection,
rclcpp::Node::SharedPtr nh) = 0;

virtual std::string create_viewer(const async_web_server_cpp::HttpRequest & request) = 0;
};

}

Expand Down
63 changes: 34 additions & 29 deletions include/web_video_server/jpeg_streamers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,45 +11,50 @@
namespace web_video_server
{

class MjpegStreamer: public ImageTransportImageStreamer
{
class MjpegStreamer : public ImageTransportImageStreamer
{
public:
MjpegStreamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
~MjpegStreamer();
MjpegStreamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
~MjpegStreamer();

protected:
virtual void sendImage(const cv::Mat &, const rclcpp::Time & time);
virtual void sendImage(const cv::Mat &, const rclcpp::Time & time);

private:
MultipartStream stream_;
int quality_;
};
MultipartStream stream_;
int quality_;
};

class MjpegStreamerType: public ImageStreamerType
{
class MjpegStreamerType : public ImageStreamerType
{
public:
boost::shared_ptr < ImageStreamer >
create_streamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr
connection,
rclcpp::Node::SharedPtr nh);
std::string create_viewer(const async_web_server_cpp::HttpRequest & request);
};

class JpegSnapshotStreamer: public ImageTransportImageStreamer
{
boost::shared_ptr<ImageStreamer>
create_streamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr
connection,
rclcpp::Node::SharedPtr nh);
std::string create_viewer(const async_web_server_cpp::HttpRequest & request);
};

class JpegSnapshotStreamer : public ImageTransportImageStreamer
{
public:
JpegSnapshotStreamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
~JpegSnapshotStreamer();
JpegSnapshotStreamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh);
~JpegSnapshotStreamer();

protected:
virtual void sendImage(const cv::Mat &, const rclcpp::Time & time);
virtual void sendImage(const cv::Mat &, const rclcpp::Time & time);

private:
int quality_;
};
int quality_;
};

}

Expand Down
97 changes: 50 additions & 47 deletions include/web_video_server/libav_streamer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,65 +21,68 @@ extern "C"
namespace web_video_server
{

class LibavStreamer: public ImageTransportImageStreamer
{
class LibavStreamer : public ImageTransportImageStreamer
{
public:
LibavStreamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh, const std::string & format_name,
const std::string & codec_name,
const std::string & content_type);
LibavStreamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr connection,
rclcpp::Node::SharedPtr nh, const std::string & format_name,
const std::string & codec_name,
const std::string & content_type);

~LibavStreamer();
~LibavStreamer();

protected:
virtual void initializeEncoder();
virtual void sendImage(const cv::Mat &, const rclcpp::Time & time);
virtual void initialize(const cv::Mat &);
AVOutputFormat output_format_;
AVFormatContext * format_context_;
const AVCodec * codec_;
AVCodecContext * codec_context_;
AVStream * video_stream_;
virtual void initializeEncoder();
virtual void sendImage(const cv::Mat &, const rclcpp::Time & time);
virtual void initialize(const cv::Mat &);
AVOutputFormat output_format_;
AVFormatContext * format_context_;
const AVCodec * codec_;
AVCodecContext * codec_context_;
AVStream * video_stream_;

AVDictionary * opt_; // container format options
AVDictionary * opt_; // container format options

private:
AVFrame * frame_;
struct SwsContext * sws_context_;
rclcpp::Time first_image_timestamp_;
boost::mutex encode_mutex_;

std::string format_name_;
std::string codec_name_;
std::string content_type_;
int bitrate_;
int qmin_;
int qmax_;
int gop_;

uint8_t * io_buffer_; // custom IO buffer
};

class LibavStreamerType: public ImageStreamerType
{
AVFrame * frame_;
struct SwsContext * sws_context_;
rclcpp::Time first_image_timestamp_;
boost::mutex encode_mutex_;

std::string format_name_;
std::string codec_name_;
std::string content_type_;
int bitrate_;
int qmin_;
int qmax_;
int gop_;

uint8_t * io_buffer_; // custom IO buffer
};

class LibavStreamerType : public ImageStreamerType
{
public:
LibavStreamerType(const std::string & format_name, const std::string & codec_name,
const std::string & content_type);
LibavStreamerType(
const std::string & format_name, const std::string & codec_name,
const std::string & content_type);

boost::shared_ptr < ImageStreamer >
create_streamer(const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr
connection,
rclcpp::Node::SharedPtr nh);
boost::shared_ptr<ImageStreamer>
create_streamer(
const async_web_server_cpp::HttpRequest & request,
async_web_server_cpp::HttpConnectionPtr
connection,
rclcpp::Node::SharedPtr nh);

std::string create_viewer(const async_web_server_cpp::HttpRequest & request);
std::string create_viewer(const async_web_server_cpp::HttpRequest & request);

private:
const std::string format_name_;
const std::string codec_name_;
const std::string content_type_;
};
const std::string format_name_;
const std::string codec_name_;
const std::string content_type_;
};

}

Expand Down
Loading

0 comments on commit 515b2c9

Please sign in to comment.