avcpp  2.0
Wrapper for the FFmpeg that simplify usage from C++ projects.
stream.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 
5 #include "averror.h"
6 #include "ffmpeg.h"
7 #include "rational.h"
8 #include "timestamp.h"
9 #include "codecparameters.h"
10 
11 namespace av
12 {
13 
14 enum class Direction
15 {
16  Invalid = -1,
17  Encoding,
18  Decoding
19 };
20 
21 
22 class Stream : public FFWrapperPtr<AVStream>
23 {
24 private:
25  friend class FormatContext;
26  Stream(const std::shared_ptr<char> &monitor, AVStream *st = nullptr, Direction direction = Direction::Invalid);
27 
28 public:
29  Stream() = default;
30 
31  bool isValid() const;
32 
33  int index() const;
34  int id() const;
35 
36  Rational frameRate() const;
37  Rational timeBase() const;
39  Rational averageFrameRate() const;
40  Timestamp startTime() const;
41  Timestamp duration() const;
42 
43  [[deprecated("For FFmpeg 5.0+ return NO_PTS")]]
44  Timestamp currentDts() const;
45  AVMediaType mediaType() const;
46 
47  bool isAudio() const;
48  bool isVideo() const;
49  bool isData() const;
50  bool isSubtitle() const;
51  bool isAttachment() const;
52 
53  Direction direction() const { return m_direction; }
54 
55  void setTimeBase(const Rational &timeBase);
56  void setFrameRate(const Rational &frameRate);
57  void setSampleAspectRatio(const Rational &aspectRatio);
59 
61  void setCodecParameters(CodecParametersView codecpar, OptionalErrorCode ec = throws());
62 
69  int eventFlags() const noexcept;
70  bool eventFlags(int flags) const noexcept;
71  void eventFlagsClear(int flags) noexcept;
72 
74 
75 private:
76  std::weak_ptr<char> m_parentMonitor;
77  Direction m_direction = Direction::Invalid;
78 };
79 
80 } // ::av
81 
The CodecParametersView class.
Definition: codecparameters.h:21
Definition: formatcontext.h:54
Definition: averror.h:64
Definition: rational.h:26
Definition: stream.h:23
int id() const
Definition: stream.cpp:25
CodecParametersView codecParameters() const
Definition: stream.cpp:125
Timestamp duration() const
Definition: stream.cpp:55
Rational timeBase() const
Definition: stream.cpp:35
bool isData() const
Definition: stream.cpp:90
Timestamp currentDts() const
Definition: stream.cpp:60
bool isSubtitle() const
Definition: stream.cpp:95
void setCodecParameters(CodecParametersView codecpar, OptionalErrorCode ec=throws())
Definition: stream.cpp:130
void setFrameRate(const Rational &frameRate)
Definition: stream.cpp:110
void setSampleAspectRatio(const Rational &aspectRatio)
Definition: stream.cpp:115
Stream()=default
Rational frameRate() const
Definition: stream.cpp:30
void setupEncodingParameters(const class VideoEncoderContext &ctx, OptionalErrorCode ec=throws())
Definition: stream.cpp:158
bool isAttachment() const
Definition: stream.cpp:100
int index() const
Definition: stream.cpp:20
Rational averageFrameRate() const
Definition: stream.cpp:45
Direction direction() const
Definition: stream.h:53
bool isValid() const
Definition: stream.cpp:15
Rational sampleAspectRatio() const
Definition: stream.cpp:40
void eventFlagsClear(int flags) noexcept
Definition: stream.cpp:151
int eventFlags() const noexcept
Flags to the user to detect events happening on the stream.
Definition: stream.cpp:137
bool isVideo() const
Definition: stream.cpp:85
void setTimeBase(const Rational &timeBase)
Definition: stream.cpp:105
Timestamp startTime() const
Definition: stream.cpp:50
void setAverageFrameRate(const Rational &frameRate)
Definition: stream.cpp:120
AVMediaType mediaType() const
Definition: stream.cpp:69
bool isAudio() const
Definition: stream.cpp:80
The Timestamp class represents timestamp value and it timebase.
Definition: timestamp.h:14
Definition: codeccontext.h:447
Definition: audioresampler.cpp:8
OptionalErrorCode throws()
Helper to construct null OptionalErrorCode object.
Definition: averror.h:179
Direction
Definition: stream.h:15
Definition: averror.h:228
Definition: ffmpeg.h:67