Gazebo Common

API Reference

5.7.0
gz/common/ffmpeg_inc.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 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 GZ_COMMON_FFMPEG_INC_HH_
18 #define GZ_COMMON_FFMPEG_INC_HH_
19 
21 // v4.2.7 (Ubuntu Focal)
22 // libavutil 56. 31.100 / 56. 31.100
23 // libavcodec 58. 54.100 / 58. 54.100
24 // libavformat 58. 29.100 / 58. 29.100
25 // libavdevice 58. 8.100 / 58. 8.100
26 // libavfilter 7. 57.100 / 7. 57.100
27 // libavresample 4. 0. 0 / 4. 0. 0
28 // libswscale 5. 5.100 / 5. 5.100
29 // libswresample 3. 5.100 / 3. 5.100
30 // libpostproc 55. 5.100 / 55. 5.100
31 
32 // v4.4.1 (Windows CI vcpkg)
33 // libavutil 56. 70.100 / 56. 70.100
34 // libavcodec 58.134.100 / 58.134.100
35 // libavformat 58. 76.100 / 58. 76.100
36 // libavdevice 58. 13.100 / 58. 13.100
37 // libavfilter 7.110.100 / 7.110.100
38 // libswscale 5. 9.100 / 5. 9.100
39 // libswresample 3. 9.100 / 3. 9.100
40 // libpostproc 55. 9.100 / 55. 9.100
41 
42 // v4.4.2 (Ubuntu Jammy)
43 // libavutil 56. 70.100 / 56. 70.100
44 // libavcodec 58.134.100 / 58.134.100
45 // libavformat 58. 76.100 / 58. 76.100
46 // libavdevice 58. 13.100 / 58. 13.100
47 // libavfilter 7.110.100 / 7.110.100
48 // libswscale 5. 9.100 / 5. 9.100
49 // libswresample 3. 9.100 / 3. 9.100
50 // libpostproc 55. 9.100 / 55. 9.100
51 
52 // v5.1 (homebrew)
53 // libavutil 57. 28.100 / 57. 28.100
54 // libavcodec 59. 37.100 / 59. 37.100
55 // libavformat 59. 27.100 / 59. 27.100
56 // libavdevice 59. 7.100 / 59. 7.100
57 // libavfilter 8. 44.100 / 8. 44.100
58 // libswscale 6. 7.100 / 6. 7.100
59 // libswresample 4. 7.100 / 4. 7.100
60 // libpostproc 56. 6.100 / 56. 6.100
61 
63 // v5.0.1 (conda-forge)
64 // libavutil 57. 17.100 / 57. 17.100
65 // libavcodec 59. 18.100 / 59. 18.100
66 // libavformat 59. 16.100 / 59. 16.100
67 // libavdevice 59. 4.100 / 59. 4.100
68 // libavfilter 8. 24.100 / 8. 24.100
69 // libswscale 6. 4.100 / 6. 4.100
70 // libswresample 4. 3.100 / 4. 3.100
71 // libpostproc 56. 3.100 / 56. 3.100
72 
73 
74 #include <string>
75 
76 #include <gz/common/config.hh>
77 
78 #ifndef _WIN32
79 #pragma GCC system_header
80 #endif
81 
82 #ifndef INT64_C
83 #define INT64_C(c) (c ## LL)
84 #define UINT64_C(c) (c ## ULL)
85 #endif
86 
87 #ifndef AV_ERROR_MAX_STRING_SIZE
88 #define AV_ERROR_MAX_STRING_SIZE 64
89 #endif
90 
91 extern "C" {
92 #include <libavcodec/avcodec.h>
93 #include <libavformat/avformat.h>
94 #include <libswscale/swscale.h>
95 #include <libavutil/mathematics.h>
96 #include <libavutil/opt.h>
97 #include <libavutil/error.h>
98 #include <libavutil/imgutils.h>
99 #include <libavutil/hwcontext.h>
100 
101 #if defined(HAVE_AVDEVICE)
102 #include <libavdevice/avdevice.h>
103 #endif
104 }
105 
106 #include <gz/common/av/Export.hh>
107 
108 namespace gz
109 {
110  namespace common
111  {
113  GZ_COMMON_AV_VISIBLE
114  GZ_DEPRECATED(5)
115  AVFrame *AVFrameAlloc(void);
116 
118  GZ_COMMON_AV_VISIBLE
119  GZ_DEPRECATED(5)
120  void AVFrameUnref(AVFrame *_frame);
121 
124  GZ_COMMON_AV_VISIBLE
125  GZ_DEPRECATED(5)
126  void AVPacketUnref(AVPacket *_packet);
127 
139  GZ_COMMON_AV_VISIBLE
140  GZ_DEPRECATED(5)
141  int AVCodecDecode(AVCodecContext *_codecCtx,
142  AVFrame *_frame, int *_gotFrame, AVPacket *_packet);
143 
144  // av_err2str only works in C99, this is a version that works in C++;
145  // https://github.com/joncampbell123/composite-video-simulator/issues/5#issuecomment-611885908
146  inline std::string av_err2str_cpp(int errnum)
147  {
148  thread_local char buf[AV_ERROR_MAX_STRING_SIZE];
149  memset(buf, 0, sizeof(buf));
150  // lavu 51.58.100
151  return av_make_error_string(buf, AV_ERROR_MAX_STRING_SIZE, errnum);
152  }
153  }
154 }
155 
156 #endif