VideoEncoder.hh
Go to the documentation of this file.
1/*
2 * Copyright 2016 Open Source Robotics Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16*/
17#ifndef GAZEBO_COMMON_VIDEOENCODER_HH_
18#define GAZEBO_COMMON_VIDEOENCODER_HH_
19
20#include <chrono>
21#include <string>
22#include <memory>
23#include <gazebo/util/system.hh>
24
25// Default bitrate (0) indicates that a bitrate should be calculated when
26// Start is called.
27#define VIDEO_ENCODER_BITRATE_DEFAULT 0
28#define VIDEO_ENCODER_WIDTH_DEFAULT 1280
29#define VIDEO_ENCODER_HEIGHT_DEFAULT 720
30#define VIDEO_ENCODER_FPS_DEFAULT 25
31#define VIDEO_ENCODER_FORMAT_DEFAULT "mp4"
32
33namespace gazebo
34{
35 namespace common
36 {
37 // Forward declare private data class
38 class VideoEncoderPrivate;
39
42
46 class GZ_COMMON_VISIBLE VideoEncoder
47 {
49 public: VideoEncoder();
50
52 public: virtual ~VideoEncoder();
53
71 public: bool Start(
72 const std::string &_format = VIDEO_ENCODER_FORMAT_DEFAULT,
73 const std::string &_filename = "",
74 const unsigned int _width = VIDEO_ENCODER_WIDTH_DEFAULT,
75 const unsigned int _height = VIDEO_ENCODER_HEIGHT_DEFAULT,
76 const unsigned int _fps = VIDEO_ENCODER_FPS_DEFAULT,
77 const unsigned int _bitRate = VIDEO_ENCODER_BITRATE_DEFAULT);
78
82 public: bool Stop();
83
86 public: bool IsEncoding() const;
87
93 public: bool AddFrame(const unsigned char *_frame,
94 const unsigned int _width,
95 const unsigned int _height);
96
103 public: bool AddFrame(const unsigned char *_frame,
104 const unsigned int _width,
105 const unsigned int _height,
106 const std::chrono::steady_clock::time_point &_timestamp);
107
111 public: bool SaveToFile(const std::string &_filename);
112
115 public: std::string Format() const;
116
119 public: unsigned int BitRate() const;
120
123 public: void Reset();
124
127 private: std::unique_ptr<VideoEncoderPrivate> dataPtr;
128 };
130 }
131}
132#endif
common
Definition FuelModelDatabase.hh:37
#define VIDEO_ENCODER_FORMAT_DEFAULT
Definition VideoEncoder.hh:31
#define VIDEO_ENCODER_FPS_DEFAULT
Definition VideoEncoder.hh:30
#define VIDEO_ENCODER_WIDTH_DEFAULT
Definition VideoEncoder.hh:28
#define VIDEO_ENCODER_BITRATE_DEFAULT
Definition VideoEncoder.hh:27
#define VIDEO_ENCODER_HEIGHT_DEFAULT
Definition VideoEncoder.hh:29
The VideoEncoder class supports encoding a series of images to a video format, and then writing the v...
Definition VideoEncoder.hh:47
bool IsEncoding() const
True if the enoder has been started, false otherwise.
virtual ~VideoEncoder()
Destructor.
void Reset()
Reset to default video properties and clean up allocated memory.
bool AddFrame(const unsigned char *_frame, const unsigned int _width, const unsigned int _height, const std::chrono::steady_clock::time_point &_timestamp)
Add a single timestamped frame to be encoded.
bool AddFrame(const unsigned char *_frame, const unsigned int _width, const unsigned int _height)
Add a single frame to be encoded.
bool Start(const std::string &_format="mp4", const std::string &_filename="", const unsigned int _width=1280, const unsigned int _height=720, const unsigned int _fps=25, const unsigned int _bitRate=0)
Start the encoder.
bool SaveToFile(const std::string &_filename)
Write the video to disk param[in] _filename File in which to save the encoded data.
bool Stop()
Stop the encoder.
unsigned int BitRate() const
Get the bit rate.
std::string Format() const
Get the encoding format.
Forward declarations for the common classes.
Definition Animation.hh:27