FFmpeg
ffmpeg_utils.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #ifndef FFTOOLS_FFMPEG_UTILS_H
20 #define FFTOOLS_FFMPEG_UTILS_H
21 
22 #include <stdint.h>
23 
24 #include "libavutil/common.h"
25 #include "libavutil/frame.h"
26 #include "libavutil/rational.h"
27 
28 #include "libavcodec/packet.h"
29 
30 typedef struct Timestamp {
31  int64_t ts;
33 } Timestamp;
34 
35 /**
36  * Merge two return codes - return one of the error codes if at least one of
37  * them was negative, 0 otherwise.
38  * Currently just picks the first one, eventually we might want to do something
39  * more sophisticated, like sorting them by priority.
40  */
41 static inline int err_merge(int err0, int err1)
42 {
43  return (err0 < 0) ? err0 : FFMIN(err1, 0);
44 }
45 
46 static inline void pkt_move(void *dst, void *src)
47 {
48  av_packet_move_ref(dst, src);
49 }
50 
51 static inline void frame_move(void *dst, void *src)
52 {
53  av_frame_move_ref(dst, src);
54 }
55 
56 #endif // FFTOOLS_FFMPEG_UTILS_H
err_merge
static int err_merge(int err0, int err1)
Merge two return codes - return one of the error codes if at least one of them was negative,...
Definition: ffmpeg_utils.h:41
rational.h
frame_move
static void frame_move(void *dst, void *src)
Definition: ffmpeg_utils.h:51
Timestamp::ts
int64_t ts
Definition: ffmpeg_utils.h:31
pkt_move
static void pkt_move(void *dst, void *src)
Definition: ffmpeg_utils.h:46
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
av_packet_move_ref
void av_packet_move_ref(AVPacket *dst, AVPacket *src)
Move every field in src to dst and reset src.
Definition: packet.c:484
frame.h
packet.h
common.h
FFMIN
#define FFMIN(a, b)
Definition: macros.h:49
av_frame_move_ref
void av_frame_move_ref(AVFrame *dst, AVFrame *src)
Move everything contained in src to dst and reset src.
Definition: frame.c:633
Timestamp::tb
AVRational tb
Definition: ffmpeg_utils.h:32
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418
Timestamp
Definition: ffmpeg_utils.h:30