AvTranscoder  0.9.4
C++APIforLibav/FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IOutputFile.hpp
Go to the documentation of this file.
1 #ifndef _AV_TRANSCODER_FILE_IOUTPUT_FILE_HPP_
2 #define _AV_TRANSCODER_FILE_IOUTPUT_FILE_HPP_
3 
5 
9 
11 
12 #include <string>
13 #include <stdexcept>
14 
15 namespace avtranscoder
16 {
17 
18 /**
19  * @brief IOutputfile is the interface to wrap and write medias.
20  * It can be overloaded to integrate custom wrapper.
21  **/
22 class AvExport IOutputFile
23 {
24 public:
25  virtual ~IOutputFile(){};
26 
27  /**
28  * @brief Add a video output stream
29  * @param videoCodec description of output stream
30  **/
31  virtual IOutputStream& addVideoStream(const VideoCodec& videoCodec)
32  {
33  throw std::logic_error("function is not implemented");
34  }
35 
36  /**
37  * @brief Add an audio output stream
38  * @param audioCodec description of output stream
39  **/
40  virtual IOutputStream& addAudioStream(const AudioCodec& audioCodec)
41  {
42  throw std::logic_error("function is not implemented");
43  }
44 
45  /**
46  * @brief Add a data output stream
47  * @param dataCodec description of output stream
48  **/
49  virtual IOutputStream& addDataStream(const DataCodec& dataCodec)
50  {
51  throw std::logic_error("function is not implemented");
52  }
53 
54  /**
55  * @brief Write the header of file (if necessary)
56  **/
57  virtual bool beginWrap() = 0;
58 
59  /**
60  * @brief Wrap a packet of data in the output ressource
61  * @param data coded packet information for the current stream
62  * @param streamIndex refers to the stream in output ressource
63  * @return the wrapping status after wrapping
64  * @see EWrappingStatus
65  **/
66  virtual IOutputStream::EWrappingStatus wrap(const CodedData& data, const size_t streamIndex) = 0;
67 
68  /**
69  * @brief Write the footer of file (if necessary)
70  **/
71  virtual bool endWrap() = 0;
72 
73  /**
74  * @brief Get the output stream
75  * @param streamIndex select the output stream
76  * @return the output stream reference
77  **/
78  virtual IOutputStream& getStream(const size_t streamIndex) = 0;
79 };
80 }
81 
82 #endif
IOutputfile is the interface to wrap and write medias. It can be overloaded to integrate custom wrapp...
Definition: IOutputFile.hpp:22
EWrappingStatus
define wrapping result status
virtual IOutputStream & addVideoStream(const VideoCodec &videoCodec)
Add a video output stream.
Definition: IOutputFile.hpp:31
virtual IOutputStream & addDataStream(const DataCodec &dataCodec)
Add a data output stream.
Definition: IOutputFile.hpp:49
virtual IOutputStream & addAudioStream(const AudioCodec &audioCodec)
Add an audio output stream.
Definition: IOutputFile.hpp:40
This class describes coded data.
Definition: CodedData.hpp:18